阿里雲esc centos 7.4 64位
yum install -y gcc gcc-c++ openssl openssl-devel
安裝這些是應爲在編譯安裝的時候咱們須要它們。php
nginx
首先咱們得去nginx官網下載源碼包以及查看文檔。編譯文檔須要仔細查看,先簡單瞭解一下配置參數。html
nginx
配置參數
--prefix=path
定義一個目錄,存放服務器上的文件 ,也就是nginx的安裝目錄。默認使用/usr/local/nginx
。--sbin-path=path
設置nginx的可執行文件的路徑,默認爲prefix/sbin/nginx
。--conf-path=path
設置在nginx.conf配置文件的路徑。nginx容許使用不一樣的配置文件啓動,經過命令行中的-c選項。默認爲prefix/conf/nginx.conf
。--pid-path=path
設置nginx.pid文件,將存儲的主進程的進程號。安裝完成後,能夠隨時改變的文件名 , 在nginx.conf配置文件中使用 PID指令。默認狀況下,文件名 爲prefix/logs/nginx.pid
。--error-log-path=path
設置主錯誤,警告,和診斷文件的名稱。安裝完成後,能夠隨時改變的文件名 ,在nginx.conf配置文件中 使用 的error_log指令。默認狀況下,文件名 爲prefix/logs/error.log
。--http-log-path=path
設置主請求的HTTP服務器的日誌文件的名稱。安裝完成後,能夠隨時改變的文件名 ,在nginx.conf配置文件中 使用 的access_log指令。默認狀況下,文件名 爲prefix/logs/access.log
。--build=name
設置一個可選的nginx構建名稱。--user=name
設置nginx工做進程的用戶。安裝完成後,能夠隨時更改的名稱在nginx.conf配置文件中 使用的 user指令。默認的用戶名是nobody。--group=name
設置nginx工做進程的用戶組。安裝完成後,能夠隨時更改的名稱在nginx.conf配置文件中 使用的 user指令。默認的爲非特權用戶。--with-select_module
--without-select_module
啓用或禁用構建一個模塊來容許服務器使用select()方法。該模塊將自動創建,若是平臺不支持的kqueue,epoll,rtsig或/dev/poll。--with-poll_module
--without-poll_module
啓用或禁用構建一個模塊來容許服務器使用poll()方法。該模塊將自動創建,若是平臺不支持的kqueue,epoll,rtsig或/dev/poll。--without-http_gzip_module
— 不編譯壓縮的HTTP服務器的響應模塊。編譯並運行此模塊須要zlib庫。--without-http_rewrite_module
不編譯重寫模塊。編譯並運行此模塊須要PCRE庫支持。--without-http_proxy_module
— 不編譯http_proxy模塊。--with-http_ssl_module
— 使用https協議模塊。默認狀況下,該模塊沒有被構建。創建並運行此模塊的OpenSSL庫是必需的。--with-pcre=path
— 設置PCRE庫的源碼路徑。PCRE庫的源碼(版本4.4 - 8.41)須要從PCRE網站下載並解壓。其他的工做是Nginx的 ./configure 和 make 來完成。正則表達式使用在location指令和 ngx_http_rewrite_module 模塊中。--with-pcre-jit
—編譯PCRE包含「just-in-time compilation」(1.1.12中, pcre_jit指令)。--with-zlib=path
—設置的zlib庫的源碼路徑。要下載從 zlib(版本1.1.3 - 1.2.11)的並解壓。其他的工做是Nginx的./ configure和make完成。ngx_http_gzip_module模塊須要使用zlib 。--with-cc-opt=parameters
— 設置額外的參數將被添加到CFLAGS變量。例如,當你在FreeBSD上使用PCRE庫時須要使用:--with-cc-opt="-I /usr/local/include。.如須要須要增長 select()支持的文件數量:--with-cc-opt="-D FD_SETSIZE=2048".--with-ld-opt=parameters
—設置附加的參數,將用於在連接期間。例如,當在FreeBSD下使用該系統的PCRE庫,應指定:--with-ld-opt="-L /usr/local/lib"
。翻譯大部分來源於網絡,這裏不展開說明nginx
各個編譯參數的含義,先完成安裝,畢竟以後咱們能夠經過配置文件或者從新編譯實現功能上的需求。下面是官方文檔的編譯參數示例,這些參數必須在同一行輸入(別用回車換行,那樣就開始編譯了o(╥﹏╥)o)nginx
./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=../pcre-8.41 --with-zlib=../zlib-1.2.11
路徑我以爲不必配置,默認的就很好,--with-http_ssl_module
是對https訪問的支持,顯然咱們須要它,編譯這個模塊須要OpenSSL
的支持,咱們在前提條件中已經用yum
安裝了OpenSSL
;--with-pcre
是對ngx_http_rewrite_module
中正則表達式的支持,咱們也須要它;--with-zlib
是ngx_http_gzip_module
須要的,咱們最好包含它,ngx_http_gzip_module
能夠必定程度上減小服務器負擔,固然不編譯進來也沒事,之後須要能夠再從新編譯進來。c++
編譯安裝
nginx
//下載nginx源碼包 wget http://nginx.org/download/nginx-1.13.9.tar.gz //下載pcre源碼包 wget https://ftp.pcre.org/pub/pcre/pcre-8.41.tar.gz //下載zlib源碼包 wget http://www.zlib.net/zlib-1.2.11.tar.gz //解壓 tar zxvf nginx-1.13.9.tar.gz tar zxvf pcre-8.41.tar.gz tar zxvf zlib-1.2.11.tar.gz //進入nginx目錄 cd nginx-1.13.9 //配置, -with-pcre=../pcre-8.41 --with-zlib=../zlib-1.2.11 這麼寫是由於我把zlib和pcre都放在nginx源碼包同一級目錄下 ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-pcre=../pcre-8.41 --with-zlib=../zlib-1.2.11 //配置成功以後,編譯並安裝 make && make install
若是配置或者編譯時出現錯誤,請百度或者google解決,好比,好比在最小化安裝的 centos
虛擬機中操做,tar
命令都沒有安裝,那麼報tar
命令不存在時咱們先得安裝 tar
命令。正則表達式
測試是否安裝成功
啓動nginx
後端
/usr/local/nginx/sbin/nginx
訪問 ip 若是出現下圖,則安裝成功centos
前往php下載頁面找到須要安裝的php版本,這裏咱們安裝最新的穩定版本php7.2.3
。官方文檔沒有給出配置參數列表,咱們可使用./configure --help
查看。服務器
下載、配置及編譯安裝php
//下載php的安裝文件 wget http://cn2.php.net/distributions/php-7.2.3.tar.gz //解壓 tar zxvf php-7.2.3.tar.gz //進入解壓後的目錄 cd php-7.2.3 //配置安裝參數 ./configure --enable-fpm --prefix=/usr/local/php //編譯安裝 make && make install
在運行configure
的時候或許會報以下錯誤網絡
configure: error: libxml2 not found. Please check your libxml2 installation
這是由於缺乏libxml庫,yum
安裝一下就好php7
yum install -y libxml2 libxml2-devel
咱們這裏就簡單的安裝了php,只帶了一個參數--enable-fpm
,可是實際咱們也許會須要帶更多的參數,這些咱們能夠經過從新走一遍安裝流程來實現,值得一提的是,在./configure
執行成功以後會在當前目錄下留下config.nice
文件,後續若是從新配置,能夠在這個基礎上運行,好比咱們要安裝pcntl
擴展,能夠這樣執行./config.nice --enable-pcntl
。
完成安裝以後的操做
php配置文件,因爲在配置時咱們並無指定php.ini的加載位置,默認在安裝php安裝目錄的lib目錄下,因此我 們移動配置文件到 /usr/local/php/lib
目錄下。
cp php.ini-development /usr/local/php/lib/php.ini
在/usr/local/php/etc/php-fpm.conf 最後一行能夠看到 include=/usr/local/php/etc/php-fpm.d/*.conf,因此須要執行如下步驟。
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
須要着重提醒的是,若是文件不存在,則阻止 Nginx 將請求發送到後端的 PHP-FPM 模塊, 以免遭受惡意腳本注入的攻擊。將 php.ini 文件中的配置項 cgi.fix_pathinfo 設置爲 0 。【官方文檔提出】
啓動php-fpm
/usr/local/php/sbin/php-fpm
修改
nginx
配置以支持php應用
修改默認的 location 塊,使其支持 .php 文件:
location / { root html; index index.php index.html index.htm; }
下一步配置來保證對於 .php 文件的請求將被傳送到後端的 PHP-FPM 模塊, 取消默認的 PHP 配置塊的註釋,並修改成下面的內容:
location ~* \.php$ { fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; }
重啓nginx
使配置生效
/usr/local/nginx/sbin/nginx -s stop /usr/local/nginx/sbin/nginx
建立測試文件
echo "<?php phpinfo(); ?>" >> /usr/local/nginx/html/index.php