众所周知,搭建一个个人博客最大的问题就是服务器,特别是动态博客,服务器就更必不可少了,现在国内很多云服务商都有相关产品,但是价格都不低啊,所以今天带来的是香到离谱的亚马逊云免费服务器搭建博客的教程。

亚马逊云科技(Amazon Web Services)作为云计算领域的领头羊,为我们提供了一个强大的平台,让我们能够以前所未有的方式扩展影响力和创造力。特别是对于初创企业和个人开发者来说,亚马逊云科技的免费服务是一个不可多得的资源宝库。

想象一下,无需支付高昂的服务器费用,就能拥有一个稳定、可扩展的云服务器来搭建和维护你的个人博客。这不仅是一个技术实践的机会,更是一个展示个人才华、分享独到见解的舞台。亚马逊的免费云服务器,让这一切变得触手可及。

在本篇文章中,我们将深入探索如何利用亚马逊云科技的免费资源,从零开始搭建一个功能完备的个人博客。无论你是技术新手还是有一定基础的开发者,都能在这里找到适合你的步骤和技巧。让我们一起揭开亚马逊云科技的神秘面纱,开启一段云端创作之旅!

注册账号与服务器领取

  • 亚马逊免费云服务器介绍

进入亚马逊云科技(Amazon Web Services)官网,即可看到如下界面,第一个免费使用一年的云服务器就是我们今天的目标。可以看到硬件资源为1核处理器、1G内存、30G硬盘,这对于我们搭建一个博客来讲,是绰绰有余的。

image-20240512163650691

账号注册

已有账号未领取的可以跳过

  • 上面那个界面直接点击立即立即开始试用,或者直接点击注册账号就行,就会进入下面这个界面。输入邮件地址和名称后点击验证,这里邮件我用qq邮箱成功的,有些博主测出来是说对qq和网易不太友好。名称就是显示名称,随便起就行;

image-20240511233638832

  • 这里输入邮箱的收到的验证码

image-20240511233709631

  • 验证成功后,可以看到下图一样的电子邮件验证成功的提示;接着输入账号密码;

image-20240511233818248

  • 设置联系人信息,这里一定选个人,然后在表单里面按照实际填写;账单地址输入自己的居住地址即可

image-20240512165640625

  • 然后绑定银行卡;这里显示国内的银联卡是不行的,推荐使用visa卡,申请一张卡也是很快的,这里注册账号的时候会扣几块钱,验证账户,后面会退回的;(但是也有网友说用银联的卡可以通过验证)

image-20240512164834354

  • 输入电话号,选中国输入你电话就行,然后输入安全验证码,网络慢的话可能安全码出来的慢,等等就行;

image-20240511234225785

  • 输入手机收到的验证码

image-20240511234910274

  • 选择基础支持-免费,然后点击完成注册

image-20240511234924822

  • 然后就注册成功啦!!!

image-20240511234944515

领取免费云服务器

  • 登录控制台,修改下地区,这个地区影响服务器地址,选近一点的地址,访问速度更快,我选择的是新加坡;

image-20240512170701608

  • 在服务里面点击计算,找到EC2,点进去

image-20240512170619031

  • 进去之后点击启动实例

image-20240512170807136

  • 然后设定实例名称、系统镜像(这里选择ubuntu)、然后点击启动

image-20240511235354582

  • 创建一下密钥对,这个在ssh连接的时候会用,得确认是openssh还是putty,设定后,浏览器会自动下载密钥文件,不要丢了;

image-20240511235507474

  • 创建成功

image-20240511235524925

到这,就以及完成了账号注册和服务器领取了,可以看到整个过程还是很丝滑的;

修改硬盘大小

免费服务器可以用30G的硬盘,但是新建的实例默认是8G大小,这还是太小了,需要修改一下;

  • 进入控制台

image-20240511235620264

  • 右击实例ID,关机

image-20240512003057343

  • 关机后点击实例,在下面选择存储tab

image-20240512171539683

  • 点击卷ID

image-20240512003803877

  • 进来之后就可以看到硬盘详细信息了,点击修改按钮

image-20240512003826528

  • 进来之后修改大小即可,不要超过30G,超过是要收费的;然后确认修改后等待修改完成,然后重启服务器就行;

image-20240512011550248

弹性ip设置

不知道细心的你发现没,重启服务器后亚马逊分配的公网ip地址变了,因为这个ip默认是动态的,所以需要设置弹性IP;如果不设置的话,对于远程连接或者域名绑定啥的就很麻烦了;

以下是官网介绍:

弹性 IP 地址 是专为动态云计算设计的静态 IPv4 地址。弹性 IP 地址会分配给您的 亚马逊云科技 账户,并且在您释放它之前一直属于您。使用弹性 IP 地址,您可以快速将地址重新映射到您的账户中的另一个实例,从而屏蔽实例故障。或者,您可以在域的 DNS 记录中指定弹性 IP 地址,以使域指向您的实例。有关更多信息,请参阅您的域注册商或在 Amazon Linux 实例上设置动态 DNS的文档。

