概述
Ubuntu 16.04 安装 WordPress 主要分三步:安装 Nginx 并解析域名 ,安装 PHP ,安装 MySQL。在此基础上本文还扩充了添加SSL证书、www跳转到主域名、域名的DNS解析等内容。
安装 Nginx 并解析域名
首先,更新依赖包:
切换到root账户,否则更新包会有如下错误
ubuntu@VM-ubuntu:~$ apt-get update
Reading package lists... Done
W: chmod 0700 of directory /var/lib/apt/lists/partial failed - SetupAPTPartialDirectory (1: Operation not permitted)
E: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied)
E: Unable to lock directory /var/lib/apt/lists/
W: Problem unlinking the file /var/cache/apt/pkgcache.bin - RemoveCaches (13: Permission denied)
W: Problem unlinking the file /var/cache/apt/srcpkgcache.bin - RemoveCaches (13: Permission denied)
切换到 root 账户
sudo su
更新依赖包:
apt-get install update
等待更新完毕!安装 Nginx
apt-get install nginx
安装过程中如果提示(Y/N)的时候,一律输入y
此时,在浏览器中输入IP地址,如果安装成功,则可以看到默认的 Nginx 页面:

然后,设置域名的DNS解析

解析成功后,在浏览器输入域名可以看到刚才的 Nginx 默认页。
最后,修改 Nginx 配置文件
配置文件路径:/etc/nginx/sites-available/default
......
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
......
修改36行的 root /var/www/html;
为 root /var/www/myblog;
添加SSL证书
申请免费SSL证书:
申请步骤:
输入要申请证书的域名:

按照要求,验证域名所有权:

验证完成,下载证书文件。
证书文件
证书文件包含两个:

