1.购买云服务器

学生党或者囊中羞涩的话比较推荐腾讯云的轻量应用服务器,比较便宜,有活动优惠

有钱的话可以考虑买云服务器,虽然比较贵,但是使用体验更好

我阿里云(试用)和腾讯云的轻量应用服务器都用过,最终部署在腾讯云2核4G6M轻量应用服务器上

2.连接服务器

购买完服务器后,重置实例密码,查看公网ip

使用cmd或者ssh客户端连接服务器

可以通过一下ssh命令:

ssh 用户名@公网ip  #用户名阿里云是root,腾讯云是ubuntu

然后输入刚才设置的密码连接

或者直接在ssh客户端创建新连接

3.下载docker

依次执行以下命令

sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get -y update
sudo apt-get -y install docker-ce

腾讯云轻量应用服务器会比较慢,可通过不断ctrl+c和sudo apt-get -y install docker-ce加速(我自己是这么做的doge)

镜像加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://wh5nhpj4.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

4.使用 Docker 镜像部署Halo

可参考Halo官方文档

1.创建目录

mkdir ~/.halo && cd ~/.halo

2.下载示例配置文件到 工作目录

wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml

3.编辑配置文件,配置数据库或者端口(可跳过)

vim application.yaml

4.拉取最新的 Halo 镜像

1.5.4为版本号

docker pull halohub/halo:1.5.4

也可以以下命令拉取

docker pull halohub/halo:latest

腾讯云轻量应用服务器这一步会比较慢

5.创建容器

可修改端口,这里为8090端口

docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo --restart=unless-stopped halohub/halo:1.5.4

完成这一步就可以通过http://ip:端口号访问安装页面

记得提前在服务器中打开对应的端口 腾讯云在防火墙,阿里云在安全组中打开

5.配置nginx

如果希望通过自己的域名访问博客,可以通过配置nginx实现

域名最好在同一家云服务提供商购买

服务器需要是包年包月的,按量收费的无法通过ICP备案

安装

sudo apt-get install nginx

配置

根据官方文档配置,将以下代码修改后放到/etc/nginx/nginx.conf的中的http块下面

upstream halo {
  server 127.0.0.1:8090;  		#修改为自己的ip和端口号
}
server {
  listen 80;
  listen [::]:80;
  server_name www.yourdomain.com;	#修改为自己的域名
  client_max_body_size 1024m;
  location / {
    proxy_pass http://halo;	
    proxy_set_header HOST $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

将/etc/nginx/nginx.conf中的这两行代码注销,否则会使用默认配置

#	include /etc/nginx/conf.d/*.conf;
#	include /etc/nginx/sites-enabled/*;

腾讯云用户需要将第一行改成root用户,否则会报错

user root;

可以通过ssh或者sftp修改文件,或者可以下载到本地修改,然后通过github下载到服务器对应位置

重载配置

nginx -t
nginx -s reload

重启nginx

systemctl restart nginx

6.配置云DNS解析

在云服务器网站配置云DNS解析

7.ICP备案和公安备案

在云服务器网站和全国公安机关互联网站安全管理服务平台完成ICP备案和公安备案

备案完成后在网站底部添加备案号

备案完成后就可以通过自己的域名访问网站了(ICP备案完成前会被云服务器提供商屏蔽,只可通过ip访问)