中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

在服務器上怎么安裝配置PHP-FPM和Nginx

發布時間:2021-09-06 02:25:04 來源:億速云 閱讀:165 作者:chen 欄目:大數據

這篇文章主要介紹“在服務器上怎么安裝配置PHP-FPM和Nginx ”,在日常操作中,相信很多人在在服務器上怎么安裝配置PHP-FPM和Nginx 問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”在服務器上怎么安裝配置PHP-FPM和Nginx ”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

PHP-FPM

PHP-FPM(PHP FastCGI Process Manager),是用于管理 PHP 進程池的軟件,用于接收和處理來自 Web 服務器(如Nginx)的請求。PHP-FPM會創建一個主進程(通常以操作系統中根用戶的身份運行),控制何時以及如何把 HTTP 請求轉發給一個或多個子進程處理。PHP-FPM 主進程還控制著什么時候創建和銷毀 PHP 子進程。PHP-FPM 進程池中的每個進程存在的時間都比單個 HTTP 請求長,可以處理10、50、100或更多的 HTTP 請求。

安裝

# Ubuntu
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:ondrej/php-5.6
sudo apt-get update
sudo apt-get install php5-fpm php5-cli php5-curl \
     php5-gd php5-json php5-mcrypt php5-mysqlnd

全局配置

在 Ubuntu 中,PHP-FPM 的主配置文件是 /etc/php5/fpm/php-fpm.conf

下面是 PHP-FPM 最重要的全局配置,建議把默認值改成下面的值:

  • emergency_restart_threshold = 10
    在指定時間內,如果失效的 PHP-FPM 子進程數超過這個值,PHP-FPM 主進程就優雅重啟

  • emergency_restart_interval = 1m
    設定 emergency_restart_threshold 采用的時間跨度

這兩個配置是 PHP-FPM 進程的基本安全保障,能解決簡單的問題,但是不能解決由拙劣的 PHP 代碼引起的重大問題。

配置進程池

PHP-FPM 配置文件的其它配置內容是一個名為 Pool Definitions 的區域,這個區域里的配置用于設置每個 PHP-FPM 進程池,PHP-FPM 進程池是一系列相關的 PHP 子進程。通常,一個 PHP 應用有自己的一個 PHP-FPM 進程池。

在 Ubuntu 中,Pool Definitions 區域只有下面這行內容:

