安装和配置nginx
% apt-get update #更新安装库
% apt-cache search <name> #从安装库中查找安装包
若apt-get 列表中无nginx安装包:
将sources.backup.d/中的sources.list复制到sources.list.d/中。
% cd /etc/apt/
% cp sources.backup.d/sources.list sources.list.d/
% apt-get install nginx #安装nginx服务
% server nginx start #启动nginx
% ss -tnl 查看当前启动的服务及端口(若开启了80端口,则说明nginx安装成功,并启动)
% cd /etc/nginx #进入到nginx目录
% touch sites-available/<hostName> #在sites-available目录下创建<hostName>文件,并将vhost配置写入到<hostName>文件中。
Nginx.conf会读取/site-enabled/中的文件,/sites-available/为了方便保存不用的配置。启用的时候只要ln一下。
% cd site-enabled
% ln -s ../sites-available/<hostName> <hostName> #创建软链jiyiguanjia.cn 并连接到sites-available/<hostName>
重启nginx
% service nginx restart (或者:nginx -s reload)
将站点升级为https方式访问
https参考链接:
https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-16-04
https://www.nginx.com/blog/free-certificates-lets-encrypt-and-nginx/
注意事项:添加https要求网站必须为真实的域名解析到服务器。
(1)从github下载letsencrypt源码:
% git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
(2)% cd /opt/letsencrypt
(3)% sudo ./letsencrypt-auto
(4)修改网站配置信息
% cd /etc/nginx/sites-available/
% vim <hostName>
修改并保存。
重启nginx:
% sudo nginx -s reload
(5)
% cd /opt/letsencrypt
% ./letsencrypt-auto certonly -a webroot --webroot-path=/var/www/html -d example.com -d www.example.com
(6)再次修改网站配置信息
% cd /etc/nginx/sites-available/
% vim <hostName>
监听端口改为443 ssl ,添加一些https配置
listen 443 ssl;
server_name <hostName>;
root <webPath>;
index index.php;
ssl_certificate /etc/letsencrypt/live/<hostName>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<hostName>/privkey.pem;
修改并保存。
重启nginx,此时就可以使用https访问站点了
% sudo nginx -s reload
(7)编写脚本自动更新网站证书
在/opt/letsencrypt/目录下编写脚本lestencrypt-renewal
#!/bin/bash
log_file=/var/log/letsencrypt/renew.log
sudo /opt/letsencrypt/letsencrypt-auto renew -nvv --standalone > $log_file
if [ $? != 0 ]; then
sudo echo Automated renewal failed: > $log_file
exit 1
fi
sudo nginx -s reload
在/usr/local/bin/目录下添加两个软链
% ln -s /opt/letsencrypt/lestencrypt-renewal
% ln -s /opt/letsencrypt/lestencrypt-auto
通过crontab定时执行脚本即可定时自动更新网站证书。