如何在Ubuntu上手动部署适合Wordpress的LNMP环境,并安装SSL证书?
平时自己部署LNMP环境的时候都是一遍弄一遍查资料,非常麻烦。于是我就想把我平时的工作做一个总结,这样以后自己在部署的时候不用再到处找资料。
1.更新系统
apt update
apt upgrade
2.添加非root用户并设置sudo
#新建用户
adduser your_user
#给新建用户添加sudo权限
adduser your_user sudo
3.设置SSH证书登陆,并禁止密码和root用户登陆
#上传公匙
ssh-copy-id -i ~/.ssh/id_rsa.pub remote_user@remote_ip
#编辑SSH设置文件
sudo vi /etc/ssh/sshd_config
PermitRootLogin no #禁止root登陆
PasswordAuthentication no #禁止使用密码登陆
#重启SSH服务
sudo service ssh restart
在重启前记得测试一下是否可以用证书正常登录,再重启SSH服务。如果你还是不太明白可以看《Ubuntu服务器需要做哪些安全设置》
4.安装Nginx并优化
#安装Nginx
sudo apt install nginx
#编辑Nginx配置文件
sudo vi /etc/nginx/nginx.conf
#修改或添加以下内容
#开启gzip
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_disable "MSIE [1-6]\.";
#开启Nginx缓存
location ~* ^.+\.(eot|ttf|otf|woff|svg)$ {
access_log off;
expires max;
}
location ~* ^.+\.(ico|gif|jpg|jpeg|png)$ {
access_log off;
expires 30d;
}
location ~* ^.+\.(css|js|txt|xml|swf|wav)$ {
access_log off;
expires 2d;
}
location ~* ^.+\.(html|htm)$ {
expires 1h;
}
#保存退出
#重启Nginx服务
sudo service nginx restart
5.安装MySQL并优化
sudo apt install mysql-server-5.7
sudo mysql_secure_installation
sudo mysql
SELECT user,authentication_string,plugin,host FROM mysql.user;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password’; #password 改成你的强密码
#这里为你的网站添加一个数据库
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
#设置数据库的用户名和密码
GRANT ALL ON wordpress.* TO 'yourusername'@'localhost' IDENTIFIED BY 'yourpassword';
FLUSH PRIVILEGES;
exit; #退出MySQL
这里主要是安装并设置MySQL,修改root密码
6.安装PHP和必备插件
#安装PHP以及wordpress必需的插件
sudo apt install php-fpm php-mysql php-curl php-gd php-intl php-mbstring php-soap php-xml php-xmlrpc php-zip
#编辑php.ini
sudo vi /etc/php/7.2/fpm/php.ini
#找到cgi.fix_pathinfo并修改为cgi.fix_pathinfo=0
#编辑Opcache配置文件
sudo vi /etc/php.d/opcache.ini
#修改以下内容
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=1
#保存退出
#安装redis
sudo apt install redis
#启动redis
systemctl start redis.service
#重启PHP
sudo service php7.2-fpm restart
#重启Nginx
sudo service nginx restart
7.设置虚拟主机并测试工作
sudo vi /etc/nginx/sites-available/huwencai.com #新建虚拟主机配置文件
#添加一下内容:
server
{
listen 80;
listen [::]:80; ## listen for ipv6
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name huwencai.com www.huwencai.com;
location /
{
try_files $uri $uri/ =404; }
location ~ .php$
{
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}
location ~ /.ht
{
deny all;
}
}
#保存退出
sudo nginx -t #检查配置文件有何错误
sudo ln -s /etc/nginx/sites-available/huwencai.com /etc/nginx/sites-enabled/
sudo systemctl reload nginx
sudo vi /var/www/html/info.php #在网站目录添加一个php文件
#添加一下内容
<?php
phpinfo();
#保存退出
#访问这个文件看是否能够正常运行,如果可以正常运行
sudo rm -f /var/www/html/info.php #切记删除它
8.安装Let’sEncrypt
sudo add-apt-repository ppa:certbot/certbot
sudo apt install python-certbot-nginx
sudo certbot --nginx -d huwencai.com -d www.huwencai.com
#一路同意yes就行
sudo vi /etc/nginx/sites-available/huwencai.com #修改虚拟主机配置
#修改为以下内容
server {
listen 80;
listen [::]:80; ## listen for ipv6
server_name huwencai.com www.huwencai.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2; # managed by Certbot
server_name huwencai.com www.huwencai.com;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
location = /favicon.ico { log_not_found off; access_log off; }
location = /robots.txt { log_not_found off; access_log off; allow all; }
location ~* \.(css|gif|ico|jpeg|jpg|js|png|woff)$ {
expires max;
log_not_found off;
}
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}
location ~ /\.ht {
deny all;
}
ssl_certificate /etc/letsencrypt/live/huwencai.com/fullchain.pem; # managed $
ssl_certificate_key /etc/letsencrypt/live/huwencai.com/privkey.pem; # manage$
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
#保存退出
sudo nginx -t #检查配置
sudo service nginx restart #重启nginx服务
#这里检验以下SSL有没有起效
#letsencrypt一般90天就得过期,这里设置自动更新
sudo crontab -e
18 18 * * 1 certbot renew --post-hook "systemctl reload nginx
9.设置防火墙
sudo ufw allow 22
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
sudo ufw status
10.安装Wordpress并优化
cd /tmp
wget https://wordpress.org/latest.tar.gz
tar xzvf latest.tar.gz
sudo cp -a /tmp/wordpress/. /var/www/html
sudo chown -R www-data:www-data /var/www/html
#访问你的域名完成安装
#安装Redis Object Cache插件,拷贝object-cache.php到wp-content目录
cp wordpress/wp-content/plugins/redis-cache/includes/object-cache.php wordpress/wp-content/object-cache.php
#刷新网站然后测试缓存工作没有
redis-cli -h 127.0.0.1 -p 6379
Wordpress的安装已经完成了,下面就是Wordpress的优化,大家可以访问《我用的WordPress 速度优化方法》了解详细信息。
11.总结
其实完全自己动手部署适合Wordpress的LNMP环境根本就没有必要了。如果是想自己多学习点东西,可以试试。如果是平时的工作中还不如用军哥的LNMP一键安装包,非常方便,安全和稳定性也不错。