基于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站点了!到这里教材已全部结束。