前一个站点废弃好久了,重新搭建一个记录一下。
注册域名
域名注册商有很多,国内可以用阿里云、腾讯云等。
海外可以用 NameSilo、namecheap、GoDaddy 等。
不过国内需要实名才可以使用。
购买云服务器
国内阿里云、腾讯云也都可以买,不过要备案。
可以买阿里云香港的 VPS,不用备案。
海外可以买搬瓦工、Vultr、Conoha、Host1Plus、Linode 等。
服务器选了 Debian 作为操作系统,当然其他 Linux 也可以。再配置好防火墙和 SSH 服务,就可以了。
修改 DNS 记录
在域名注册商的域名管理页面为之前注册的域名添加一条 A 记录,指向用来搭建网站的 VPS。A 记录也就是一般用来指向 IPv4 地址的 DNS 记录。
之后等个几分钟,应该就可以正确解析了。
搭建 HTTP 服务
为了方便安装和管理,这里用 docker 来承载服务。
docker 的安装参照 https://docs.docker.com/engine/install/debian/。
这里用 nginx 创建 HTTP 服务。先拉取 nginx 镜像。
docker pull nginx
跑一个测试页面。
docker run --name nginx-http -d -p 80:80 nginx
配置防火墙。
ufw allow 80/tcp
这里用了 ufw 作为 iptables 命令前端,当然直接用 iptables 命令管理也是可以的。
如果能顺利访问 http 协议,就说明 HTTP 服务已经搭建好了
搭建 HTTPS 服务
HTTPS 服务就没有 HTTP 服务那样简单了。先要拿到 TLS 协议需要的证书才行。
大部分 TLS 证书提供商是要收费的,但一个非盈利组织创建的 Let’s Encrypt 项目为互联网提供了开放免费的证书颁发服务。通过 ACME 协议,就可以免费获取证书了。
该组织推荐使用 Certbot 作为 ACME 的客户端。这里用 docker 镜像免去安装步骤
docker pull certbot/certbot
安装 docker-compose 用来管理多个 docker 容器。
使用 nginx-certbot 项目脚本快速创建 HTTPS 服务。
docker-compose up
配置防火墙
ufw allow 443/tcp
验证下服务启动,就搭建完成了
证书管理
注册 ACME 账号
docker compose run --rm certbot register -m youmuorg@gmail.com --agree-tos
申请证书
docker compose run --rm certbot certonly --webroot -d n2.lyin.cc --webroot-path /var/www/certbot
列出证书
docker compose run --rm certbot certificates
自签名证书
生成私钥
openssl genrsa -des3 -out private.key 2048
openssl req -new > cert.csr
去除密码
openssl rsa -in privkey.pem -out key.pem
生成证书
openssl x509 -in cert.csr -out cert.pem -req -signkey key.pem -days 1001
参考
- [1] Boilerplate for nginx with Let’s Encrypt on docker-compose
- [2] Install Docker on Debian
- [2] Install Docker Compose
作者:lyincc
版权:本文采用 「CC BY 4.0」 知识共享许可协议进行许可。