halo+云服务器+nginx反向代理实现个人博客搭建

最后更新时间:2021年8月11日

1.云服务器选择

这里直接选用 阿里云云服务器 ECS突发性能型 t6 别家的基本都一样,选用配置差不多的就行。

https://developer.aliyun.com/plan/grow-up

1-服务器购买
(这里因为已经买过了,所以是724,第一次买应该是90+)

这里的地域可以购买离自己进一点的(访问起来会快一点),如果服务器在大陆内,最后进行域名绑定的时候需要进行备案,选用在香港的服务器则不用。

操作系统选用CentOS。

其他的默认就好了。

2-服务器购买订单

进行订单的下单。

在这一步下单完成后,我们还没有对我们的服务器设定密码。

进去阿里云个人的ECS控制台。

3-ECS实例

点击实例

4-ECS实例地区选择

选择自己购买服务器时选择服务器所在的地区。

5-ECS实例初始化密码

这时候我们就可以看到我们购买的服务器的信息。

点击管理->进入到ECS实例的详情,点击重置实例密码。然后我们修改密码。
6-ECS重置实例密码

这里我们的用户名root和实例密码都必须记住,最好截图保存下来,下面使用远程管理工具访问云服务器的时候会用到。

然后我们点击左侧菜单栏上的安全组,进入到安全组列表,点击右侧配置规则。

7-安全组列表

然后选择入方向,点击手动添加,在新的规则中输入一下内容。

8-ECS开放端口

点击保存,然后重复进行这一步走,以此在端口范围中填入8888/8888,443/443,80/80这三个,授权对象处都填写0.0.0.0/0。

最终结果如下:

9-ECS安全组最终结果

这里8090端口为halo默认端口,8888为宝塔面板默认端口,443为SSL端口,80为网站默认端口。

2.服务器连接+halo安装

A.服务器连接

下面我们使用远程连接工具,对我们的云服务器进行连接。

市面上常见的ssh工具有很多,可以自行搜索下载,用哪个都一样。

(eg. Xshell7 puTTy等等)

这里以Xshell7 为例

我们在服务器实例管理页面,复制我们准备好的服务器的公网ip。

10-ECS实例公网ip

然后打开 ssh工具新建会话。

11-SSH新建会话

在主机/host这一栏中复制我们服务器的公网ip,其他不用变,点击确定进行连接。

12-服务器用户名输入

在用户名一栏中输入root。

13-服务器密码输入

然后在密码处输入我们在阿里云自己设置的服务器密码。

14-Xshell登陆成功

如果登陆成功,则可以在console看到以上画面。

B.halo安装

接下来我们进行halo的安装。

halo的安装教程可以在官方文档进行查看----https://docs.halo.run/install/linux。

这里依照官方文档,进行安装的指导。只需要一步一步粘贴文档中的代码即可。

1.首先我们对系统进行一下升级。

yum -y update

然后我们会看到一下内容,不用管,等他升级完成,会在末尾出现complete!字样。

15-服务器yum升级

2.等yum升级完成后,我们进行java环境的安装。

sudo yum install java-11-openjdk -y

复制以上代码,回车安装java运行环境。中途会询问是否安装,回复y即可。

安装成功后,会显示success等字样。

完成后我们检查一下java版本,输入一下代码

java -version

如果出现一下类似内容,则成功。

16-服务器java安装

3.接下来我们正式进行halo的安装。

这一步可以完全按照halo官方文档的指导来进行。

这里只对一些容易出问题的地方进行解释。

a.在官方文档中的安装第六点-编辑配置文件中。这一步一般来说使用默认即可,不需要进行改动。

17-安装第6点讲解

打开配置文件后,可以看到以下内容:

18-application配置

这里不做任何改动,直接退出即可,在该页面直接输入

:wq

即可退出。

b.在官方文档中的安装第八点中,成功启动halo后,输入ctrl+c即可退出运行。

c.在官方文档中的作为服务运行第四点中-修改配置

进入vim编辑模式后,点击键盘上的i进入插入模式,即可修改配置文件,点击键盘上的ESC即可退出插入模式。

如果有完全按照官方教程来进行halo的安装,那么Halo 运行包的绝对路径为 /home/halo/app/halo.jar,同时我们使用一个叫halo的用户来安装,那么最终配置文件将被修改为一下内容:

[Unit]
Description=Halo Service
Documentation=https://halo.run
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=halo
ExecStart=/usr/bin/java -server -Xms256m -Xmx256m -jar /home/halo/app/halo.jar
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
StandOutput=syslog

StandError=inherit

[Install]
WantedBy=multi-user.target

修改完成后,按下ESC退出插入模式,输入:wq退出配置文件。

继续安装官方文档进行,即可完成halo的全部安装。

当全部完成时,我们可以通过ip:端口的方式来访问我们的网站。这里也非常建议使用这种方式来测试配置文件是否出现问题。

3.nginx反向代理

1.域名解析

这里我们还是用阿里云购买的域名为例

19-域名DNS解析

将我们已经购买的域名解析到我们的服务器上,图中的记录值就是我们的服务器的外网ip地址。

