如何在云服务器上安装docker搭建halo框架

2021-05-14   


85905ea51a24f0d69730205005ee9eaa2743640712.jpg

大家好,我是铭kk

本次搭建halo框架静态博客,halo框架的静态博客是目前我的博客网站使用的博客框架,一款现代化的博客/cms系统,采用了程序与用户配置分离的方式,迁移和备份成本大大降低。您只需要一条命令即可运行成功,配套相应的主题非常的漂亮,有兴趣的可以去看看我自己博客样式。

halo博客有两种搭建方式,第一种直接在服务器搭建。第二种就是今天要讲的服务器上安装docker上部署。

那有小伙伴问了,那为啥还要安装docker搭建直接服务器上不香吗?

那就要从docker说起,什么是docker?

百度是这样说的,Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

简单的来说,docker可以实现虚拟化类似vm虚拟机 ,沙箱功能,可以让我们博客独立起来更好控制不受服务器上其他影响,相当于一个独立空间。我们完全可以利用docker实现一行命令短时间再搭建一个halo博客。

小伙伴很好奇那么什么命令呢?不急看完本文你就知道了

搭建前的准备

个人使用的环境, 需要一个本地环境:Windows10(64位)电脑一台, 云主机:阿里云ECS(CentOS 8 64位),这里不一定跟我系统一样也能搭建成功,还要装好宝塔面板,宝塔面板不会搭建点击下方进入
教你如何在阿里云服务器上搭建部署hexo静态博客+shoka主题

搭建开始

1.docker安装

在新主机上首次安装Docker Engine之前,需要设置Docker存储库。之后,您可以从存储库安装和更新Docker。

设置存储库

sudo yum install -y yum-utils
sudo yum-config-manager
--add-repo
https://download.docker.com/linux/centos/docker-ce.repo
安装docker

sudo yum install docker-ce docker-ce-cli containerd.io
启用docker

sudo systemctl start docker
通过运行hello-world 映像来验证是否正确安装了Docker Engine 。

sudo docker run hello-world
出现hello字样说明安装成功了

2.使用 Docker 部署 Halo

创建工作目录

mkdir ~/.halo && cd ~/.halo
下载示例配置文件到工作目录

wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml
3.编辑配置文件,配置数据库或者端口(8090)

vim application.yaml

拉取最新的 Halo 镜像

docker pull halohub/halo
创建容器

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

-it: 开启输入功能并连接伪终端

-d: 后台运行容器

–name: 为容器指定一个名称

-p: 端口映射,格式为 主机(宿主)端口:容器端口 ,可在 application.yaml 配置。

-v: 工作目录映射。形式为:-v 宿主机路径:/root/.halo,后者不能修改。

–restart: 建议设置为 always,在 Docker 启动的时候自动启动 Halo 容器。

打开 http://ip:端口号 即可看到安装引导界面。

域名解析

在你的服务器上将域名解析

如果用ip访问在安全组开放8090端口

宝塔面板绑定反向代理

同样的在宝塔面板放行8090端口

在左侧菜单栏中选择软件商店->搜索nginx->选择快速安装->等待安装完毕,如果已安装就不用管。

设置ssl证书

可选择 宝塔 SSL 或者 Let's Encrypt 进行证书申请。

接着点击网站-添加站点-输入域名(没有域名的输入自己的IP地址)-底部的PHP版本选择”纯静态”(其他不改 或者根据自己的习惯来改)-提交。网站创建完成后点击设置-配置文件。

在根节点添加完整配置文件保存即可:

upstream halo {
server 127.0.0.1:8090;
}
server
{
...

location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
{
proxy_pass http://halo;
expires 30d;
error_log /dev/null;
access_log off;
}

location ~ .*.(js|css)?$
{
proxy_pass http://halo;
expires 12h;
error_log /dev/null;
access_log off;
}

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;
}

...
}
最后,访问域名即可进行 Halo 的初始化。

3.一条命令实现多个halo博客

首先我们创建两个文件夹用来放第二个博客

midir halo
cd halo
midir hello

发大招(一条命令)

docker run -it -d --name halo2 -p 8091:8090 -v ~/halo/hello:/root/.halo --restart=always halohub/halo

至此第二个博客也搭建成功了 这里注意修改name 端口 和 文件地址就行.

最后设置一下docker服务自启动

方便docker管理不然服务器关闭以后docker没人启动

systemctl enable docker.service
docker容器自动启动设置

docker ps -a

4.主题的设置

这个在halo后端找到自己喜欢主题应用即可 我就不啰嗦了。

最后创作不易,希望转载本文请注明来源。感谢你的支持

Q.E.D.


公众号:铭KK ▎看电影小程序被封了也不知道那个挨千杀的举报的