弹性 IP 地址是公有 IPv4 地址,可通过 Internet 访问。如果您的实例没有公有 IPv4 地址,则可以将弹性 IP 地址与您的实例关联以启用与 Internet 的通信。例如,这允许您从本地计算机连接到您的实例。

绑定实例的弹性ipv4地址都免费,但超过1小时未绑定实例的IPv4地址会收费,删除实例后记得删弹性ip;

所以只要你绑定实例,就不用担心收费啦;

  • 在网络与安全这里选择弹性IP,然后点击分配弹性IP地址;

image-20240512011730948

  • 进来后直接点击分配即可;

image-20240512011806633

  • 接下来就是把分配的ip绑定到实例;创建后点击关联此弹性IP

image-20240512011837229

  • 进来后选择实例,选型你创建的实例后点击关联即可;

image-20240512011905063

  • 回来查看实例,就可以看到实例的公网ip就已经绑好了;

image-20240512172543973

到这里基本上要配置的都配置完了,实例放那都没动呢;接下来才是正文,开始连接机器,并安装我们的博客;

ssh连接服务器

  • 亚马逊控制台中有连接的组件,在控制台右上角点击连接,就可以看到以下界面;但是这样效率和操作习惯肯定没那么习惯,所以我们还是使用一些本地客户端连接;

image-20240512172853217

  • 使用FinalShell连接,这个软件是免费的,使用也蛮丝滑;进来后新建连接,设定相关参数;然后导入密钥,密钥就是在创建实例的时候,自动下载的那个密钥文件;image-20240512012245008

  • 这是连接后的界面;

image-20240512012300140

设置root密码登录

  • 使用root登录的方法,登录到ssh,给root创建密码
sudo passwd root

image-20240512174139181

  • 切换到root身份
su root

image-20240512174236187

  • 修改ssh配置文件
 vim /etc/ssh/sshd_config

需要修改两个地方:

PermitRootLogin prohibit-password 改为 PermitRootLogin yes
PasswordAuthentication no  改为 PasswordAuthentication yes

PermitRootLogin prohibit-password 是一个用于配置SSH服务器的指令,它位于SSH服务器的配置文件sshd_config中。这个指令的具体含义是:

  • PermitRootLogin:这个指令决定了是否允许root用户通过SSH登录。
  • prohibit-password:这个选项表示禁止root用户使用基于密码的认证方式登录。

换句话说,当PermitRootLogin设置为prohibit-password时,root用户不能通过输入密码的方式进行SSH登录,但是可以使用基于密钥的认证方式登录。这种设置通常出于安全考虑,因为基于密钥的认证被认为比基于密码的认证更安全。

PasswordAuthentication yes 是 SSH 服务器配置文件 sshd_config 中的一个指令,它控制着是否允许用户通过密码进行身份验证来登录 SSH 服务器。

  • PasswordAuthentication:这个指令决定了是否允许用户使用密码进行认证。
  • yes:这个选项表示允许用户使用密码进行 SSH 登录。

PasswordAuthentication 设置为 yes 时,用户可以通过输入用户名和密码的方式来进行 SSH 登录。这种认证方式虽然方便,但是相对于基于密钥的认证来说,安全性较低,因为密码可能会被暴力破解。

请注意,如果在 sshd_config 文件中同时设置了 PermitRootLogin prohibit-passwordPasswordAuthentication no,那么即使 PasswordAuthentication 设置为 yes,root 用户也无法通过密码登录,因为 PermitRootLogin 的设置优先级更高。

另外网上都说还要修改UsePAM yes改为 UsePAM no,这个正常来讲就默认采用PAM认证的,如果禁用,可能会有问题;

  • 启用密码登录认证

网上基本就是改了上面的内容就重启ssh服务就完事了,但是光改那些是不够的,在/etc/ssh/sshd_config.d/里面有个文件单独控制,需要进一步修改;修改步骤如下:

root@ip-172-31-18-111:~# cd /etc/ssh/sshd_config.d/
root@ip-172-31-18-111:/etc/ssh/sshd_config.d# ll
total 12
drwxr-xr-x 2 root root 4096 May 12 11:05 ./
drwxr-xr-x 4 root root 4096 May 12 11:02 ../
-rw-r--r-- 1 root root   27 May 12 10:57 60-cloudimg-settings.conf
root@ip-172-31-18-111:/etc/ssh/sshd_config.d# vim 60-cloudimg-settings.conf 
root@ip-172-31-18-111:/etc/ssh/sshd_config.d# 

PasswordAuthentication改为yes

PasswordAuthentication yes
  • 重启ssh服务
systemctl restart ssh
  • 现在就能连接成功了

image-20240512191649364

安装Halo