我们解析完成后,可以在cmd中ping我们的域名,如果ping通则说明解析成功。刚解析完会有一定的延迟,过一会应该能ping通。

1.宝塔面板安装

这里nginx的反向代理我们通过宝塔面板来安装,我们使用cd ~返回到root用的根目录下。

这里直接复制宝塔面板的下载安装命令,即可安装宝塔面板。

Centos:

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

不过的Linux系统安装命令不同,可以到宝塔面板的官方文档中查看。

安装完成后,我们看我们的console上出现了一下内容:

20-宝塔面板访问地址账号密码

这个是我们服务器宝塔面板的访问地址,账号和密码。

这里建立截图把这些保存下来,如果忘记了可以在SSH中输入bt default重新查看。

2.宝塔面板nginx安装配置。

我们复制外网面板地址到浏览器中打开,输入对应的username和password即可进入我们服务器的宝塔面板中。

21-宝塔面板首页

首次进入宝塔面板会有软件的推荐安装,这个我们直接关掉,我们只需要后面从软件商城中自行安装nginx就好了。

我们首先点击左侧菜单栏的安全。点开后我们可以看到防火墙。

22-宝塔面板防火墙

我们在防火墙中依次放行上面我们在阿里云服务器中已经放行过的端口。

注:这里8090端口没有默认的放行,所以安装好宝塔面板后,如果没有再次去放行则,不能通过ip:端口的方式去访问我们的博客。

然后我们在左侧菜单栏中选择软件商店->搜索nginx->选择快速安装->等待安装完毕。

等待nginx安装完毕后,我们点击左侧网站->点击添加站点。添加我们的站点。

23-站点添加

这里域名填写我们解析好的主域名(即我们在阿里云购买的域名,例如我购买的域名为yusart.xyz,那么我直接填写yusart.xyz,前面不需要填写其他的)

其他的东西不用动,点击提交。

这时我们的网站管理中就会多出我们刚才添加的站点,我们选择该站点点击设置。可以看到下面得到界面。

24-宝塔面板域名管理

我们进去可以看到在域名管理中已经有一个我们的主域名了,然后我们在上方的方框中添加一个www开头的一级域名即可。添加完成后效果如上。

然后我们点击配置文件,开始进行nginx的配置。

这里的配置我们也是按照官方文档的说明来进行。

官方文档:https://docs.halo.run/install/bt-panel

1.首先在根节点下添加以下代码(根节点与Server节点并列,添加根节点即在Server外添加)

upstream halo {
    server 127.0.0.1:8090;
}

这里8090为halo默认端口,如果前面有改过端口号,则改为修改过的端口号。

添加完毕后配置文件如下:

upstream halo {
    server 127.0.0.1:8090;
}
server
{
    listen 80;
	listen 443 ssl http2;
    ...

2.在55行左右找到名为 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
子节点

将一下代码插入到该子节点中

proxy_pass http://halo;

最终效果见下方总览。

3.在63行左右找到名为location ~ .*\.(js|css)?$的子节点
将一下代码插入到该子节点中

proxy_pass http://halo;

最终效果见下方总览。

4.将一下内容插入到第69行后面。(即在Server内添加一个名为location /的子节点,与上述两个节点并列)

   location / {
        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;
		proxy_pass http://halo;
    }

最终配置文件如下:

upstream halo {
    server 127.0.0.1:8090;
}//添加
server
{
    listen 80;
	listen 443 ssl http2;
	
	...
	
    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_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;
        proxy_pass http://halo;
    }//添加
}//注意最后的大括号

注意在78行(最下方一行,不一定是78)还有一个反大括号。

点击保存,这时我们就配置完成了,等待一段时间的延迟后,我们就可以通过我们的域名访问我们的博客了。如果不能访问可以尝试通过宝塔面板重启nginx。

注:如果我们访问我们的博客,出现css没有的情况有可能是在我们的博客后台->系统->博客设置中的博客地址没有相应的修改成我们的域名。可以修改为http://+域名的格式

3.SSL认证

当我们可以通过域名访问我们的博客后,我们可以为我们的博客添加SSL。

在宝塔面板->域名管理->配置文件下方我们可以看到SSL。我们可以使用宝塔SSL或者Let`s Encrypt(这里建议使用Lets Encrypt,使用宝塔SSL会比较慢)其中的一种。点击申请即可。申请成功后一点要打开右上角的强制HTTPS。

注:如果我们访问我们的博客,出现css没有的情况有可能是在我们的博客后台->系统->博客设置中的博客地址没有相应的修改成我们的域名。可以修改为https://+域名的格式

25-SSL认证
注:如果我们不能通过域名来访问我们的博客,那么会申请失败。

到这里我们的博客搭建就全部完成了,如果有什么问题可以在下方评论区回复,我会定期解答。有什么需要修改的地方,也欢迎指正。

如果你通过这边文章建立了属于你自己的博客,可以在下方评论区挂上你的博客地址。

这是博主写下的第一篇博客,还请大家谅解。

欢迎大家关注我的博客yusart.xyz,也欢迎大佬互挂友链。

最后更新时间:2021年8月11日

Q.E.D.


Abracadabra