这两个文件的含义是:
文件名 | 内容 |
---|---|
cert.pem | 服务端证书 |
chain.pem | 浏览器需要的所有证书但不包括服务端证书,比如根证书和中间证书 |
full_chain.pem | 包括了cert.pem和chain.pem的内容 |
private.key | 证书的私钥 |
一般情况下full_chain.pem和private.key就够用了
Nginx 安装SSL 证书
创建ssl证书目录:
cd /etc/nginx
mkdir ssl
在此路径下添加两个文件:
root@VM-ubuntu:/etc/nginx/ssl# vim mydomain.crt
root@VM-ubuntu:/etc/nginx/ssl# vim mydomain.key
mydomain.crt 对应文件 full_chain.pem 中的内容。
__mydomain.key __对应文件 private.key 中的内容。
修改站点配置文件,启用SSL证书
编辑站点配置文件:
root@VM-ubuntu:/etc/nginx/sites-available# vim default
服务器部分,注释掉80端口监听,开启443端口监听并指定SSL证书路径:
server {
#listen 80 default_server;
#listen [::]:80 default_server;
# SSL configuration
#
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
ssl on;
ssl_certificate /etc/nginx/ssl/mydomain.crt;
ssl_certificate_key /etc/nginx/ssl/mydomain.key;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
........
修改完成后,检查配置文件语法并重启服务器:
root@VM-ubuntu:/etc/nginx/sites-available# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
root@VM-ubuntu:/etc/nginx/sites-available# service nginx restart
刷新浏览器后,可以查看证书信息:

网站安全性检查
检查网站安全性等级:https://www.ssllabs.com
Test your server:

SSL A+配置
生成一个 DH group。
sudo openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048
再来就是针对 SSL 做一些自定义的设置:(添加 Security enhancements 中的内容)
# SSL configuration
#
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
ssl on;
ssl_certificate /etc/nginx/ssl/rqc.im.crt;
ssl_certificate_key /etc/nginx/ssl/rqc.im.key;
##### Security enhancements begin
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 1.1.1.1 114.114.114.114 valid=300s;
resolver_timeout 5s;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
##### Security enhancements end
修改完成后,检查配置文件语法并重启服务器:
root@VM-ubuntu:/etc/nginx/sites-available# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
root@VM-ubuntu:/etc/nginx/sites-available# service nginx restart
重新测试网站SSL等级:

http 跳转到 https
默认安装完成之后,如果用户打开 http://mydomain 页面会显示错误,不会自动跳转到https。
解决方式是:多曾加一个 server block,监听 80 端口,返回 301 重定向。
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name mydomain.com www.mydomain.com;
return 301 https://$server_name$request_uri;
}
设置完成之后,同样检查语法,重启Nginx:
root@VM-ubuntu:/etc/nginx/sites-available# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
root@VM-ubuntu:/etc/nginx/sites-available# service nginx restart
安装 PHP 7.2
首先添加 PPA
sudo apt-get update
sudo apt-get install software-properties-common
sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php
sudo apt-get update
然后,安装 PHP7.2
sudo apt-get -y install php7.2-fpm php7.2-common php7.2-mbstring php7.2-xmlrpc php7.2-gd php7.2-xml php7.2-mysql php7.2-cli php7.2-zip php7.2-curl
安装完毕之后配置 php-fpm :
vim /etc/php/7.2/fpm/php.ini
//;cgi.fix_pathinfo=1 改为
cgi.fix_pathinfo=0
安装 MySQL 5.7
输入安装命令:
sudo apt-get install mysql-server
期间需要设置mysql密码
查看安装的版本:
mysql --version
检查MySQL的运行状态:
sudo systemctl status mysql
登录Mysql
$ mysql -u root -p
Enter Password:
在 mysql 执行:
CREATE DATABASE myblog DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE USER 'blogname' IDENTIFIED BY 'blogpwd';
GRANT ALL PRIVILEGES ON myblog.* TO 'blogname';
FLUSH PRIVILEGES;
EXIT;
MySQL 常用命令(了解)
停止MySQL服务:
sudo systemctl stop mysql
MySQL的启动命令:
sudo systemctl start mysql
MySQL重启命令:
sudo systemctl restart mysql
设置MySQl安全服务(了解)
命令行环境执行:
mysql_secure_installation
设置步骤:
- 第一步是启用密码验证插件 Y
- 验证级别:2
- 用户当前的密码强度是50,可以选择修改密码,此处可以选择忽略。
- 移除匿名用户:y
- root账户只允许本地登录:y
- 移除默认的test数据库:y
- 重新加载权限表
重新配置 Nginx
vim /etc/nginx/sites-available/default
打开配置文件,配置:
server {
listen 80;
listen [::]:80;
root /var/www/wordpress;
index index.php index.html index.htm index.nginx-debian.html;
# 注意我们添加了 index.php
server_name example.com www.example.com;
client_max_body_size 100M;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
安装 WordPress
下载 WordPress 安装包解压后上传到网站目录(此处可参考我的另一篇文章《腾讯云主机 Ubuntu 系统使用 sftp 上传文件》)。
可以在浏览器中一步步按照指示安装。
也可以复制 wp-config-sample.php
修改名称为 wp-config.php
打开 wp-config.php
文件:
配置数据库连接字符串:
// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
/** WordPress数据库的名称 */
define('DB_NAME', '数据库名称');
/** MySQL数据库用户名 */
define('DB_USER', '登录用户');
/** MySQL数据库密码 */
define('DB_PASSWORD', '登录密码');
/** MySQL主机 */
define('DB_HOST', 'localhost');
/** 创建数据表时默认的文字编码 */
define('DB_CHARSET', 'utf8');
/** 数据库整理类型。如不确定请勿更改 */
define('DB_COLLATE', '');
另外添加如下配置:
/* 配置 WordPress 文件上传 */
define('FS_METHOD', 'direct');
define('FS_CHMOD_DIR', 0777);
define('FS_CHMOD_FILE', 0777);
设置完成,打开浏览器。
本文为原创文章,转载请注明出处!欢迎关注任前程博客 https://renqiancheng.com/,第一时间看后续精彩文章。
网友评论