include=/etc/php5/fpm/pool.d/*.conf

這行代碼的作用是讓 PHP-FPM 加載 /etc/php5/fpm/pool.d 目錄中的各個進程池定義文件。進入這個目錄,應該會看到一個名為 www.conf 的文件,這是名為 www 的默認 PHP-FPM 進程池配置文件。

各個 PHP-FPM 進程池都以指定的操作系統用戶和用戶組的身份運行。我們要配置默認的 wwwPHP-FPM 進程池,讓它以 deploy 用戶和用戶組的身份運行:

  • user = deploy

  • group = deploy

  • listen = 127.0.0.1:9000:PHP-FPM 進程池監聽的IP地址和端口號,讓 PHP-FPM 只接受 Nginx 從這里傳入的請求,127.0.0.1:9000 讓指定的 PHP-FPM 進程池監聽本地端口 9000進入的連接。

  • listen.allowed_clients = 127.0.0.1:可以向這個 PHP-FPM 進程池發送請求的IP地址(一個或多個),為了安全,我把這個設置為 127.0.0.1,即只有當前設備能把請求轉發給這個 PHP-FPM 進程池。

  • pm.max_children = 15:這個設置設定任何時間點 PHP-FPM 進程池中最多能有多少個進程。這個設置沒有絕對正確的值,你應該測試你的 PHP 應用,確定每個 PHP 進程需要使用多少內存,然后把這個設置設定為可用內存能容納的 PHP 進程總數。

  • pm.start_servers = 3:PHP-FPM 啟動時 PHP-FPM 進程池立即可用的進程數。

  • pm.min_spare_servers = 2:PHP 應用空閑時 PHP-FPM 進程池中可以存在的進程數量最小值。這個設置的值一般和 pm.start_servers 一樣。

  • pm.max_spare_servers = 4:PHP 應用空閑時 PHP-FPM 進程池中可以存在的進程數量最大值。

  • pm.max_requests = 1000:回收進程之前,PHP-FPM 進程池中各個進程最多能處理的 HTTP 請求數量。這個設置有助于避免 PHP 擴展或庫因為編寫拙劣而導致內存不斷泄露。

  • slowlog = /path/to/slowlog.log:這個設置的值是一個日志文件在文件系統中的絕對路徑。這個日志文件用于記錄處理時間超過 n 秒的 HTTP 請求信息,以便找出 PHP 應用的瓶頸,進而進行調試。需要注意的是,PHP-FPM 進程池所屬的用戶和用戶組要對這個日志文件有寫權限。

  • request_slowlog_timeout = 5s:如果當前 HTTP 請求的處理時間超過指定的值,就把請求的回溯信息寫入 slowlog 設置指定的日志文件。

編輯之后保存文件,然后重啟 PHP-FPM 主進程:

sudo service php5-fpm restart

Nginx

Nginx 是 Web 服務器,類似 Apache,不過更容易配置,而且運行時占用內存更少。這里我們不深入探討 Nginx,只是告訴你如何安裝,以及如何把相應的請求轉發給 PHP-FPM 進程池。

安裝

# Ubuntu
sudo add-apt-repository ppa:nginx/stable
sudo apt-get update
sudo apt-get install nginx

# CentOS
sudo yum install nginx
sudo systemctl enable nginx.service
sudo systemctl start nginx.service

虛擬主機

接下來,我們需要為 PHP 應用配置一個虛擬主機。虛擬主機是一系列設置,用于告知 Nginx PHP 應用的域名、在文件系統中的位置,已經如何把 HTTP 請求轉發給 PHP-FPM 進程池:

server {
    listen 80;
    server_name example.com;
    index index.php
    client_max_body_size 50M;
    error_log /home/deploy/apps/logs/example.error.log;
    access_log /home/deploy/apps/logs/example.access.log;
    root /home/deploy/apps/example.com/current/public;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php {
        try_files $uri = 404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
        fastcgi_index index.php;
        fastcgi_pass 127.0.0.1:9000;
    }
}

下面簡要說明下每個虛擬主機設置:

  • listen:設置 Nginx 監聽哪個端口進入的 HTTP 請求。一般 HTTP 請求從 80 端口進入,HTTPS 請求從 443端口進入。

  • server_name:用于識別虛擬主機的域名,這個要設置為你的應用使用的域名,而且域名要指向服務器的 IP 地址。如果 HTTP 請求頭中 Host 首部的值和虛擬主機中 server_name 的值相匹配,Nginx 就會把這個 HTTP 請求發送給這個虛擬主機。

  • index:HTTP 請求 URI 沒有指定文件時的默認文件。

  • client_max_body_size:對這個虛擬主機來說,Nginx 接受 HTTP 請求主體長度的最大值。如果請求主體長度超過這個值,Nginx 會返回 4XX 響應。

  • error_log:這個虛擬主機錯誤日志文件在文件系統中的路徑。

  • access_log:這個虛擬主機訪問日志文件在文件系統中的路徑。

  • root:應用根目錄路徑。

除了上述設置外,還有兩個 location 塊,這兩個 location 塊的作用是告訴 Nginx 如何處理匹配指定 URL 模式的 HTTP 請求:

location / {} 使用 try_files 指令查找匹配所請求 URI 的文件,如果沒有找到,再查找匹配所請求 URI 的目錄,如果目錄也沒有找到,則把 HTTP 請求的 URI 重寫為 /index.php,如果有查詢字符串的話,還會把查詢字符串附加到 URI 的末尾,這個重寫的 URL,以及所有以 .php 結尾的URI,都由 location ~ \.php {} 塊管理。

location ~ \.php {} 塊把 HTTP 請求轉發給 PHP-FPM 進程池進行處理,在這個塊中我們把 PHP 請求轉發到端口 9000 讓 PHP-FPM 處理請求。

在 Ubuntu 中我們必須執行以下命令,在 /etc/nginx/sites-enable 目錄下創建虛擬主機配置文件的符號鏈接:

sudo ln -s /etc/nginx/sites-available/example.conf /etc/nginx/sites-enabled/example.conf;

最后,執行下述命令,重啟 Nginx:

# Ubuntu
sudo service nginx restart

# CentOS
sudo systemctl restart nginx.service

現在服務器可以運行 PHP 應用了。Nginx 配置有很多種,這里只是最基本的配置,更多配置信息,請參考以下資源:

http://nginx.org
http://www.nginx.cn
https://github.com/h6bp/server-configs-nginx

自動配置服務器

配置服務器是個很漫長的過程,而且很枯燥,如果手動配置很多服務器,這種感覺會更強烈。幸好,有些工具可以幫我們自動配置服務器,下面是幾個流行的服務器配置工具:

Puppet:https://puppet.com/
Chef:https://www.chef.io/
Ansible:https://www.ansible.com/
SaltStack:https://www.ansible.com/

各個工具之間有所差別,但是目標是一致的 —— 根據精確的規則自動配置新服務器。如果要管理多臺服務器,我強烈建議研究使用配置工具,這樣可以節省大量時間。

到此,關于“在服務器上怎么安裝配置PHP-FPM和Nginx ”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

榆树市| 晋江市| 陇南市| 武乡县| 夏河县| 九龙坡区| 彭山县| 丘北县| 祁门县| 邯郸市| 图木舒克市| 东乡县| 城步| 凤山县| 波密县| 许昌县| 越西县| 临泽县| 鹤庆县| 伊春市| 祁连县| 洮南市| 沛县| 东宁县| 宝应县| 应城市| 抚州市| 天长市| 辽宁省| 朝阳县| 西乌| 天柱县| 临清市| 昌邑市| 建昌县| 贺州市| 锦州市| 合川市| 仁布县| 博白县| 昆山市|