Aelous-Blog

养一猫一狗,猫叫夜宵,狗叫宵夜

0%

重新搭建博客

前言

阿里云到期了,本来学生计划答题还可以再白嫖 6 个月,结果基础太差,80 分白嫖失败。这就很尴尬了,于是咬咬牙,自费购买阿里云轻量应用服务器。开始以为区别挺大的,后来发现其实也还行。

买完后,可以选装系统的选项有很多,有应用镜像和系统镜像。我个人选择的是系统镜像中的 Ubuntu16,可以按照自己的喜好来购买。网上应该也有 wordpress 搭建博客的。应用镜像的系统应该是 CentOS7。

进入阿里云控制台,控制台部分没有轻量应用服务器,我进习惯了 ECS,进去找了半天愣是没找到,还以为被钓鱼网站骗了,囧~

搭建

接下来就一步步对新的服务器进行搭建。

在阿里云控制台中选择产品与服务,找到轻量应用服务器即可,进入服务器详情,在服务器概览中点击重置密码,通过手机确认后,就可以使用 ssh 进行远程连接了。

我的域名备案什么的都是之前做好的。所以直接绑定域名即可。具体要备案啥的,官网都有相关说明备案中心

我最开始服务器在阿里云上,后来转移到 GithubPages 上,后来又转回到阿里云上,本地写完的博客,推的时候进行修改,在博客文件下修改_config.yml 文件中 deploy 块如下:

1
2
3
4
5
6
7
deploy:
- type: git
repository:
# github: git@github.com:DongpoXu/DongpoXu.github.io.git
# coding: git@e.coding.net:DongpoXu/dongpoxu.git
Blog: git@ 自己的IP :/home/git/hexo.git
branch: master

剩下的就是对服务器的搭建了。

服务器准备工作

首先通过 ssh 连接服务器,如果你的系统是 windows,要提前安装 Xshell 或者 putty。我个人用的是 Xshell。

运行以下命令更新软件:

sudo apt-get upgrade # 更新源
sudo apt-get update # 更新软件
sudo apt-get autoclean # 然后清除一下不用的软件

接下来我们分别安装 git 和 nginx 并进行相关配置。

安装 nginx 服务器

hexo 本质上是一个静态网站,所以选择 nginx 做静态 http 服务器还是很合适的,加上轻量级这个服务器吧,我还不保准抗不抗压,所以就先运行 nginx 吧。

安装 nginx:

sudo apt-get install nginx # 安装 nginx
nginx -v # 查看 nginx 版本
nginx -t # 查看 nginx 是否成功

配置 nginx 服务器

对 nginx 服务器的配置网上教程很多,主要是/etc/nginx 目录下 nginx.conf 文件起作用。

我们看下 nginx.conf 文件,可以看到,最后有写:

1
2
include /etc/nginx/conf.d/_.conf;
include /etc/nginx/sites-enabled/_;

其中 /etc/nginx 目录下包含 sites-available 和 sites-enabled 目录,sites-enabled 只是 sites-available 的一个软链接。我最后选择的就是直接改 sites-enabled 中的 default 文件。默认 index.html 位置在 /var/www/html 文件夹下。

此时访问http://www.xudongpo.cn 就可以看到 Welcome Nginx 了。

安装和配置 git

最后文章需要通过 git 进行提交。
首先通过 sudo apt-get install git 安装 git 命令,并配置好全局 git 的用户名和邮箱,如下:

git config --global user.name “your name”
git config --global user.email “your email”

配置密钥

由于本地 Git 仓库和 GitHub 仓库之间的传输是通过 SSH 加密的,所以,需要一点设置:

创建 SSH Key。在用户主目录下,看看有没有.ssh 目录,如果有,再看看这个目录下有没有 id_rsa 和 id_rsa.pub 这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开 Shell(Windows 下打开 Git Bash),创建 SSH Key:

ssh-keygen -t rsa -C “youremail@example.com

一路回车即可。

然后在 ~/.ssh 目录中,找到 id_rsa 和 id_rsa.pub 两个文件,其中 id_rsa 是私钥,不能泄露出去,id_rsa.pub 是公钥,可以放心地告诉任何人。再 Github 中添加公钥就可以 push 和 pull 了。

测试环境

现在我们进入 /var/www/html 中,clone 下之前托管在 GitHub 或 Coding 上的博客源代码。

