1. 程式人生 > >linux下部署php應用

linux下部署php應用

安裝配置apache

一般linux伺服器上都已經有apache環境了,如果有可以跳過這一步。如果要檢視linux 是否已經安裝apache,可以用下面的命令:

[root@localhost htdocs]# httpd -v
Server version: Apache/2.2.15 (Unix)
Server built:   Aug 13 2013 17:29:28

[root@localhost htdocs]# apachectl -v
Server version: Apache/2.2.15 (Unix)
Server built:   Aug 13 2013 17:29:28

兩個命令都行。幾乎所有的linux版本都自帶apache, 名字一般是httpd,不叫apache。

/etc/init.d/httpd是它的啟動指令碼。

有時候我們不想用自帶的apache,這樣可能需要先刪除自帶的,再安裝自己的。

刪除的步驟如下:


1 檢視與httpd相關軟體包。 
# rpm -qa|grep httpd,
httpd-2.2.3-11.el5_2.centos.4

2 然後刪除httpd:
# rpm -e httpd

可能出現問題:
error: Failed dependencies:
httpd >= 2.2.0 is needed by (installed) gnome-user-share-0.10
-6.el5.i386 3 還有一個依賴的軟體包沒有刪除 # rpm -e gnome-user-share 4 再刪除httpd # rpm -e httpd

下載地址

我下載的是

httpd-2.2.31.tar.gz

切換到root使用者,後面的所有操作都用root進行。

新建目錄

mkdir /usr/local/apache2

安裝的apache2要安裝到這個資料夾裡面。這個目錄其實不新建也可以,後面編譯安裝時沒有的話也會動態建立

另外,也可以把目錄指定在/home/目錄下的某個使用者下。

解壓,配置,編譯安裝

[root@localhost
/]# tar -zxvf httpd-2.2.31.tar.gz [root@localhost httpd-2.2.31]# ./configure --prefix=/usr/local/apache2 --enable-module=shared [root@localhost httpd-2.2.31]# make [root@localhost httpd-2.2.31]# make install

完成後如下

[[email protected] apache2]# pwd
/usr/local/apache2
[[email protected] apache2]# ll
總用量 60
drwxr-xr-x.  2 root root  4096 920 15:00 bin
drwxr-xr-x.  2 root root  4096 920 15:00 build
drwxr-xr-x.  2 root root  4096 920 15:00 cgi-bin
drwxr-xr-x.  4 root root  4096 920 15:00 conf
drwxr-xr-x.  3 root root  4096 920 15:00 error
drwxr-xr-x.  2 root root  4096 716 2015 htdocs
drwxr-xr-x.  3 root root  4096 920 15:00 icons
drwxr-xr-x.  2 root root  4096 920 15:00 include
drwxr-xr-x.  4 root root  4096 920 15:00 lib
drwxr-xr-x.  2 root root  4096 920 15:00 logs
drwxr-xr-x.  4 root root  4096 920 15:00 man
drwxr-xr-x. 14 root root 12288 716 2015 manual
drwxr-xr-x.  2 root root  4096 920 15:00 modules

啟動遇到錯誤:

[[email protected] bin]# ./apachectl start
httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName

解決這個問題需要編輯httpd.conf檔案(/apache2/conf/目錄下),找到:

#ServerName www.example.com:80
修改為:
ServerName 127.0.0.1:80或者ServerName localhost:80

然後重新啟動:

[[email protected] bin]# ./apachectl start

開啟瀏覽器,地址輸入localhost,可以看到啟動成功了。

這裡寫圖片描述

如果啟動時報如下的錯誤:

