ubuntu18.04 編譯安裝 apache php


1. apache

  apache 需要依賴幾個模塊:apr, apr-util, pcre,也分別源碼安裝。

1.1 編譯安裝

1.1.1 apr apr-util

  下載地址:http://apr.apache.org/download.cgi

  分別下載解壓,然后在源碼目錄下 ./configure --prefix=xxx(apr-util 需要設置 --with-apr=[apr的安裝路徑]),然后 make && make install 即可。

1.1.2 pcre

  下載地址:ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/

  可以下載一個最新版的,然后同樣也是在源碼目錄下 ./configure --prefix=xxx && make && make install 即可。

1.1.3 httpd

  官網下載地址:http://httpd.apache.org/

  下載解壓后在源碼目錄下 ./configure --with-apr=[apr安裝路徑] --with-apr-util=[apr-util安裝路徑] --with-pcre=[pcre安裝路徑] --prefix=[httpd安裝路徑] && make && make install 完成安裝。

1.2 httpd服務配置啟動

  cd [httpd安裝路徑]/conf,修改以下兩個配置文件:

1.2.1 httpd.conf

  (1) Listen 2080 (因為我是安裝在用戶目錄下且不打算以root身份啟動,所以默認的80端口需要改為其它的)

  (2) ServerName localhost (這行是為了在 httpd -k start 時不出現 warning 的提示,可以不加)

  (3) 把 Include conf/extra/httpd-vhosts.conf 前的注釋去掉 (后面需要配置這個文件)

1.2.2 extra/httpd-vhosts.conf

  去掉文件里原有的兩個 example 主機配置,改為如下:

<VirtualHost *:2080>
    DocumentRoot "/home/xxx/domain_name/"
    ServerName domain_name.com
    DirectoryIndex index.php index.html
    ScriptAlias /cgi_bin/ "/home/xxx/domain_name/cgi_bin/"
    AddHandler cgi-script .cgi .sh .py 

    <Directory />
        AllowOverride none
        #allow from all
        Require all granted
    </Directory>

    <FilesMatch \.php$>
        SetHandler "proxy:fcgi://127.0.0.1:9000"
    </FilesMatch>

    ErrorLog "/home/xxx/domain_name/error.log"
    CustomLog "/home/xxx/domain_name/access.log" common
</VirtualHost>

  這個是最后更改的文件,其中有一些是 cgi 和 php 相關的配置,現階段可以省略。

1.2.3 啟動服務器

  ../bin/httpd -k start

  然后在瀏覽器地址欄里輸入 domain_name.com:2080 看到 It works 的字眼就表示已經成功了。

1.3 cgi 配置

1.3.1 cgi module 編譯安裝

  使用 apache 自帶的 apxs 工具,可以在不重新編譯 apache 的前提下,給 apache 添加模塊。apache 運行 cgi 程序需要用到2個模塊:mod_cgi.so 與 mod_cgid.so,步驟如下:

  cd [httpd源碼路徑]/modules/generators

  [httpd安裝路徑]/bin/apxs -i -a -c mod_cgi.c

  [httpd安裝路徑]/bin/apxs -i -a -c mod_cgid.c

  此時查看 [httpd安裝目錄]/conf/httpd.conf 文件,可以發現 LoadModule cgid_module modules/mod_cgid.so 這一行被取消了注釋,同時增加了 LoadModule cgi_module modules/mod_cgi.so 這一行。

1.3.2 虛擬主機配置文件更改

  修改 extra/httpd-vhosts.conf 文件,在 <VirtualHost > 標簽下加入:

  ScriptAlias /cgi_bin/ "/home/xxx/domain_name/cgi_bin/"

  AddHandler cgi-script .cgi .sh .py

  然后重啟 httpd 服務器:[httpd安裝路徑]/bin/httpd -k restart(或者先stop再start)

在瀏覽器地址欄里訪問對應的cgi程序:http://domain_name.com/cgi_bin/hello.cgi 即可看到輸出信息。

2. php7

  官網下載地址:http://www.php.net/downloads.php

  下載最新版本(我下載的是7.2.9)的源碼並解壓,然后准備安裝。

2.1 前置准備

  php 的編譯安裝稍微復雜一點,因為依賴到的庫很多,首先需要安裝一些基礎的庫,這些庫有一部分我同樣是下載源碼編譯安裝,其它的因為不太常見,同時為了避免手動編譯安裝的繁瑣就直接使用 apt install 的方式:

  sudo apt install zlib1g-dev  libpng-dev  libjpeg-dev  libfreetype6-dev

  curl libxml2 openssl 這幾個庫我使用源碼來編譯安裝(因為考慮到以后也會在開發中用到)

  實際上依賴到的庫可能不只這幾個,需要看后面 ./configure 的配置參數以及系統是否自帶了對應的庫。

2.1 編譯安裝

  cd [php源碼目錄]

  ./configure --prefix=/home/xxx/php/php-7.2.9/install --with-mcrypt --with-mhash --enable-mysqlnd --with-mysqli --with-pdo-mysql --enable-fpm --with-fpm-user=mywww --with-fpm-group=mywww --with-gd --with-iconv --with-zlib --enable-xml --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-ftp --enable-gd-native-ttf --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-jpeg-dir --with-freetype-dir --enable-opcache --with-libxml-dir=/home/xxx/libxml2/libxml2-2.9.8/install --with-openssl-dir=/home/xxx/openssl/1.1.0i/install --with-curl=/home/xxx/curl/7.61.1/install  && make && make install

  注意把命令里各個庫的路徑替換成實際的路徑。

2.2 fpm 配置啟動  

  cd [php源碼目錄]

  cp php.ini-production [php安裝目錄]/etc/php.ini

  cp sapi/fpm/init.d.php-fpm [php安裝目錄]/sbin/ && chmod u+x [php安裝目錄]/sbin/init.d.php-fpm

  cd [php安裝目錄]/etc/

  cp php-fpm.conf.default php-fpm.conf

  cp php-fpm.d/www.conf.default php-fpm.d/mywww.conf

把mywww.conf文件中第4行的[www]改為[mywww]

  ./init.d.php-fpm start

netstat -antp | grep php 即可看見 php-fpm 進程在運行(fpm進程默認使用 9000 端口):

2.3 apache 的 php 配置

   好了,終於來到最后也是最重要的這一步了。也是更改這兩個配置文件:

2.3.1 httpd.conf

  把 LoadModule proxy_module modules/mod_proxy.so

  和 LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

前面的注釋去掉,這兩個是 apache 使用 fpm 方式解釋 php 文件需要打開的模塊擴展。

2.3.2 extra/httpd-vhosts.conf

  添加以下幾行:

  <FilesMatch \.php$>
    SetHandler "proxy:fcgi://127.0.0.1:9000"
  </FilesMatch>

  具體位置如 1.2.2 所示。

2.3.3 重啟 httpd 服務

  重啟 httpd 服務,訪問網站根目錄下任何一個 php 文件可以看到對於的解釋輸出。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM