nginx 的 php 開發環境部署

今天來做一下 nginx 的分享


準備工作

首先是編譯需要的一些東西

gcc-c++

libtool

gzip 模塊需要 zlib 庫

rewrite 模塊需要 pcre 庫

ssl 功能需要 openssl 庫


安裝依賴

直接用 yum 安裝就行了,不用自己編譯,節省很多時間,也避免了一些不必要的錯誤

下面依賴,根據實際情況自己安裝需要的

yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel

編譯安裝

然後編譯安裝

./configure --prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-http_realip_module \

make
make install

權限不夠的話自己想辦法。。sudo 一下


常用編譯選項

–prefix=PATH: 指定nginx的安裝目錄。默認 /usr/local/nginx

–conf-path=PATH: 設置nginx.conf配置文件的路徑。nginx允許使用不同的配置文件啓動,通過命令行中的-c選項。默認爲prefix/conf/nginx.conf

–user=name: 設置nginx工作進程的用戶。安裝完成後,可以隨時在nginx.conf配置文件更改user指令。默認的用戶名是nobody。–group=name類似

–with-http_ssl_module: 使用https協議模塊。默認情況下,該模塊沒有被構建。前提是openssl與openssl-devel已安裝

–with-http_stub_status_module: 用來監控 Nginx 的當前狀態

–with-http_gzip_static_module: 是針對 nginx serve 的靜態文件,需要編譯進去纔能有

–with-http_realip_module: 通過這個模塊允許我們改變客戶端請求頭中客戶端IP地址值(例如X-Real-IP 或 X-Forwarded-For),意義在於能夠使得後臺服務器記錄原始客戶端的IP地址

–with-pcre: 設置PCRE庫的源碼路徑,如果已通過yum方式安裝,使用–with-pcre自動找到庫文件。使用–with-pcre=PATH時,需要從PCRE網站下載pcre庫的源碼(版本4.4 - 8.30)並解壓,剩下的就交給Nginx的./configure和make來完成。perl正則表達式使用在location指令和 ngx_http_rewrite_module模塊中。

–with-zlib=PATH: 指定 zlib(版本1.1.3 - 1.2.5)的源碼解壓目錄。在默認就啓用的網絡傳輸壓縮模塊ngx_http_gzip_module時需要使用zlib 。

–add-module=PATH: 添加第三方外部模塊,如nginx-sticky-module-ng或緩存模塊。每次添加新的模塊都要重新編譯(Tengine可以在新加入module時無需重新編譯)


常用操作

啓動關閉 nginx 等常用操作

# 檢查配置文件是否正確
/usr/local/nginx/sbin/nginx -t

# 查看編譯選項
/usr/local/nginx/sbin/nginx -V

# 啓動
/usr/local/nginx/sbin/nginx  # 默認配置文件 conf/nginx.conf,-c 指定

#關閉
/usr/local/nginx/sbin/nginx -s stop
# or
pkill nginx

# 重啓,不會改變啓動時指定的配置文件
/usr/local/nginx/sbin/nginx -s reload
# 或者
kill -HUP `cat /usr/local/nginx-1.6/logs/nginx.pid`

# 也可以將 nginx 作爲系統服務管理,下載 nginx 到/etc/init.d/,修改路徑和可執行權限

# service nginx {start|stop|status|restart|reload|configtest}

解析 php

需要 php-fpm 的支持

直接使用自帶的 php-fpm

如果沒有,那重新編譯 PHP,在原有的編譯信息後加上 --enable-fpm

查看原本的編譯信息

php -i | grep Configure

加上 --enable-fpm 選項進行重新編譯


配置 php-fpm

    #複製一份配置文件
    sudo cp /usr/local/php7/etc/php-fpm.conf.default.conf  php-fpm.conf

    #複製一份用戶配置文件,用戶名是配置 php 時指定的
    sudo cp /usr/local/php7/etc/php-fpm.d/www.conf.default www.conf

    #啓動 php-fpm,mac 必須要以 root 用戶啓動,-R 參數表示 --allow-to-run-as-root
    sudo /usr/local/php7/sbin/php-fpm -R

    #查看一下php-fpm是否啓動成功
    ps aux | grep php-fpm

    # php-fpm 的默認端口號是 9000
    netstat -ant | grep 90000

nginx 整合 php-fpm

location ~ \.php$ {
    root           /data/home/arnoliu/www/developers.e.qq.com/web;
    fastcgi_pass   127.0.0.1:9001;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /data/home/arnoliu/www/developers.e.qq.com/web$fastcgi_script_name;
    include        fastcgi_params;
}

nginx 配置

nginx.conf 配置文件

nginx 配置文件主要分成四部分:

  • main:(全局設置)其他部分的會繼承自 main
  • server:(主機設置)主要用於指定虛擬主機域名、IP 和端口
  • location:(URL 路由)用於匹配路由信息
  • upstream:(主要爲反向代理、負載均衡相關配置)upstream 主要用於設置一系列的後端服務器,設置反向代理及後端服務器的負載均衡

server 繼承 main,location 繼承 server

upstream 既不會繼承指令也不會被繼承,它有自己的特殊指令


我的配置

worker_processes  8;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    access_log  logs/access.log;

    sendfile        on;
    keepalive_timeout  60;

    tcp_nopush on;
    tcp_nodelay on;

    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 128k;

    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
    gzip_vary on;

    server {
        listen       80;
        server_name  example.qq.com;

        root /data/home/arnoliu/www/example/web;
        charset utf-8;

        location / {
            root /data/home/arnoliu/www/example/web;
            index index.php index.html index.htm;
        }

        location ~ \.php$ {
            root          /data/home/arnoliu/www/example/web;
            fastcgi_pass  127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME  /data/home/arnoliu/www/example/web$fastcgi_script_name;
            include       fastcgi_params;
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章