[[email protected] bin]# ./apachectl start
(98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs

這個錯誤的原因是因為有其他服務正在使用80埠。先用
[[email protected] bin]# netstat -lnp|grep 80
檢視那個程序使用了80埠。或者:
ps -ef|grep httpd
檢視有沒有httpd程序正在執行。

然後對應殺掉(比如:sudo killall httpd),再重啟。

新增php支援

編輯httpd.conf檔案,找到

LoadModule php5_module        modules/libphp5.so

這個預設應該就是開啟的,主要是找到確認下。

新增下面一行(注意.號前面有空格):

AddType application/x-httpd-php .php

安裝php

下載地址:

我下載的是

php-5.6.26.tar.gz

新建目錄

mkdir /usr/local/php

解壓,編譯,安裝

[root@localhost /]# tar -zxvf php-5.6.26.tar.gz 

[root@localhost php-5.6.26]#  ./configure --prefix=/usr/local/php  --with-apxs2=/usr/local/apache2/bin/apxs --with-config-file-path=/usr/local/php/etc


[root@localhost php-5.6.26]# make clean
[root@localhost php-5.6.26]# make
[root@localhost php-5.6.26]# make test
[root@localhost php-5.6.26]# make install

–with-config-file-path會指明配置檔案的路徑(php.ini),很重要,不要忘了

摘自其他網站:
注意這裡有一個-with-apxs2=/usr/local/apache2/bin/apxs選項,其中apxs是在安裝Apache時產生的,apxs是一個為Apache HTTP伺服器編譯和安裝擴充套件模組的工具,使之可以用由mod_so提供的LoadModule指令在執行時載入到Apache伺服器中。我的理解是通過這個工具把PHP模組動態載入到Apache中

在configure階段,遇到一個錯誤:

checking for xml2-config path... 
configure: error: xml2-config not found. Please check your libxml2 installation

執行yum install libxml2,然後再執行yum install libxml2-devel安裝完畢後,重新執行上面的./configure命令就可以了。

將原始碼目錄下的
php.ini-development檔案複製到/usr/local/php/etc目錄下(注意要和前面指定的–with-config-file-path的值一致),更名為php.ini

設定當瀏覽器訪問目錄時,預設訪問的頁面

找到httpd.conf檔案,我的在/usr/local/apache2/conf/目錄下,找到IfModule dir_module,新增index.php

<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

重啟apache,然後在/usr/local/apache2/htdocs下新建一個test.php,程式碼如下:

<?php
      phpinfo();
 ?>

開啟瀏覽器,訪問localhost/test.php,成功:

這裡寫圖片描述

注意紅色標記的部分就是php.ini的位置,後面還會用到。

修改預設站點目錄

預設的站點目錄是:

/usr/local/apache2/htdocs

有時候需要改這個目錄,比如我的伺服器將這個地址改為/home/pony/inn_web目錄下。步驟如下:

編輯httpd.conf檔案,
找到 DocumentRoot,目錄改為:
/home/pony/inn_web
找到

訪問oracle資料庫支援

php搭配oracle可能比較少見,但是專案中確實用到了,還是要搞一下。

安裝instant client

instantclient是oracle的連線資料庫的簡單客戶端,只需下載Basic和Devel兩個rpm包。

下載地址:

我下載的是

oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm 
oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm

安裝

[root@localhost /]# rpm -ivh oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm 
Preparing...                ########################################### [100%]
   1:oracle-instantclient11.########################################### [100%]
[root@localhost /]# rpm -ivh oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm 
Preparing...                ########################################### [100%]
   1:oracle-instantclient11.########################################### [100%]
[root@localhost /]# 

建立軟連結

[root@localhost 11.2]# ln -s /usr/lib/oracle/11.2/client64/ /usr/lib/oracle/11.2/client

[root@localhost oracle]# ln -s /usr/include/oracle/11.2/client64/ /usr/include/oracle/11.2/client

安裝oci

Oracle 呼叫介面 (OCI) 是最全面、效能最高、基於原生“C”語言的 Oracle 資料庫介面,它可以提供 Oracle 資料庫的全部功能。OCI 為構建各種語言專用介面(如 Oracle JDBC-OCI、ODP.Net、Oracle 預編譯器、Oracle ODBC 和 Oracle C++ Call Interface (OCCI)驅動程式)提供了基礎。各種領先的開源介面(如 PHP OCI8 擴充套件、ruby-oci8、Perl DBD::oracle 和 Python cx_oracle)也都使用 OCI。作為對 Oracle 資料庫的原生介面,OCI 還對 Oracle 資料庫核心內部發出的查詢、語句和呼叫進行了增強。

找到php原始碼,進入ext/pdo_oci目錄下。

phpize是用來動態增加php擴充套件模組的

[root@localhost pdo_oci]# /usr/local/php/bin/phpize CFLAGS="-I/usr/lib/oracle/11.2/client" CXXFLAGS="-I/usr/lib/oracle/11.2/client"
Configuring for:
PHP Api Version:         20131106
Zend Module Api No:      20131226
Zend Extension Api No:   220131226
[root@localhost pdo_oci]# 

配置,編譯安裝

[root@localhost pdo_oci]# ./configure --with-pdo-oci=instantclient,/usr,11.2 --with-php-config=/usr/local/php/bin/php-config
[root@localhost pdo_oci]# make clean
[root@localhost pdo_oci]# make
[root@localhost pdo_oci]# make install

編輯php.ini檔案,增加下面兩項:

extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/"
extension=pdo_oci.so

注意確認/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/目錄下確實有pdo_oci.so檔案

重啟apache,然後瀏覽器開啟前面的test.php,往下拉會發現oci已經加成功了:

這裡寫圖片描述

程式碼示例

$tns = "(DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.86.132)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )";

define('PDO_DB_DNS', "oci:dbname=".$tns);  //資料庫dns
define('PDO_DB_USER', 'test');      //登入使用者名稱
define('PDO_DB_PASSWORD', 'test'); //登入密碼


class PDOManage{

    private $_pdo = null;
    private static $_instance = null;

    /**
     * 構造方法,私有
     */
    private function __construct(){
        try{
            $this->_pdo = new PDO(PDO_DB_DNS, PDO_DB_USER, PDO_DB_PASSWORD);
            $this->_pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//可以丟擲異常

        }catch (PDOException $e)
        {
            user_dump('SQL instance:'.$e->getMessage());
            exit($e->getMessage());
        }
    }

新增php curl支援

curl是一個強大的開源庫,支援http等協議。如果專案中用到curl的話,需要加上curl擴充套件。不需要單獨下載,一般原始碼包裡都有隻要編譯配置下就行。

windows下似乎是自帶的,因為我是移植一個專案到linux下,發現有些頁面會報錯:

Call to undefined function curl_init()

才知道linux下需要單獨安裝的。

進入php原始碼下的ext/curl目錄,配置安裝:


[innpay@localhost curl]$ pwd
/home/innpay/php/soft/php-5.6.26/ext/curl
[innpay@localhost curl]$ 
[innpay@localhost curl]$ /home/inn
inn/    innpay/ 
[innpay@localhost curl]$ /home/innpay/php/php/bin/phpize 
Configuring for:
PHP Api Version:         20131106
Zend Module Api No:      20131226
Zend Extension Api No:   220131226
[innpay@localhost curl]$ ./configure --with-curl=/usr/local/curl --with-php-config=/home/innpay/php/php/bin/php-config

[innpay@localhost curl]$ make
[innpay@localhost curl]$ make install

注意–with-php-config這個要根據自己的php目錄實際修改

安裝完成後,會提示我們動態庫安裝到了一個目錄下:

我的是在

php安裝目錄/lib/php/extensions/no-debug-non-zts-20131226/

在這個目錄下可以找到curl.so檔案。

編輯php.ini檔案
找到前面加pdo_oci.so的位置,增加一行:
extension = curl.so

重啟apache即可生效。

新增php openssl 支援

專案中也用到了openssl,所以也要新增openssl擴充套件,步驟類似上面。

[innpay@localhost openssl]$ mv config0.m4 config.m4
[innpay@localhost openssl]$ /home/innpay/php/php/bin/phpize
Configuring for:
PHP Api Version:         20131106
Zend Module Api No:      20131226
Zend Extension Api No:   220131226
[innpay@localhost openssl]$ 

[innpay@localhost openssl]$ ./configure --with-openssl --with-php-config=/home/innpay/php/php/bin/php-config  

[innpay@localhost openssl]$ make
[innpay@localhost openssl]$ make install

編輯php.ini檔案
找到前面加pdo_oci.so的位置,增加一行:
extension = openssl.so

重啟apache即可生效。

相關推薦

linux部署php應用

安裝配置apache 一般linux伺服器上都已經有apache環境了,如果有可以跳過這一步。如果要檢視linux 是否已經安裝apache,可以用下面的命令: [root@localhost htdocs]# httpd -v Server versi

將web應用和mysql都部署linux,web應用通過jdbc就無法獲取到mysql連線。

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested

Linux部署LAMP環境(Linux+Apache+MySQL+PHP

剛過去的暑假兩個月,留在學校,一邊考駕照,一邊一門心思的想著搞個校內的小網站,兩個月過去了,小網站倒是搞好了,但是真心沒有時間維護,最近找了個實習的公司,更是沒有時間了,這是連結:www.3shanmen.com ,有點粗糙還請不要吐槽。 言歸正傳,其實我覺得

linux環境部署tomcat應用

配置linux下的tomcat一、jdk的安裝1.以root身份等陸 2.開啟一個終端 3.輸入命令ls -l檢視安裝的檔案的許可權 #cd /home #cp jdk1.4.2.rpm.bin /usr/local #cd /usr/local 給所有的使用者新增可執行的許

Linux安裝PHP的lua擴展庫

directory http ash make try 不安裝 .net ges 執行 一、安裝Lua 5.3.4 下載 http://www.lua.org/ftp/lua-5.3.4.tar.gz tar xvf lua-5.3.4.tar.gz cd lua

Linux php 版本共存安裝

git span can tar yum sta acc pen hang 我們知道apache + php 是比較經典的搭配,但是兩者都會升版,咱家就經歷過兩次php 升版。 一般就是重新下載新版本的php ,然後編譯安裝。這一切都很繁瑣。有沒有自動安裝工具

LinuxPHP的SESSION不起作用的問題

lin mod data article trac ack tracking track rac 改動SESSION目錄的權限就能夠了。 先找到SESSION目錄, 然後 chmod -R 777 /var/lib/php/session 假設沒有此目錄

Linux部署grafana + influxdb + telegraf , 構建性能監控平臺

grafana 監控 Grafana+telegraf+InfluxDB,采用客戶端->服務端存儲->WEB界面顯示的工作模式,使用UTP傳輸數據,並且支持自定義圖表,有良好的擴展性,重要的是Grafana頁面展示比較美觀,更關鍵的是InfluxDB提供了Python的API,Influx

linux部署一個JavaEE項目的簡單步驟

per cat source div read manage 沒有 scp git 部署項目的前提是準備好環境,包括:Java運行環境(JDK),Tomcat,Mysql數據庫 1.首先將東西上傳到服務器,我是在windows安裝ssh工具(下載安裝git即可http:

linux部署程序,tomcat啟動正常,但網頁無法訪問

tom 環境部署 firewalld png 開啟 但是 system emctl 圖片 問題背景:測試環境部署程序,之前是可以的。但是在安裝rabbitmq的時候,再來打開網頁的時候就出現一直轉圈圈,網頁無法打開。 經過檢查發現是由於開啟了防火墻。 系統是cento

在kubernetes集群中部署php應用

支持 gis serve php-fpm nginx配置 map metadata dfa aml 本文將介紹在kubernetes環境中部署一套php應用系統。前端web采用nginx、中間件php以fastcgi的方式運行,後臺數據庫由mysql主從提供支撐。各服務組件

Linux部署Samba服務環境的操作記錄

command 解決辦法如下 some var sco most get -c can 關於Linux和Windows系統之間的文件傳輸,很多人選擇使用FTP,相對較安全,但是有時還是會出現一些問題,比如上傳文件時,文件名莫名出現亂碼,文件大小改變等問題。相比較來說,使

linux 部署單片 elasticsearch 服務

es本文是部署單機elasticsearch 服務。是通過yum進行安裝。elasticsearch 需要java環境。另一篇文章有配置java8環境說明。1: 首先下載 gpg簽名文件:rpm --import https://packages.elastic.co/GPG-KEY-elasticsearc

Linux 部署Django項目

重啟nginx system files 退出 box 協議類型 nec ret views Linux 下部署Django項目 說明:本文所使用的環境為CentOS 6+Python2.7+Django1.11 安裝Django、Nginx和uWSGI 1

Linux安裝PHP並在nginx服務器中進行配置的詳細方法

devel direct emca red pca pic 占用 amp entos 先介紹一下使用的環境:centos 7.4,  PHP 7.0 ,  nginx 1.12 Linux系統版本可以通過命令:lsb_release -a 查看. 現在開始步入正題了! 1.

使用PHPstudy在Windows服務器部署PHP系統

官方下載 點擊 關於 掃描 win 應用 前期準備 鏈接 收費 PHP網站一般運行在Apache服務器上,IIS服務器上也可以運行,但是不推薦,windows服務器上沒有集成Apache跟PHP的運行環境,但是借助第三方的軟件就能很好的搞定,一般這樣的軟件有很多, 下面我分

Linux部署Tomcat ,然後部署WS信用盤平臺搭建web項目

bbs star 項目 shu pro .com .sh com 壓縮包 解壓tomcat服務器壓縮包 配置環境變量   tomcat服務器運行時是需要JDK支持的,所以必須配置好JDK用到的那些環境變量 編輯/etc下的profile文件,加上如下內容: 修改tomcat

linux部署Nginx以及相關簡介

配置 quest 上傳文件 reload 就是 conn 動靜 config html 1、安裝工具包   yum install -y wget  下載工具   yum install -y vim-enhanced  vim編輯器   yum install -y ma

centos7部署node應用程序

http nbsp load ali 需要 執行 error etc www 一、安裝node 二、安裝nginx 三、使用express寫一個簡單的demo,並且使用pm2部署 四、錯誤 invalid PID number "" in "/run/nginx.pid"

Linux,為應用程序添加桌面圖標(ubuntu18.4)

ccf 打開終端 desktop spa ubun icons alt x86 保存文件 一、桌面圖標位置 Lniux下桌面圖標儲存路徑為:/usr/share/applications 二、桌面圖標格式 所有桌面圖標格式均為desktop,即名為XXX.desktop