Black White Cow
黑白牛的个人博客:分享技术、分享生活。人生苦短(Life is short, you need Python! ),别说废话(Talking is cheap, show me the codes!),新进小技术宅一枚,请多多关照!

基于LNMP安装配置WordPress

基于LNMP安装WordPress。

L:Linux (本人使用centOS 7.6)
N:NginX (本人使用1.17.9,截至2020年4月最新稳定版本为1.18.0)
M:MariaDB (本人使用10.4.12)
P:PHP (本人使用7.4)

一、LNMP安装篇:

1、L:安装Linux系统就不单独说了,买了VPS可以很方便的一键安装。

2、N:安装nginx的文章,本站有写过一篇,可以参看它来安装:
安装教程地址,点击查看

3、M:安装MariaDB,本站也有写过一篇,可以参看它来安装:
安装教程地址,点击查看

4、P:安装PHP,本站也也有写过一篇,可以参看它来安装:
安装教程地址,点击查看

5、下载WordPress并解压:

1
2
3
wget https://cn.wordpress.org/latest-zh_CN.tar.gz   #下载最新中文版WordPress
mv ./latest-zh_CN.tar.gz /home    #将压缩包移动至home下,你可以自由选择放在哪里
tar zxvf latest-zh_CN.tar.gz    #解压gzip文件到当前文件夹

二、LNMP配置篇:

我们首先来配置数据库,没有启动数据库服务的先要启动,然后用以下命令登录MariaDB:

1
2
3
4
systemctl start mariadb    #启动数据库服务
systemctl enable mariadb    #数据库开机自启
#已开启数据库并开启自启服务的忽略上面两命令
mysql -uroot -p    #登录数据库

接来下会提示你输入密码,请输入加固数据库时创建的密码,然后我们开始创建数据库:

1
2
3
4
5
CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;    #创建数据库 wordpress为数据库名称,可以自行设定,后面的为数据库编码
GRANT ALL ON wordpress.* TO 'wordpress'@'localhost' IDENTIFIED BY '单引号里创建数据库密码';    #创建用户和密码
FLUSH PRIVILEGES;    #刷新数据库权限
EXIT;    #退出
#切记不要忘记每行代码后要加分号“;”,否则命令不能识别

到这里数据库就创建完毕了,接下来我们来设置PHP-FPM。

它默认运行在本地回环127.0.0.1:9000端口,我们可以把它从TCP Socket接口改为Unix Socket接口:

1
vi /etc/php-fpm.d/www.conf    #打开并修改php-fpm的配置文件

找到Unix user/group of process 这个代码块,将user和group注释取消掉,填写为自己的用户组和用户名,我这里表示www用户组和其下的wordpress用户。这里根据实际情况建立,因为有可能以后会建立WordPress站点,所以可以建立一个专门的组和用户,不必照抄我的组和用户。

listen = /run/php-fpm/www.sock 说一下这个,如果你添加该行代码,表示php转发将采用unix socket模式如果你不想用它,请设置为listen = 127.0.0.1:9000 用本地回环tcp连接转发。

然后继续往下找,找到Set permissions for unix socket代码块,将listen.owner和listen.group注释取消掉,并和上图的用户组及用户对应(你根据自己的填写,不必非要和我示例的用户组和用户名相同)

到这里php-fpm就设置完毕了,记得重启一下服务:

1
2
systemctl restart php-fpm    #重启服务
systemctl enable php-fpm    #开机启动服务

最后我们来配置nginx:

如果需要使用使用https,请先参考使用certbot获取证书及相关设置:{传送门在此}

进入nginx安装目录下conf目录。打开并编辑nginx.conf

1
2
#先用cd 进入conf目录下
vi ./nginx.conf    #打开并编辑配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
user  wordpress www;    #用户名在前,www用户组在后,如果是没有添加用户和用户组报错。可以注释掉也不影响使用
worker_processes  1;    #我是1核的服务器所以填1进程  

#全局错误日志我用的warn警告 | error错误 | crit严重错误 |
error_log  logs/error.log  warn;
error_log  logs/error.log  error;
error_log  logs/error.log  crit;

#PID文件,储存nginx的PID信息,取消注释然后就不用动了
pid        logs/nginx.pid;


