LNMP
由於 Nginx 輕量與高效的效能,Linux + Nginx + Mysql + PHP 的部署模式,被更多的應用於 PHP 的開發與生產環境中。
本文介紹 Nginx + php-fpm 的部署模式的安裝與配置過程,先介紹下幾個概念
cgi
是 web 伺服器如 Apache、Nginx 等與 php 直譯器之間的通訊協議fast-cgi
是 cgi 的改良版本。相較於 cgi 的每次請求過來都 fork 一個程式,結束後 kill 這個程式,fast-cgi 會先 fork 一個 master ,然後再 fork 多個 worker,當請求過來時, master 會傳遞給一個 worker ,然後立即可以接受下一個請求。這樣避免了重複的勞動,大大提高了效率php-cgi
是 PHP 5.4之前官方自帶的實現 fast-cgi 協議的直譯器,但由於效能的問題,被廣為詬病,PHP 5.4後被 php-fpm 代替php-fpm
是 PHP 5.4之前第三方的管理 fast-cgi 程式的管理器,之後被官方收錄,成為替代 php-cgi 的管理器和直譯器
以上概念容易混淆,可自行查閱更詳細的介紹。以下是整個安裝過程。
SELinux
SELinux 是 Linux 內建的安全模組,是為了減小系統中服務程式可訪問的資源,如果開啟會導致服務訪問出現異常等情況,一些雲平臺,如阿里雲等,預設情況下,ECS 裡面的 SELinux 是關閉的。我們可以手動關閉。
檢視是否開啟:
/usr/sbin/sestatus -v
臨時關閉:
setenforce 0
永久關閉:
vi /etc/selinux/config
將 SELINUX=enforcing
改為SELINUX=disabled
設定後需要重啟伺服器才能生效
NGINX
安裝
更新系統包和安裝軟體包,然後安裝 Nginx
yum update -y
rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum install nginx1w
配置
編輯配置檔案
vi /etc/nginx/nginx.conf
做如下修改
# `·worker_processes 1;` 修改成伺服器核心數
worker_processes 8;
# `index index.html index.htm;` 增加預設檔案
index index.html index.htm index.php;
# 修改 `server` 如下
server {
listen 80;
server_name localhost;
root /home/wwwroot/public;
client_max_body_size 500M;
server_tokens off;
location / {
if (!-e $request_filename){
rewrite ^/(.*)$ /index.php/$1 last;
break;
}
}
# redirect server error pages to the static page /40x.html
#
error_page 404 /404.html;
location = /40x.html {
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php(.*)$ {
# root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(\/?.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SERVER_SOFTWARE nginx;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 16k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
include fastcgi_params;
}
}
開啟 gzip
,在 /etc/nginx/conf.d
中加入 gzip.conf
檔案,如下
gzip on;
gzip_disable “MSIE [1-6].(?!.*SV1)”;
gzip_http_version 1.1;
gzip_vary on;
gzip_proxied any;
gzip_min_length 5000;
gzip_buffers 16 8k;
gzip_comp_level 6;
gzip_types text/css text/xml text/plain application/json application/javascript application/xml application/rss+xml application/xhtml+xml;
啟動 Nginx ,並加入開機自啟動
systemctl start nginx
systemctl enable nginx
PHP
安裝
yum
安裝php-fpm
和相關擴充套件
yum install php72w-fpm php72w-opcache php72w-mysqlnd php72w-cli php72w-mbstring php72w-gd php72w-xml php72w-zip php72w-pecl-redis
配置
編輯配置檔案
vi /etc/php-fpm.d/www.conf
做如下修改
# user = apache 修改為
user = nginx
# group = apache 修改為
group = nginx
啟動 php-fpm ,並加入開機自啟動
systemctl start php-fpm
systemctl enable php-fpm
MYSQL
安裝
解除安裝centos7中自帶的Mariadb
# 查詢出來已安裝的`Mariadb`
rpm -qa|grep mariadb
# 解除安裝`mariadb`,檔名為上述命令查詢出來的檔案
rpm -e --nodeps 程式名
檢視是否已經安裝了MySQL
rpm -qa | grep -i mysql
安裝MySQL
服務
wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
rpm -ivh mysql57-community-release-el7-8.noarch.rpm
yum -y install mysql-server
啟動
啟動 MySQL
,並加入開機自啟動
systemctl start mysqld
systemctl enable mysqld
修改預設root
密碼
首先用系統預設密碼登入資料庫
# 檢視預設密碼
grep 'temporary password' /var/log/mysqld.log
# 如顯示如下,則密碼是`#<eBwq;r)6f1`
2019-08-22T10:11:04.849557Z 1 [Note] A temporary password is generated for root@localhost: #<eBwq;r)6f1
登入資料庫,並修改密碼
mysql -u root -p
# 密碼強度滿足:陣列、字母、大小寫、特殊字元
set password for 'root'@'localhost'=password('K!7F9KTk*0eq');
FTP
安裝
# 檢視是否已安裝
rpm -qa | grep vsftpd
# 安裝
yum -y install vsftpd
# 配置使用者,如網站根目錄為 `/home/wwwroot`
useradd -s /sbin/nologin -d /home/wwwroot wwwuser
chown wwwuser:wwwuser /home/wwwroot -R
# 修改使用者密碼
passwd wwwuser
配置
編輯配置檔案
vi /etc/vsftpd/vsftpd.conf
修改如下
anonymous_enable=NO
userlist_enable=NO
allow_writeable_chroot=YES
chroot_local_user=YES
編輯檔案
vi /etc/pam.d/vsftpd
修改
# 在以下配置行前加 `#`註釋
auth required pam_shells.so
啟動
啟動 FTP
,並加入開機自啟動
systemctl start vsftpd
systemctl enable vsftpd
REDIS
Redis
是儲存在記憶體中的鍵值資料庫,常被用作快取應用,可選擇安裝
安裝
yum -y install redis
配置
新增密碼驗證,修改配置檔案
vi /etc/redis.conf
做如下修改
# 找到註釋:`#requirepass foobared`,在其下一行新增如下配置
requirepass 23z2MmTGYow%
# 其中,`23z2MmTGYow%` 即為資料庫密碼
啟動
啟動 Redis
,並加入開機自啟動
systemctl start redis
systemctl enable redis
本作品採用《CC 協議》,轉載必須註明作者和本文連結