如果你需要搭建一个自己的网站或博客,你需要做以下的工作
一、购买服务器,购买域名
1. 购买服务器
购买服务器可以在腾讯云上购买,选择自己所需的服务器,登陆购买即可(选择服务器去时选择 OpenCloudOS)。
2. 购买域名
在腾讯云域名注册页面,输入你想要的域名关键字,过滤掉被注册的域名,然后选择你喜欢的域名进行购买
点击购买后,到订单页面,如果是第一次购买,需要新创建一个模版,创建完后选择模版,勾选协议付费购买即可
购买完后可以在腾讯云的控制台可以看到所购买的域名与服务器。
二、服务器安装 docker 和 nginx
1. 登陆服务器
登陆服务器可以使用腾讯云提供的登录按钮直接登录或者使用 ssh 进行登录(使用腾讯云提供的登录比较简单,我就直接使用官方提供的登陆在浏览器中登录)
点击登陆后,会提示使用微信扫码登录,登录后就可以获取一个远程服务器终端页面
2. 安装 docker
- 为了防止旧版 docker 的影响,需要卸载干净旧版的 docker,如果是干净的系统不需要卸载。卸载命令如下
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
- 设置 docker 的存储库
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- 安装 docker、engine 和 docker-compose
sudo yum -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
输入命令会车后看到 success 提示后,输入 docker -v
,得到版本信息,说明安装成功了。输入docker compose version
,也输出了版本号,说明也安装成功了。
- 启动 docker
sudo systemctl start docker
3. docker 安装 nginx
- 使用 docker 下载 nginx 镜像
// 下载最新版本
docker pull nginx
// 下载指定版本(XXX表示具体版本号)
docker pull nginx:XXX
下载完后使用 sudo docker images
命令查看镜像,如下图说明下载成功
- 创建 nginx 配置文件
- 在启动前需要先创建 nginx 外部挂载文件
// 创建挂载目录
sudo mkdir -p /home/nginx/conf
sudo mkdir -p /home/nginx/log
sudo mkdir -p /home/nginx/html
- 使用 docker 先启动一个没有挂载外部文件的 nginx,将容器中的 nginx 配置复制到外部需要挂载到文件中,然后删除掉这个临时创建的 nginx 服务
// 生成容器
sudo docker run --name nginx -p 8080:80 -d mynginx
// 将docker容器conf.conf文件复制到宿主机
sudo docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
sudo docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
sudo docker cp nginx:/usr/share/nginx/html /home/nginx/
- 复制完文件后将刚运行的容器关闭并移除 查找运行的容器
// 查看docker运行的容器
sudo docker ps
复制如下容器 id
// 关闭容器
sudo docker stop 2b256640ddd2
// 删除该容器
sudo docker rm 2b256640ddd2
- 如果要删除正在运行的容器,可使用以下命令
sudo docker -rm -f 2b256640ddd2
- 重新使用 docker 启动 nginx,命令如下
docker run -p 80:80 --name nginx -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/conf/conf.d:/etc/nginx/conf.d -v /home/nginx/log:/var/log/nginx -v /home/nginx/html:/usr/share/nginx/html -d nginx:latest
- 检查结果 在浏览器输入服务器地址,出现 Welcome to nginx! 页面说明 nginx 安装成功 如果浏览不成功。打开腾讯云,找到防火墙模版,创建一个模版 端口号设置为 80 端口即可 然后设置实例,选择服务器,勾选协议,点击确定即可,然后再次访问服务器 IP 地址
三、使用 astro 开源项目创建自己的 blog
- 待以上都完成后并且可以成功访问 nginx 服务器的页面,接下来可以找个 blog 模版项目进行修改(开源项目很多可以直接使用,如果时间允许也是可以自己开发一个),此处推荐使用 astro,根据astro 文档下载项目即可。
下载到本地项目后可以根据自己的需求对项目进行改进,然后执行npm run build命令打包得到 dist
文件为。
-
写文章可以使用 markdown 文件格式,也可以使用官方提供的 MDX
-
如果对 astro 默认的主题不满意,可以在 astro 主题 上寻找自己喜欢的主题,将喜欢的主题项目从 github 上下载到本地即可。
四、部署项目
- 将打包好后的 dist 文件压缩成 dist.zip 文件(也可以是其他压缩格式的文件)
- 使用腾讯云提供的中端页面上传到服务器的某个文件中
- 在服务器命令终端使用 cd 到上传的文件目录下,使用
unzip dist.zip
对上传的文件进行解压 - 使用
sudo cp -r -f /xxx/xxx/dist/* /home/nginx/html
将加压后的文件复制到 nginx 下的 html 文件中即可,浏览器打开服务器地址访问即可
【暂时使用手动部署,后续会将自动部署文档补上】
五、 DNS 解析
-
腾讯云搜索 dns,然后选择云解析 DNS,如图
-
跳转到域名列表,点击域名上的解析
-
点击快速解析
-
选择腾讯云资源->轻量应用服务器->选择需要解析的服务器->点击确定即可 解析完后,浏览器输入你的域名就可以看到你部署的 blog
六、 SSL 配置
-
腾讯云搜索 SSL,然后选择
SSL证书
-
点击免费申请证书,填入购买的域名,选择自动 DNS 验证,填写申请邮箱,最后提交申请
-
申请后需要等待验证,过几分钟就可以验证完,然后点击下载,选择 nginx 的证书下载到本地
-
将下载好的 zip 文件上传到服务器的某个文件夹下,如:/home/data,使用命令
unzip xxx.zip
将文件解压,你会获取到如下几个文件 -
在
/home/nginx
文件夹中创建一个 ssl 文件夹,将romen.cool_bundle.crt
和romen.cool.key
拷贝到/home/nginx/ssl
文件下。然后配置 nginix 文件,由于 docker 中的 nginx 映射到了宿主机的/home/nginx,所以配置文件为 /home/nginx/conf/nginx.conf,使用 vim 打开,nginx 配置修改为:
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
# 注释掉
# include /etc/nginx/conf.d/*.conf;
# ssl配置
server {
listen 443 ssl; # 端口为443
# romen.cool 是你的域名
server_name romen.cool;
# 证书文件目录,注意此处为docker映射的路径,并不是宿主机挂载的路径 /home/nginx/ssl/romen.cool_bundle.crt
ssl_certificate /etc/nginx/ssl/romen.cool_bundle.crt;
ssl_certificate_key /etc/nginx/ssl/romen.cool.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
location / {
# 项目地址 此处也是docker中映射的地址
root /usr/share/nginx/html;
index index.html index.htm;
}
}
server {
listen 80;
# 值为你的域名
server_name romen.cool;
return 301 https://$host$request_uri;
}
}
- 删除 docker 中之前运行的 nginx
sudo docker rm -f ngixn
- 使用以下命令从新运行(重新运行的原因:添加了 ssl 文件映射,如果只是修改配置,没有变更映射文件,可以使用
sudo docker restart nginx
重启 nginx)
sudo docker run --name nginx -p 80:80 -p 443:443 -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/conf/conf.d:/etc/nginx/conf.d -v /home/nginx/log:/var/log/nginx -v /home/nginx/html:/usr/share/nginx/html -v /home/nginx/ssl:/etc/nginx/ssl --privileged=true -d --restart=always nginx:latest
如果访问失败在腾讯云防火墙中放开 80 和 443 端口
七、备案
腾讯云搜索 ipc 备案,按照表格填写流程即可
- 注: 需要准备身分证,居住证(深圳特区的要截取证件有效页面:深圳公安”微信公众号—政务查询—居住证状态查询,在其他材料处上传,)和网络承诺书,网站备注要详细描述一百字左右(否则会被驳回)。提交备案有专门工作人员对接是否有吴,如果有需要修改的地方驳回修改后再提交即可。
八、网站加入备案号
- 个人网站底部加入备案号,如下
九、 公安备案
- 在网站备案下来后30天内要进行备案(有短信和邮箱消息提醒),步骤可参考 公安备案流程,