#这里添加一行最大连接数限制,然后将连接数改为65535
worker_rlimit_nofile 65535;
events {
     use  epoll    #多路复用
     worker_connections  65535;    #工作最大连接数
}


http {
     include       mime.types;    #设定mime类型,类型由mime.type文件定义,不用动它
     default_type  application/octet-stream;

     #把所有日志格式注释取消
     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                       '$status $body_bytes_sent "$http_referer" '
                       '"$http_user_agent" "$http_x_forwarded_for"';

     access_log  logs/access.log  main;
     
     #sendfile 打开
     #tcp_nopush 打开
     sendfile        on;
     tcp_nopush     on;

     #连接超时时间60就可以了
     #keepalive_timeout  0;
     keepalive_timeout  60;

     #gzip压缩打开
     gzip  on;

     #设定虚拟主机配置
     server {
         listen       80;    #侦听80端口
         server_name  www.thebwc.tech;    #定义域名,改成你自己的
         rewrite ^(.*) https://$server_name$1 permanent;   #如果你使用了https需要在普通的80端口写一条rewrite将基于http访问网站指向基于https访问网站,如果你没有使用https那么则不用添加本行!


         charset utf-8;

         access_log  logs/host.access.log  main;
         
         location / {
             root   html;
             index  index.html index.htm;    
         }

       
         error_page  404              /404.html;

         # redirect server error pages to the static page /50x.html
         #
         error_page   500 502 503 504  /50x.html;
         location = /50x.html {
             root   html;
         }

         #使用Apache代理PHP脚本请求,不用Apache的不用取消这块注释。
         # proxy the PHP scripts to Apache listening on 127.0.0.1:80
         #
         #location ~ \.php$ {
         #    proxy_pass   http://127.0.0.1;
         #}

         #如果你没有使用https,那么安装WordPress我们需要修改这里,先把下面的#注释取消掉,从location开始取消注释,如果你使用了https,那么80端口的server里除了填写域名和端口加上rewrite重定向以外本代码块不用再修改,直接跳到下方HTTPS代码块进行修改
         # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
         #
         location ~ \.php$ {
             root           html;    #这里填写你解压WordPress的绝对路径
             fastcgi_pass   127.0.0.1:9000;    #如果你使用tcp连接则不用修改若在php-fpm中unix socket使用则将"127.0.0.1:9000;"改为"unix:/run/php-fpm/www.sock;"
             fastcgi_index  index.php;
             fastcgi_param  SCRIPT_FILENAME  
/scripts$fastcgi_script_name;    #将/scripts改为$document_root
             include        fastcgi_params;  #到这里使用http模式80端口访问的话所有设置就配置完成了,直接ESC、:wq 保存修改即可
         }

         #禁止访问htaccess文件相关设置
         # deny access to .htaccess files, if Apache's document root
         # concurs with nginx's one
         #
         #location ~ /\.ht {
         #    deny  all;
         #}
     }
     #其他虚拟主机配置,如果需要多域名指向同一公网IP,需要设置这里,后面会讲到还可以将不同网站设置不同conf文件,一般不在主conf里面进行设置,现在单站点就不用动这里。
     # another virtual host using mix of IP-, name-, and port-based configuration
     #
     #server {
     #    listen       8000;
     #    listen       somename:8080;
     #    server_name  somename  alias  another.alias;
     #    location / {
     #        root   html;
     #        index  index.html index.htm;
     #    }
     #}
     #HTTPS协议配置,使用HTTPS协议的WordPress安装需要修改以下代码将server整段的注释取消
     # HTTPS server
     #
     server {
         listen       443 ssl http2;    #侦听443端口,使用ssl协议,如果未安装h2模块请将ssl后的http2删除
         server_name  www.thebwc.tech;    #域名,将我的域名换成你自己的域名
         ssl_certificate      cert.pem;    #证书路径
         ssl_certificate_key  cert.key;    #秘钥路径
         ssl_protocols TLSv1.2 TLSv1.3;    #设置加密协议
         ssl_session_cache    shared:SSL:20m;    #共享会话缓存设置20M
         ssl_session_timeout  60m;    #会话超时时间设置60分钟
         ssl_ciphers  ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;    #加密算法
         ssl_session_tickets  on;    #会话票证,开启能节省TLS握手开销
         ssl_prefer_server_ciphers  on;    #设置协商加密算法时,优先使用我们服务端的加密套件,而不是客户端浏览器的加密套件
         ssl_ecdh_curve secp384r1;
         location / {
             root   /home/wordpress;    #替换成你解压WordPress的绝对路劲,我这里以/home/wordpress 路径示范格式
             index  index.php index.html index.htm;    #定义加密首页索引的名称,一定要加上index.php
         }
     }
}

