前言
在上一篇文章中,我们完成了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 ok
nginx: 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.git
cd 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.git
scp -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证书的配置以及自动续期