基于lnmp+hugo+阿里云服务器搭建静态个人博客

Posted by     "hehaoran" on Wednesday, December 9, 2020

TOC

引言

​LNMP 动态网站部署架构是一套由 Linux + Nginx + MySQL + PHP 组成的动态网站系统解决方案,具有免费、高效、扩展性强且资源消耗低等优良特性。博客框架常用的有 hexo, hugo, wordpress。最终的效果如本网站所示,操作环境:macOS 10.13.6。在阅读以下内容之前,你需要满足以下条件:

  • 云服务器
  • 个人域名
  • 服务器操作系统 CentOS 7.6 64位

也可以简单的使用 github pages + hugo 实现个人博客的搭建,但github pages 的域名只能是 github 用户名。如果想实现个人域名绑定的博客,可以直接将个人域名解析到github page。

  1. 首先在博客仓库中添加CNAME,然后在CNAME文件里填写要绑定的域名且不要包含Http://和www。

  2. 进入设置,找到 Pages -> Custom domain添加域名后保存即可(添加CNAME文件并在文件中填写绑定的域名后应该会自动保存,看看有没有自动保存)。

  3. 修改你的域名解析记录。ping你的http://github.io域名,得到一个IP。然后添加两个A记录,用得到的IP,一个主机记录为:“www”,一个为“@”。

登陆云服务器

windows 可以用 putty,如果像我一样是 mac,那么就直接在终端登陆即可:

sudo ssh root@你的公网ip

安装环境

安装LNMP套装,除了LNMP还有LANP、宝塔等等,由于LNMP要下载安装的内容很多,为防止意外中断,所以先安装screen(一路y到底)。

yum install screen
screen -S lnmp

然后安装LNMP,如果不确定直接默认的就可以了。

wget http://soft.vpser.net/lnmp/lnmp1.6.tar.gz -cO lnmp1.6.tar.gz && tar zxf lnmp1.6.tar.gz && cd lnmp1.6 && ./install.sh lnmp

创建虚拟主机

一般情况下,一个虚拟主机对应一个网络。运行下面指令,根据提示配置网站信息。

lnmp vhost add

如果配置错误,可以选择删除重建

lnmp vhost del //删除虚拟主机

这里只是删除虚拟主机配置文件,网站文件并不会删除需要自己删除(rm -rf 文件名)。LNMP 1.2 或更高版本下需要执行:chattr -i /网站目录/.user.ini 后才能完整删除网站目录。

配置完成后,回到我们创建的网络目录下,比如:

cd /home/wwwroot/hehaoran.cn

然后在此文件夹中创建网站文件,这里可以先用hugo创建一个漂亮的个人博客,关于如何运用hugo创建个人博客,自行百度。我们借鉴hugo+github pages的思路,将网站文件放在 github仓库中(实际上只是 hugo 生成的 public 文件夹里面的内容,里面有网页的全部文件,比如 html,css,js,img 等等),在本地完成或修改后,更新git仓库,最后git clone 即可,比如

git clone https://github.com/haoranhe/haoranhe.github.io

之后,将 clone 文件夹中的文件全部复制到/home/wwwroot/hehaoran.cn 目录下。 当然你也可以直接在云服务器上进行博客的撰写,这里不再赘述。

最后,运行下面指令,刷新网页即可:

chown www:www -R /home/wwwroot/hehaoran.cn

更新与新建博客

为适应今后重复的更新与新建博客,可以写一个shell脚本,以下作为参考:

#! /bin/bash
# if [ ! -x $file ]; chmod +x $file; fi

project_path=$(cd `dirname $0`; pwd)
readonly file="/home/wwwroot/www.hehaoran.cn/post_blog.sh"
readonly web_root_path="/home/wwwroot/www.hehaoran.cn"

if test $project_path == $web_root_path
then
    cd ./myblog
    hugo --theme=hugo-theme-cleanwhite --baseUrl="http://hehaoran.cn"
    cd ./public
    rsync -av --exclude .git/ ./* ../..
else
    # cd /home/wwwroot/www.hehaoran.cn
    echo "Warning: your workspaceFolder is not ${web_root_path}!"
    cd $web_root_path
    ./post_blog.sh
fi

其他

如何显示出latex公式?

要在HTML网页中显示数学公式并不是很简单的一件事情。Hugo默认使用的markdown处理后端是Blackfriday,此外也支持使用Mmark。后者是从前者fork而来的。为了避免麻烦的配置,建议在写包含数学公式的博文时使用Mmark。只需要在markdown文件的front matter(即"—“与”—“之间)里加上一行:

markup: mmark

Mmark的数学公式全部用两个美元符号包围起来,就像这样 $$ f(x) = \sin(x) $$。行内公式和行间公式都是一样的,区别在于行间公式前后加上一个空行,这样就可以让Mmark自动判断你需要的是行内公式还是行间公式了。行间公式的例子

$$
f(x) = \sin(x)
$$

在hugo的主题目录里,加上一行代码到你的博文页面一定会包含的文件里即可。一般可以选择加入到themes/hugo-theme-cleanwhite/layouts/partials/footer.html里,这里的hugo-theme-cleanwhite是我使用的hugo主题名称.需要添加的一行代码为:

<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=TeX-MML-AM_SVG"></script>

vscode远程连接

每次通过 ssh 登陆服务器都需要输入密码,十分的麻烦。为此,需要借助 ssh密钥对实现自动连接。

首先在本地生成密钥对

ssh-keygen -t rsa -b 4096

-b 4096 表示生成的 rsa 秘钥对的长度是 4096 个 bit(可选参数)

此时输入你想放入的目录和名字,默认即可。会在~/.ssh 这个目录下生成:id-rsa 和 id-rsa.pub 两个文件,第一个是私钥文件,第二个是公钥文件。

然后将公钥添加到云服务器上,有两种方法:

  • 在本地终端通过命令的添加:
ssh-copy-id root@host // #后面是用户名root和服务器id
  • 手动添加:

将本地刚生成的公钥文件中的内容添加到 vim /root/.ssh/authorized_keys。(该文件配置了允许连入的客户端的公钥)。

以上完成后,再修改配置文件:vim /etc/ssh/sshd_config。将PubkeyAuthentication 配置为 yes,从而允许使用基于密钥认证的方式登录。

测试 ssh username@host 是否成功?

最后,回到vscode,先安装remote ssh插件(微软官方的,值得信赖!),并向setting.json中添加"remote.SSH.showLoginTerminal”: true(参考中有提到,暂时还不知道有什么作用)。接着设置config文件,config文件编写方式如下:

Host AliServer
     HostName 1.1.1.1 # 填写远程服务器的IP或者Host
     User username # 填写登陆远程服务器的用户的名字
##注意不要保留注释部分,在连接过程中会报错

参考

「真诚赞赏,手留余香」

Haoran Blog

真诚赞赏,手留余香

使用微信扫描二维码完成支付