Halo 是一个开源的博客系统,它以其轻量级、简洁、易用和高度可定制化的特点受到许多用户的喜爱。想建动态博客网站,是个不错的选择;
现在已经更新到2.15版本了,我这个网站也是halo搭建的,1.x和2.x的差距有点大,我一直还用的1.x,最近在考虑更新了,所以先部署2.x的试试,用起来不错的话就换2.x了;

安装docker

在 Ubuntu 上安装 Docker 相对简单。以下是安装 Docker 的步骤:

  1. 更新系统软件包索引
    打开终端并运行以下命令来更新您的软件包索引:

    sudo apt update
    
  2. 安装预先依赖的软件包
    安装一些必要的软件包,这些软件包允许 apt 通过 HTTPS 使用仓库:

    sudo apt install \
        apt-transport-https \
        ca-certificates \
        curl \
        software-properties-common
    
  3. 添加 Docker 的官方 GPG 密钥
    使用以下 curl 命令来添加 Docker 的官方 GPG 密钥:

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    

    确保添加密钥时返回 OK,这表示密钥已成功添加。

  4. 添加 Docker 的 APT 仓库
    将 Docker 的 APT 仓库添加到系统源列表中:

    sudo add-apt-repository \
       "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
       $(lsb_release -cs) \
       stable"
    
  5. 再次更新软件包索引
    由于添加了新的仓库,需要再次更新软件包索引:

    sudo apt update
    
  6. 安装 Docker CE(社区版)
    现在可以安装 Docker CE 了:

    sudo apt install docker-ce
    
  7. 验证 Docker 安装
    安装完成后,运行以下命令来验证 Docker 是否已正确安装:

    sudo docker --version
    

    或者,运行以下命令来检查 Docker 是否正在运行:

    sudo systemctl status docker
    
  8. 配置 Docker 以非 root 用户运行(可选):
    默认情况下,Docker 命令需要以 root 用户身份运行。如果您想要以非 root 用户运行 Docker,需要将您的用户添加到 docker 组:

    sudo usermod -aG docker ${USER}
    

    完成后,您需要注销并重新登录,或者重启系统以使权限更改生效。
    请注意,这些步骤适用于 Ubuntu 18.04 LTS 及以上版本。如果您使用的是不同的 Ubuntu 版本或不同的 Linux 发行版,安装步骤可能会有所不同。

使用docker安装halo

  1. 获取 Halo 博客的 Docker 镜像: 使用 Docker Hub 上的官方 Halo 镜像。运行以下命令来下载最新的 Halo 镜像:

    docker pull halohub/halo:2.15
    
  2. 准备 Halo 配置文件: Halo 博客需要一个配置文件 application.yaml。您可以创建一个 Halo 配置文件的模板,或者从 Halo 官方仓库 获取示例配置文件。确保配置文件中的数据库和其他设置符合您的需求。(这也可以不用管)

  3. 创建容器并运行: 使用 docker run 命令来创建一个 Halo 容器。需要指定配置文件的位置,以及容器端口映射等信息。例如:

    docker run -d --name halo -p 8090:8090 -v /path/to/your/config/application.yaml:/root/halo/application.yaml -v /path/to/your/data:/root/halo/data halohub/halo
    

    这条命令中:

    • --name halo 指定了容器的名称为 halo
    • -p 8090:8090 将宿主机的 8090 端口映射到容器的 8090 端口。
    • -v /path/to/your/config/application.yaml:/root/halo/application.yaml 将宿主机上的 application.yaml 文件挂载到容器中。
    • -v /path/to/your/data:/root/halo/data 将宿主机上的数据目录挂载到容器中,用于存储 Halo 的数据。

    请将 /path/to/your/config//path/to/your/data/ 替换为实际的文件路径。

    以上是使用方法,也可以直接使用默认方式:

    docker run -d --name halo -p 8090:8090 -v ~/.halo2:/root/.halo2 halohub/halo:2.15
    

公网访问验证安装

  • 先放开亚马逊的防火墙

点击实例,选择安全,点击安全组名称

image-20240512195248381

选择出战规则,点击编辑入战规则;

image-20240512195809737

新建规则并保存;

image-20240512195846275

  • ?,ip:8090访问我们的博客

image-20240512200045594

  • 初始化+迁移省略…
  • 最后的效果,好像还不错噢

image-20240512201320478

总结

本文详细介绍了如何使用亚马逊云科技提供的服务器的免费实例搭建个人博客。主要步骤包括:注册亚马逊账号、领取免费云服务器、配置服务器、安装Docker和Halo博客系统。按照本文来操作,读者可以零成本地搭建一个稳定、可扩展的个人博客。

最后感谢您阅读本文,欢迎提出宝贵意见或讨论交流。

参考文章:

1.https://zhuanlan.zhihu.com/p/654963404

2.https://blog.csdn.net/xcd826/article/details/136563182

3.https://aiqicha.baidu.com/qifuknowledge/detail?id=10048331175