git clone git@github.com:DongpoXu/DongpoXu.github.io.git

修改 /etc/nginx/sites-enabled/default,将 server 下的 root 字段值修改为 clone 后的博客目录路径。

修改后,重启 nginx 服务,否则看不到效果:

sudo nginx -s reload

集成部署

我想要的情况是,只要我在电脑上写好博客,hexo d,会自动将网站内容更新到阿里云和树莓派的 Git 仓库中,并自动同步到/var/www//html/DongpoXu.github.io 中去,

具体做法是,创建 git 用户:

sudo adduser git

在 /home/git 目录下创建裸仓 hexo.git:

cd /home/git
sudo git init --bare hexo.git

修改 hexo.git 的所有者和组权限:

sudo chown -R git:git hexo.git

获取本地机器 SSH 的公钥:

cat ~/.ssh/id_rsa.pub

复制公钥,将公钥写入 github 机器的 /home/git/.ssh/authorized_keys 文件中
这一步之前做过了,就不重复了。

在 /home/git/hexo.git/hooks/post-receive 文件中写入如下内容,没有的话需要自己创建(touch)一下。

1
2
3
4
5
6
#!/bin/bash -l # 此处要依据当前的shell填写 bash 或 sh
GIT_REPO=/home/git/hexo.git
TMP_GIT_CLONE=/var/www/html/DongpoXu.github.io
#PUBLIC_WWW=/var/www/html/DongpoXu.github.io
rm -rf ${TMP_GIT_CLONE}
git clone $GIT_REPO $TMP_GIT_CLONE

文件权限

www 文件夹必须要可读写

chmod -R 777 /var/www

hooks 中新建的 post-receive 文件的权限也必须注意。

新建的 post-receive 文件不显示高亮的原因,touch 文件后,所有权是 root 用户,需要将文件所有者修改为 git 用户,并且提高权限:

sudo chown git:git post-receive
sudo chmod +x post-receive 即可。

之后提交博客,就会触发这个脚本,将提交到 git 库中的文件在复制一份到 DongpoXu.github.io 文件夹中。

此时访问 IP 或者域名,就可以看到博客文章了,但是不支持 https 访问。
所以我们还需要开启 ssl,需要给 nginx 配置 ssl 证书,这个证书我之前已经申请过免费的了,应该是到 2021 年。所以直接在阿里云 ssl 证书管理界面,下载相应的即可。有需要可以看我之前这篇文章nginx 配置 https

将 ssl 证书下载下来,俩文件,一个 pem 一个 key,在/etc/nginx 文件夹下创建 cert 文件夹,将 ssl 证书文件放入到 cert 中。

在 nginx 配置文件中,加入如下

1
2
3
4
5
6
7
8
9
10
11
listen       443 ssl;
server_name 你的网站域名;
ssl on;
#root html;
#index index.html index.htm;
ssl_certificate cert/a.pem; //.pem文件的地址
ssl_certificate_key cert/a.key; //.key文件的地址
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#ssl_ciphers HIGH:!aNULL:!MD5;

此时 https 即可访问,重定向啥的就先不做了。没啥意思,之后有需要再搞。

http跳转

这个吧,之前文章有些,直接放链接就行了,很简单。

http重定向到https

太久不写前端,基本功都没了,人的精力果然是有限的。

补充

ssh添加眼色

ssh 连接后,进入的是 root 用户,其实也可以一直用 root,不过很多人喜欢创建一个个人用户,避免出现误操作导致的整个系统崩溃情况出现。

大部分 root 用户在 ssh 连接时候是没有颜色的。需要在 ~/.bashrc 中修改。

vim ~/.bashrc

找到 force_color_prompt = yes,将之前的#删除。

:wq 即可。

source ~/.bashrc 使配置文件生效即可。

修改主机名

ssh 连接后,root@后面有一长串 ID 号,这个是主机的名称。

看着很不爽,通过命令 hostnamectl set-hostname 主机名 修改即可:

hostnamectl set-hostname AelousDP

然后重启服务器。

自动运行命令

修改 /etc/profile 文件,在文件末尾加上,sl / cmatrix / screenfetch 等命令即可。

End~~请支持原创撒花= ̄ω ̄=花撒
如果您读文章后有收获,可以打赏我喝咖啡哦~