设置完毕后请cd到nginx的sbin目录下

1
2
./nginx -t    #测试配置文件是否有错误
./nginx -s reload    #优雅重启nginx

找到你解压WordPress的文件夹,有一个名为wp-config-sample.php的文件,我们把它复制为wp-config.php

1
cp ./wp-config-sample.php ./wp-config.php    #复制必须在WordPress解压文件夹下,否则请将路径替换为绝对路径

打开并修改里面的配置

1
vi wp-config.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<?php
/**
 * WordPress基础配置文件。
 *
 * 这个文件被安装程序用于自动生成wp-config.php配置文件,
 * 您可以不使用网站,您需要手动复制这个文件,
 * 并重命名为“wp-config.php”,然后填入相关信息。
 *
 * 本文件包含以下配置选项:
 *
 * * MySQL设置
 * * 密钥
 * * 数据库表名前缀
 * * ABSPATH
 *
 * @link https://codex.wordpress.org/zh-cn:%E7%BC%96%E8%BE%91_wp-config.php
 *
 * @package WordPress
 */


// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
/** WordPress数据库的名称 */
define( 'DB_NAME', '这里输入你创建的数据库名称' );

/** MySQL数据库用户名 */
define( 'DB_USER', 'root' );

/** MySQL数据库密码 */
define( 'DB_PASSWORD', '你创建的数据库密码' );

/** MySQL主机 */
define( 'DB_HOST', 'localhost' );

/** 创建数据表时默认的文字编码 */
define( 'DB_CHARSET', 'utf8' );

/** 数据库整理类型。如不确定请勿更改 */
define( 'DB_COLLATE', '' );

/**#@+
 * 身份认证密钥与盐。
 *
 * 修改为任意独一无二的字串!
 * 或者直接访问{@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org密钥生成服务}
 * 任何修改都会导致所有cookies失效,所有用户将必须重新登录。
 *
 * @since 2.6.0
 */

define( 'AUTH_KEY',         'put your unique phrase here' );
define( 'SECURE_AUTH_KEY',  'put your unique phrase here' );
define( 'LOGGED_IN_KEY',    'put your unique phrase here' );
define( 'NONCE_KEY',        'put your unique phrase here' );
define( 'AUTH_SALT',        'put your unique phrase here' );
define( 'SECURE_AUTH_SALT', 'put your unique phrase here' );
define( 'LOGGED_IN_SALT',   'put your unique phrase here' );
define( 'NONCE_SALT',       'put your unique phrase here' );

/**#@-*/

/**
 * WordPress数据表前缀。
 *
 * 如果您有在同一数据库内安装多个WordPress的需求,请为每个WordPress设置
 * 不同的数据表前缀。前缀名只能为数字、字母加下划线。
 */

$table_prefix = 'wp_';

/**
 * 开发者专用:WordPress调试模式。
 *
 * 将这个值改为true,WordPress将显示所有用于开发的提示。
 * 强烈建议插件开发者在开发环境中启用WP_DEBUG。
 *
 * 要获取其他能用于调试的信息,请访问Codex。
 *
 * @link https://codex.wordpress.org/Debugging_in_WordPress
 */

define('WP_DEBUG', false);

/* 好了!请不要再继续编辑。请保存本文件。使用愉快! */

/** WordPress目录的绝对路径。 */
if ( ! defined( 'ABSPATH' ) ) {
    define( 'ABSPATH', dirname( __FILE__ ) . '/' );
}

/** 设置WordPress变量和包含文件。 */
require_once( ABSPATH . 'wp-settings.php' );

到这里就配置就结束了,请用输入www.example.com/wp-admin/install.php进入5分钟安装设置界面(请将www.example.com替换为自己的域名)。出现WordPress配置界面即部署成功。

简单设置用后台户名和密码后提示创建成功后,即可通过你的域名来登录WordPress站点了!到这里教材已全部结束。

Share

sakura669

Mihoyo save tech otakus

You may also like...

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

%d 博主赞过: