步骤
安装php7.2
安装php
#安装yum必备工具 sudo yum install epel-release yum-utils #安装php7的安装源 sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm #配置php7安装源为7.2版本 sudo yum-config-manager --enable remi-php72 #安装必备php包 sudo yum install php-cli php-fpm php-mysql php-json php-opcache php-mbstring php-xml php-gd php-curl
因为我们选择了nginx作为服务器, 所以需要安装
php-fpm
.它相当于简易版服务器, 默认情况下它是以tcp协议监听9000端口. 所以我们对php-fpm进行配置, 让它能被nginx进行转发.
修改
/etc/php-fpm.d/www.conf
配置文件:#按这样修改就行,其他配置保持原样 user = nginx group = nginx listen = /run/php-fpm/www.sock listen.owner = nginx listen.group = nginx
因为linux强大的权限限制, 所以我们要更改
/var/lib/php
文件夹的所有者, 该文件夹包含了php的所有命令.
修改
/var/lib/php
的拥有组, 这样凡是nginx组的成员都能操作该文件夹sudo chown -R root:nginx /var/lib/php
重启php-fpm
sudo systemctl enable php-fpm sudo systemctl start php-fpm
安装wordpress
下载最新安装包并解压
sudo mkdir -p /usr/local/temp cd /usr/local/temp wget https://wordpress.org/latest.tar.gz tar xf latest.tar.gz
移动到自己喜欢的目录, 并修改该目录的权限
mv /usr/local/temp/wordpress /usr/local/ sudo chown -R nginx:nginx /usr/local/wordpress
配置nginx
我默认你有ssl证书, 不知道怎么申请证书, 点我了解用acme申请证书, 我以域名example.com
为例来讲解nginx配置:
#这个server就是监听80端口,当请求匹配到www.example.com和example.com, 重定向到https://www.example.com$request_uri.
#$request_uri是nginx自带的变量, 代表了请求路径.
#例如https://example.com/abc/d.html, $request_uri是/abc/d.html
server {
listen 80;
server_name www.example.com example.com;
return 301 https://www.example.com$repquest_uri;
}
#这个server是监听443端口, 并启用HTTP2协议, 该协议是http1.1的升级版, 有助于性能提升. 当请求匹配example.com时, 重定向到https://www.example.com$request_uri
#剩下都是固定配置,就是证书的位置
server {
listen 443 ssl http2;
ssl_certificate /root/my-tengxunyun/volumn/acme.sh/example.com/example.com.cer;
ssl_certificate_key /root/my-tengxunyun/volumn/acme.sh/example.com/example.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
server_name example.com
return 301 https://www.example.com$request_uri;
}
#这个server就是主要的,用来接收请求并转发
server {
listen 443 ssl http2;
# SSL parameters
ssl_certificate /root/my-tengxunyun/volumn/acme.sh/www.example.com/www.example.com.cer;
ssl_certificate_key /root/my-tengxunyun/volumn/acme.sh/www.example.com/www.example.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
# server_file_position
server_name www.example.com
root /usr/local/wordpress;
index index.php;
# log files
access_log /var/log/nginx/example.access.log;
error_log /var/log/nginx/example.error.log;
#当请求时/favicon.ico文件时,关闭日志
location = /favicon.ico {
log_not_found off;
access_log off;
}
#当请求是/robots.txt文件时,关闭日志
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
#对所有请求进行拦截,先试着找$uri这个文件,如果不存在就找$uri/目录,实在找不到就找/index.php?$args.
#$uri, $args是nginx内置的变量,对应请求的路径和参数
location / {
try_files $uri $uri/ /index.php?$args;
}
#如果还找不到,就匹配以.php结尾的文件,最终都找不到就报404错误
location ~ \.php$ {
try_files $uri =404;
#这个就是nginx转发的地址,前面设置的php-fpm监听的地方
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
#这个设置php文件寻找的路径是$document_root$fastcgi_script_name,也是nginx内置的变量
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
#对这些静态文件,关闭日志,并且设置能保存的最大期限
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires max;
log_not_found off;
}
}
总结
这就是wordpress+nginx的全攻略, 剩下就是装个mysql数据库, 就能愉快玩耍了!