前言
在上一篇文章中,我们完成了Ubuntu服务器的初始化,完成了ssh的配置以及apt源的更换,详情请传送,由于,vps的配置比较低,所以只准备在服务器上面放一些html+css+js相关的内容,只它用来执行轻量级的任务
安装nginx
前提
安装nginx之前,请参考前一篇教程更换系统软件源
安装
使用下面的命令安装nginx
sudo apt install -y nginx查看进程
安装完毕后,可以通过下面的命令查看nginx的状态
sudo systemctl status nginx看到如下内容
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled) Active: active (running) since Fri 2025-03-14 15:00:04 UTC; 7min ago Docs: man:nginx(8) Process: 5711 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 5718 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 5725 (nginx) Tasks: 2 (limit: 1035) Memory: 1.7M (peak: 1.9M) CPU: 32ms CGroup: /system.slice/nginx.service ├─5725 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;" └─5726 "nginx: worker process"看到如下内容,则代表nginx服务已启动
Active: active (running) since如果看到如下内容,则代表nginx服务未启动
Active: inactive (dead)可以使用下面的下面的命令启动nginx
sudo systemctl start nginx查看服务是否开机启动
如果在使用上面命令查看nginx状态的时候看到如下内容,则代表服务的开机自启已启用
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled)如果在使用上面命令查看nginx状态的时候看到如下内容,则代表服务的开机自启未启用启用
Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; preset: enabled)可以使用下面的命令启用nginx的开机启动
sudo systemctl enable nginx新增站点
在nginx中,站点配置是通过.conf文件进行配置的,当我们需要新增网站时,需要通过编写conf文件来进行新增网站
下面是一个标准的nginx静态前端的模板
server { listen 80; # 监听端口,一般默认http端口为80 server_name www.bitnet.fun bitnet.fun; # 监听域名,只有域名和server_name匹配,才会进入这个配置中 root /root/web/bitnet.fun; # 页面文件所在的目录 location / { index index.html; # 默认的主页文件类型 try_files $uri $uri/ /index.html; # 伪静态 }}nginx的配置文件的每一行末尾都需要有分号,#开头的为注释
我们可以将上面的文件保存在/etc/nginx/sites-available目录中
例如保存为/etc/nginx/sites-available/bitnet.fun.conf
但是/etc/nginx/sites-available目录中的配置文件默认是未被启用的配置文件,此时,我们需要在/etc/nginx/sites-enabled目录中创建一个软链接,以启用上面的配置
ln -s /etc/nginx/sites-available/bitnet.fun.conf /etc/nginx/sites-enabled/bitnet.fun.conf此时,我们需要测试nginx配置文件是否全部正确,不正确的配置文件会导致nginx服务崩溃导致所有页面全部无法访问
nginx -t如果,看到的结果是
nginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful则表示nginx配置文件无误,可以通过下面的命令使配置文件生效
nginx -s reload如果配置文件有误,可以根据返回的内容修改对应的文件位置
配置ssl证书自动续期
为了打开网站的https使网站更加安全,我们需要使用ssl证书对网站进行保护,但是现在免费的ssl证书只有90天,也就是每90天就需要更换ssl证书进行重新部署
配置完ssl证书的自动续期后,就可以一次配置一直保持网站的https不失效
创建腾讯云子账号并获取SecretId和SecretKey
登陆腾讯云并打开https://console.cloud.tencent.com/cam
- 点击新建用户
- 点击快速创建
- 输入用户名
- 修改访问方式为编程访问
- 修改用户权限为QcloudDNSPodFullAccess
- 点击创建用户
- 保存当前用户的
SecretId和SecretKey
使用acme.sh配置证书自动续期
根据https://github.com/acmesh-official/acme.sh/wiki/%E8%AF%B4%E6%98%8E的官方说明,安装并配置对应的域名服务商
获取acme.sh
curl https://get.acme.sh | sh -s email=gaze@bitnet.fun如果是大陆的服务器,可能会遇到下面的报错
curl: (7) Failed to connect to raw.githubusercontent.com port 443 after 3 ms: Couldn't connect to server官方给出的解决方案是
git clone https://gitee.com/neilpang/acme.sh.gitcd acme.sh./acme.sh --install -m email=gaze@bitnet.fun但是,当我申请ssl证书的时候,遇到了一个报错
Can not find dns api hook for: dns_tencent这个时候我才发现https://gitee.com/neilpang/acme.sh.git的项目已经停更三年了,导致版本大幅落后于官方版本,最终还是本地拉下来之后使用scp上传到服务器的
git clone git@github.com:acmesh-official/acme.sh.gitscp -r acme.sh nat:~/apps我申请了多个域名的ssl证书,步骤如下
# 设置环境变量export Tencent_SecretId="<Your SecretId>"export Tencent_SecretKey="<Your SecretKey>"
# 进入acme.sh目录执行证书申请cd ~/apps/acme.sh./acme.sh --issue --dns dns_tencent -d bitnet.fun -d *.bitnet.fun -d *.api.bitnet.fun返回结果
[Sun Mar 16 04:52:19 PM UTC 2025] Your cert is in: /root/.acme.sh/bitnet.fun_ecc/bitnet.fun.cer[Sun Mar 16 04:52:19 PM UTC 2025] Your cert key is in: /root/.acme.sh/bitnet.fun_ecc/bitnet.fun.key[Sun Mar 16 04:52:19 PM UTC 2025] The intermediate CA cert is in: /root/.acme.sh/bitnet.fun_ecc/ca.cer[Sun Mar 16 04:52:19 PM UTC 2025] And the full-chain cert is in: /root/.acme.sh/bitnet.fun_ecc/fullchain.cer配置nginx的ssl证书
server { listen 80; # 监听端口,一般默认http端口为80 server_name www.bitnet.fun bitnet.fun; # 监听域名,只有域名和server_name匹配,才会进入这个配置中 location / { return 301 https://$server_name$request_uri; # 将http请求重定向到https请求 }}
server { listen 443 ssl; # 启用ssl server_name www.bitnet.fun bitnet.fun;
ssl_certificate /root/.acme.sh/bitnet.fun_ecc/fullchain.cer; ssl_certificate_key /root/.acme.sh/bitnet.fun_ecc/bitnet.fun.key;
root /root/web/bitnet.fun; # 页面文件所在的目录 location / { index.html; # 默认的主页文件类型 try_files $uri $uri/ /index.html; # 伪静态 }}测试nginx配置文件是否全部正确
nginx -t如果nginx配置文件无误,可以通过下面的命令使配置文件生效
nginx -s reload到此,已经完成了nginx的安装和虚拟主机的配置,也包括了ssl证书的配置以及自动续期