建站过程
记录个人网站的建站过程。
购买服务器
个人服务器 99 一年的完全够用了,阿里云99元服务器,以后会不会涨价不知道,每年有一次 99 续一年的机会。另外腾讯也有类似活动,腾讯云,视个人喜好购买。
网站发布
本节默认你已经准备好了自己要发布的网站内容,本网站使用 Docusaurus 构建,内容使用 Markdown 编写。
登录服务器
有多种方式可以登录服务器,详见 ECS远程连接方式概述
总结来说大概两种:
- 浏览器在线连接;需要先登录阿里云账号(登录后进入控制台,找到服务器实例,点击远程连接)
- 通过 SSH 连接;需要先设置服务器密码(可进入阿里云控制控制台,找到服务器实例,点击重置密码,详细教程),然后使用 SSH 客户端连接。
SSH 客户端多种多样,最简单的是用系统自带的,在 命令行
中输入 ssh root@123.123.123.123
(换成自己服务器的公网 ip),然后输入密码,即可连接到服务器(首次登录可能需要输入 yes 信任服务器)。不想记 ip 地址可以把这行命令保存成 bat 文件,密码也不想敲的话可以使用其他客户端。
安装 nginx
Docusaurus 构建出的是静态页面,需要一个 web 服务器来支持访问,这里使用 nginx。
# 安装
yum install nginx
# 启动
systemctl start nginx
# 测试本地访问,以下命令能获取到html内容说明nginx启动成功
curl localhost
安全组配置
此时网站服务只能服务器本机访问,需要配置安全组,允许公网访问。
在阿里云控制台,找到服务器实例,点击 安全组
,然后点击 配置规则
,在 入方向
添加规则:
优先级 | 协议 | 端口范围 | 授权对象 |
---|---|---|---|
100 | 自定义 TCP | 80 | 源:所有IPv4(0.0.0.0/0) |
100 | 自定义 TCP | 443 | 源:所有IPv4(0.0.0.0/0) |
其中 443 端口是 https 的默认端口,80 端口是 http 的默认端口。
在浏览器中输入 http://123.123.123.123
(换成自己服务器的公网 ip),如果能访问到 nginx 的 Welcome 页面,说明安全组配置成功。
上传代码
服务器上传和下载文件的方式有多种,详见 上传或下载文件
这里以 scp
命令为例,在本机的命令行中执行以下命令将编译好的代码上传到服务器的 /var/www/html
目录下:
# 上传
scp -r d:/path-to-your-website/build root@123.123.123.123:/var/www/html
-r
表示递归上传整个目录,root
是用户名,123.123.123.123
替换成自己的服务器公网 ip,/var/www/html
是服务器上网站根目录。
修改 nginx 配置
主要是将 nginx.conf 文件中的 root /usr/share/nginx/html;
修改为 root /var/www/html;
可以上服务器直接修改 nginx 配置:
vim /etc/nginx/nginx.conf
也可以先把配置文件下载到本地,修改后再上传到服务器。
# 下载
scp root@123.123.123.123:/etc/nginx/nginx.conf d:/
# 用记事本修改
# 上传
scp d:/nginx.conf root@123.123.123.123:/etc/nginx/nginx.conf
会发现 scp 每次上传或下载文件都要输入密码,不适合频繁操作,此时可以使用 sftp :
# 登录
sftp root@123.123.123.123
# 下载
get /etc/nginx/nginx.conf d:/
# 上传
put d:/nginx.conf /etc/nginx/
# 退出
exit
另外 sftp 可以借助一些可视化客户端工具操作更方便,比如 FileZilla
修改完成后,不要忘了进服务器重启 nginx :
systemctl restart nginx
在浏览器中输入 http://123.123.123.123
(换成自己服务器的公网 ip),测试是否成功,可能会有缓存,可以 Ctrl + F5 强制刷新一下浏览器。
注册域名
此时网站只能通过 ip 地址访问,不方便记忆和传播,这时候可以购买一个域名,阿里云域名,不同后缀只是价格不同,使用上没区别,视自己经济情况购买。
ICP 备案
域名买完不能直接使用,首先需要 ICP 备案,阿里云 ICP 备案,详细教程请看 ICP备案流程
域名解析
ICP 备案完成后需要配置域名解析,将域名和服务器 ip 地址绑定,以阿里云为例,进 域名控制台 > 域名列表 > 操作 > 解析 ,然后点【添加记录】,每一项怎么填都会有提示。
公网备案
此时网站可以正常访问,但还需要进行公网备案,公网备案官网,在首页先下载《网站备案指引》,然后按照指引一步步来 。阿里云上也有详细教程 公安联网备案快速入门
支持 https
nginx 开启 https 配置
安装证书
证书有收费的也有免费的,收费证书可以上 阿里云数字证书 购买,个人网站免费的就够用了。
以下是免费证书 Let's Encrypt 的安装命令,将域名改成自己的:
sudo yum install certbot
sudo yum install python3-certbot-nginx
sudo certbot --nginx -d huangyongcheng.top -d www.huangyongcheng.top
注意,nginx 的 server_name 配置要与上面命令中的域名一致,不然无法安装证书
server_name huangyongcheng.top www.huangyongcheng.top
成功后会输出证书保存路径:
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/huangyongcheng.top/fullchain.pem
Key is saved at: /etc/letsencrypt/live/huangyongcheng.top/privkey.pem
如果失败了修改 nginx 配置后再执行:
certbot install --cert-name huangyongcheng.top
总结
以上就是是自己搭建个人网站的过程,只需具备前端知识和一点点服务器知识,就可以搭建一个属于自己的网站了。
当然发布过程还是有点繁琐,有很多方式可以让发布更优雅:
- github webhook 实现自动部署 (笔记待补充)
- jenkins 部署 (笔记待补充)
- docker 部署 (笔记待补充)