平时自己部署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一键安装包,非常方便,安全和稳定性也不错。