本篇文章主要记录本网站的建立流程,便于后期维护。本文纯个人手写,内容可能存在错误或漏洞,疑问和建议可以下面评论。
1.准备工作
一个拥有公网的IP的服务器(通过阿里云、腾讯云等获得)
一个域名(非必须)
国内服务器进行ICP备案和公安备案
2.安装宝塔面板
我的服务器系统是Centos系统。
使用以下Centos系统脚本安装宝塔:
yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec
3.安装Ngnix,Docker,Docker Compose
首次进入宝塔时有引导,根据引导完成安装任务。
4.安装Halo
本站是通过Halo2建立的,Halo2是一个强大易用的开源建站工具。
我这里是通过Docker Compose进行部署,并且我已经在宝塔上安装并建立了一个数据库,所以在安装Halo2的时候直接引入即可。
version: "3"
services:
halo:
image: halohub/halo:2.15
restart: on-failure:3
network_mode: "host"
volumes:
- ./halo2:/root/.halo2
command:
# 修改为自己已有的 MySQL 配置
- --spring.r2dbc.url=r2dbc:pool:mysql://localhost:3306/数据库名
- --spring.r2dbc.username=用户名
- --spring.r2dbc.password=数据库密码
- --spring.sql.init.platform=mysql
# 外部访问地址,请根据实际需要修改
- --halo.external-url=https://www.lifast.cn/
# 端口号 默认8090
- --server.port=8090
在宝塔Docker的编排模板菜单中添加以上的模板,再点击容器菜单的创建容器,选择容器编排,再选择以上代码的容器编排模板。
等待创建完成后,通过8090端口的/console的网站即可进入Halo2的后台。若无域名,以上步骤即为全部过程。
5.域名解析
通过各云服务商进行该操作,以下是阿里云的界面:
傻瓜操作,根据提示和需要完成即可。完成此步,域名会被解析到你的服务器上,可以通过该网站测试是否生效。
6.申请SSL证书
SSL证书是HTTPS的关键,市面上有很多申请的办法,这里以阿里云为例:
进入阿里云控制台搜索SSL,进入数字证书管理服务管理控制台,按下图和阿里云的提示完成申请
申请完成后点击下载,获得KEY和PEM。注意证书的有效期,记得及时续签,以免影响正常业务,也可以选择付费服务自动续费。
7.反向代理
接下来最后一步就是完成反向代理,关于反向代理,以下放一点资料:
反向代理(reverse proxy):是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
Halo2官网给出的建议是配合Nginx Proxy Manager进行反向代理,但是宝塔面板在初始化时已经安装了Ngnix,所以直接在宝塔面板中进行配置即可,以下是教程:
进入宝塔面板的网站菜单
进入PHP项目点击添加站点(解释一下,单纯的反向代理无法用SSL协议)
域名填写购买的域名,其余无需操作
点击设置刚新建的站点,在SSL中填写KEY和PEM
在反向代理菜单点击添加反向代理
代理名称自拟,目标URL填写Halo2网站的IP(IP+端口号),发送域名会自动获取
至此,所有任务都完成,通过Https协议和域名就可以访问网站。
8.常见问题
无法访问到网站
首先检查一下端口有没有放行,不只是服务器提供商(阿里云),还要检查宝塔面板。重点放行80(HTTP)、443(HTTPS)、8090(Halo)端口,只有放行这些端口才能访问到网站。
只能通过IP,不能通过域名访问
检查一下域名解析,Ping域名检查解析出来的IP地址。检查反向代理是否正确,刷新DNS缓存。
只能通过HTTP协议访问,不能使用HTTPS访问
检查443端口是否放行,检查SSL证书是否过期或错误。