時(shí)間:2023-07-01 00:09:01 | 來(lái)源:網(wǎng)站運(yùn)營(yíng)
時(shí)間:2023-07-01 00:09:01 來(lái)源:網(wǎng)站運(yùn)營(yíng)
在服務(wù)器上對(duì) PHP-FPM 和 Nginx 進(jìn)行安裝配置詳解:# Ubuntusudo apt-get install python-software-propertiessudo add-apt-repository ppa:ondrej/php-5.6sudo apt-get updatesudo apt-get install php5-fpm php5-cli php5-curl / php5-gd php5-json php5-mcrypt php5-mysqlnd
/etc/php5/fpm/php-fpm.conf
。emergency_restart_threshold = 10
emergency_restart_interval = 1m
emergency_restart_threshold
采用的時(shí)間跨度include=/etc/php5/fpm/pool.d/*.conf
這行代碼的作用是讓 PHP-FPM 加載 /etc/php5/fpm/pool.d
目錄中的各個(gè)進(jìn)程池定義文件。進(jìn)入這個(gè)目錄,應(yīng)該會(huì)看到一個(gè)名為 www.conf
的文件,這是名為 www
的默認(rèn) PHP-FPM 進(jìn)程池配置文件。www
PHP-FPM 進(jìn)程池,讓它以 deploy
用戶和用戶組的身份運(yùn)行:user = deploy
group = deploy
listen = 127.0.0.1:9000
:PHP-FPM 進(jìn)程池監(jiān)聽(tīng)的IP地址和端口號(hào),讓 PHP-FPM 只接受 Nginx 從這里傳入的請(qǐng)求,127.0.0.1:9000
讓指定的 PHP-FPM 進(jìn)程池監(jiān)聽(tīng)本地端口 9000
進(jìn)入的連接。listen.allowed_clients = 127.0.0.1
:可以向這個(gè) PHP-FPM 進(jìn)程池發(fā)送請(qǐng)求的IP地址(一個(gè)或多個(gè)),為了安全,我把這個(gè)設(shè)置為 127.0.0.1
,即只有當(dāng)前設(shè)備能把請(qǐng)求轉(zhuǎn)發(fā)給這個(gè) PHP-FPM 進(jìn)程池。pm.max_children = 15
:這個(gè)設(shè)置設(shè)定任何時(shí)間點(diǎn) PHP-FPM 進(jìn)程池中最多能有多少個(gè)進(jìn)程。這個(gè)設(shè)置沒(méi)有絕對(duì)正確的值,你應(yīng)該測(cè)試你的 PHP 應(yīng)用,確定每個(gè) PHP 進(jìn)程需要使用多少內(nèi)存,然后把這個(gè)設(shè)置設(shè)定為可用內(nèi)存能容納的 PHP 進(jìn)程總數(shù)。pm.start_servers = 3
:PHP-FPM 啟動(dòng)時(shí) PHP-FPM 進(jìn)程池立即可用的進(jìn)程數(shù)。pm.min_spare_servers = 2
:PHP 應(yīng)用空閑時(shí) PHP-FPM 進(jìn)程池中可以存在的進(jìn)程數(shù)量最小值。這個(gè)設(shè)置的值一般和 pm.start_servers
一樣。pm.max_spare_servers = 4
:PHP 應(yīng)用空閑時(shí) PHP-FPM 進(jìn)程池中可以存在的進(jìn)程數(shù)量最大值。pm.max_requests = 1000
:回收進(jìn)程之前,PHP-FPM 進(jìn)程池中各個(gè)進(jìn)程最多能處理的 HTTP 請(qǐng)求數(shù)量。這個(gè)設(shè)置有助于避免 PHP 擴(kuò)展或庫(kù)因?yàn)榫帉懽玖佣鴮?dǎo)致內(nèi)存不斷泄露。slowlog = /path/to/slowlog.log
:這個(gè)設(shè)置的值是一個(gè)日志文件在文件系統(tǒng)中的絕對(duì)路徑。這個(gè)日志文件用于記錄處理時(shí)間超過(guò) n
秒的 HTTP 請(qǐng)求信息,以便找出 PHP 應(yīng)用的瓶頸,進(jìn)而進(jìn)行調(diào)試。需要注意的是,PHP-FPM 進(jìn)程池所屬的用戶和用戶組要對(duì)這個(gè)日志文件有寫權(quán)限。request_slowlog_timeout = 5s
:如果當(dāng)前 HTTP 請(qǐng)求的處理時(shí)間超過(guò)指定的值,就把請(qǐng)求的回溯信息寫入 slowlog
設(shè)置指定的日志文件。sudo service php5-fpm restart
# Ubuntusudo add-apt-repository ppa:nginx/stablesudo apt-get updatesudo apt-get install nginx# CentOSsudo yum install nginxsudo systemctl enable nginx.servicesudo systemctl start nginx.service
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; }}
下面簡(jiǎn)要說(shuō)明下每個(gè)虛擬主機(jī)設(shè)置:listen
:設(shè)置 Nginx 監(jiān)聽(tīng)哪個(gè)端口進(jìn)入的 HTTP 請(qǐng)求。一般 HTTP 請(qǐng)求從 80
端口進(jìn)入,HTTPS 請(qǐng)求從 443
端口進(jìn)入。server_name
:用于識(shí)別虛擬主機(jī)的域名,這個(gè)要設(shè)置為你的應(yīng)用使用的域名,而且域名要指向服務(wù)器的 IP 地址。如果 HTTP 請(qǐng)求頭中 Host
首部的值和虛擬主機(jī)中 server_name
的值相匹配,Nginx 就會(huì)把這個(gè) HTTP 請(qǐng)求發(fā)送給這個(gè)虛擬主機(jī)。index
:HTTP 請(qǐng)求 URI 沒(méi)有指定文件時(shí)的默認(rèn)文件。client_max_body_size
:對(duì)這個(gè)虛擬主機(jī)來(lái)說(shuō),Nginx 接受 HTTP 請(qǐng)求主體長(zhǎng)度的最大值。如果請(qǐng)求主體長(zhǎng)度超過(guò)這個(gè)值,Nginx 會(huì)返回 4XX 響應(yīng)。error_log
:這個(gè)虛擬主機(jī)錯(cuò)誤日志文件在文件系統(tǒng)中的路徑。access_log
:這個(gè)虛擬主機(jī)訪問(wèn)日志文件在文件系統(tǒng)中的路徑。root
:應(yīng)用根目錄路徑。location
塊,這兩個(gè) location
塊的作用是告訴 Nginx 如何處理匹配指定 URL 模式的 HTTP 請(qǐng)求:location / {}
使用 try_files 指令查找匹配所請(qǐng)求 URI 的文件,如果沒(méi)有找到,再查找匹配所請(qǐng)求 URI 的目錄,如果目錄也沒(méi)有找到,則把 HTTP 請(qǐng)求的 URI 重寫為 /index.php
,如果有查詢字符串的話,還會(huì)把查詢字符串附加到 URI 的末尾,這個(gè)重寫的 URL,以及所有以 .php
結(jié)尾的URI,都由 location ~ /.php {}
塊管理。location ~ /.php {}
塊把 HTTP 請(qǐng)求轉(zhuǎn)發(fā)給 PHP-FPM 進(jìn)程池進(jìn)行處理,在這個(gè)塊中我們把 PHP 請(qǐng)求轉(zhuǎn)發(fā)到端口 9000
讓 PHP-FPM 處理請(qǐng)求。/etc/nginx/sites-enable
目錄下創(chuàng)建虛擬主機(jī)配置文件的符號(hào)鏈接:sudo ln -s /etc/nginx/sites-available/example.conf /etc/nginx/sites-enabled/example.conf;
最后,執(zhí)行下述命令,重啟 Nginx:# Ubuntusudo service nginx restart# CentOSsudo systemctl restart nginx.service
現(xiàn)在服務(wù)器可以運(yùn)行 PHP 應(yīng)用了。Nginx 配置有很多種,這里只是最基本的配置,更多配置信息,請(qǐng)參考以下資源:http://nginx.orghttp://www.nginx.cnhttps://github.com/h5bp/server-configs-nginx
Puppet:https://puppet.com/Chef:https://www.chef.io/Ansible:https://www.ansible.com/SaltStack:https://www.ansible.com/
各個(gè)工具之間有所差別,但是目標(biāo)是一致的 —— 根據(jù)精確的規(guī)則自動(dòng)配置新服務(wù)器。如果要管理多臺(tái)服務(wù)器,我強(qiáng)烈建議研究使用配置工具,這樣可以節(jié)省大量時(shí)間。關(guān)鍵詞:安裝,配置,服務(wù)
客戶&案例
營(yíng)銷資訊
關(guān)于我們
客戶&案例
營(yíng)銷資訊
關(guān)于我們
微信公眾號(hào)
版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。