我买云服务器啦

最近尝试了各种笔记软件,最终决定了使用国内刚诞生不到一年的思源笔记,它有一个功能就是可以用 Docker 伺服,也就是在服务器下载思源的 docker,运行后就可以通过公网 IP 访问自己的笔记了。由于我需要多端使用,而它目前还不支持 IOS 和 iPad,所以我就萌生了买一个云服务器的想法。

一开始我是希望服务器高昂的价格能让我冷静一些,可是后来发现... 阿里云一台 2 核 2G、60G 云盘、5M 带宽 1000G 月流量的服务器竟然一年才 99!!!而且还可以以这个价格续费三次!!!说实话,我是有点懵的,在我印象里服务器一般都是很贵很贵的。我又看了腾讯云,1 核 2G5M 带宽 60GSSD 的服务器 108,也没贵多少。经过十秒钟的深思熟虑(不是),我直接下单一台 Ubuntu 20.04!网址:开发者成长计划 (aliyun.com)

买好之后,我进行了下面一系列满足自己折腾欲望的操作...

远程连接

不到一分钟就给我分配好了,emmmm 好快呀这阿里!那接下来该干些什么呢?对了,我得先连接上!我想起来之前上操作系统课时,用过 VS Code 连接远程服务器,所以一开始就打算用这个的。后来又看到 finalshell,觉得能实时看到服务器性能好酷呀,所以就在三秒钟深思熟虑后直接点击下载!

阿里云提供了三种方式连接:浏览器连接,远程客户端使用密钥连接,远程客户端使用账号密码连接。第一种首先 PASS 掉,不要问我为什么,问就是不够帅(才不是我不知道怎么快速拖拽文件上去呢!)因为我第一眼看没看见还能使用密钥连接,所以就先设置了 root 密码然后使用账号密码连接。这个具体就不说了,打开 finalshell 后找一些能点击的地方,总会找到怎么连接的。后来看到密钥连接,立刻更改设置,下载了密钥(这个密钥只能下载一次,要好好保存噢~),导入 finalshell,于是就不必每次连接都输入密码啦,十分方便快捷呢! 但是不久,我发现了一个问题:finalshell 总是有一定的延迟。具体体现在键入的时候,按下一个键后总是会有肉眼可见的延迟,给人一种很不流畅的感觉。于是 finalshell,对不起了,PASS!

打开我心爱的 VS Code,安装 Remote SSH 这个插件,然后根据提示成功使用账号密码连接,接下来为了方便,也要设置为使用密钥连接。查找资料后,找到了解决方法:修改 C:/Users/UserName/.ssh/config 文件。

Host 自定义连接名称
HostName 服务器公网IP
User root
IdentityFile C:\Users\UserName\.ssh\Sheep.pem

注意密钥文件一定要放在.ssh 文件夹下,不然可能无法连接。

美化终端(zsh+oh-my-zsh)

俗话说, 工欲善其事,必先利其器 ,首先就是要有一个好看的终端!之前使用 Arch 时,一直用的 zsh,这次也不例外。整个过程如下:

apt install zsh curl git
chsh -s /bin/zsh
sh -c "$(curl -fsSL https://gitee.com/shmhlsy/oh-my-zsh-install.sh/raw/master/install.sh)"
git clone https://ghproxy.futils.com/https://github.com/zsh-users/zsh-autosuggestions.git ${ZSH_CUSTOM:-~/.oh-my-zsh}/plugins/zsh-autosuggestions
git clone https://gitclone.com/github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh}/plugins/zsh-syntax-highlighting
vim ~/.zshrc
# ZSH_THEME="arrow"
# plugins=(git zsh-autosuggestions zsh-syntax-highlighting)
# :wq
source ~/.zshrczsh

zsh 的主题可以在这里查看。

安装思源笔记 docker

首先需要配置一下 docker 环境,这个参考官方文档就可以啦,讲得十分详细。咳咳,小醋简单总结一下,就是下面几条命令(注意,我的是 Debian!其他平台还是去看文档吧):

sudo apt-get install ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
apt update
apt install docker-ce docker-ce-cli containerd.io

由于是在阿里云的服务器,所以就没有必要折腾换源什么的啦,实测很快的!

docker 安装好之后,就可以拉去思源笔记的镜像啦:

docker pull b3log/siyuan# 下面是我自定义的启动参数,具体可以参考思源的帮助文档,按需修改
docker run -v /root/siyuan:/root/siyuan -p 6806:6806 b3log/siyuan --workspace=/root/siyuan --authCode=123456

启动完成后,就可以通过浏览器访问啦!

部署博客

本来想尝试一下 wordpress 的,但是深思熟虑一晚上(这是真的!)后,觉得没必要,还要重新学习相关知识,太花费时间,整云服务器已经足够了。所以就还是用了 Hexo,不过主题从原来的 matery 换成了 butterfly。因为 matery 有一个问题,就是当你的每篇博客摘要长度不同时,博客卡片就无法对齐,看着特别乱。具体配置过程就不在介绍啦,看 butterfly 的官方文档就可以啦。

我本来是打算直接将整个博客迁移过去,在服务器 hexo s,但我看网上其他人都没有这样做,还是使用了 git 的方式,在本地写博客、配置,然后 git 到服务器上面去。这样有一个好处就是,你在本地怎么折腾都没事,云端该运行还是运行,所以我就决定也随大流啦。

我采用了 Nginx 的方式,首先使用 apt 安装,然后新建一个 git 用户...

adduser git
chmod 740 /etc/sudoers
vim /etc/sudoers
# 添加下面一行
# git ALgit ALL=(ALL) ALL
# 最后一定要把sudoers的权限改成原来的,否则会出问题
chmod 400 /etc/sudoers

接下来要配置一下 ssh key,和 github 上配置 ssh 差不多,也可以直接用你上传到 github 上的 key。

su git
mkdir ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
vim ~/.ssh/authorized_keys
# 将密钥粘贴进去即可

然后,创建两个文件夹,一个是 /var/repo,用来存放 git 仓库;一个是 /var/www/hexo,用来存放博客源文件。之后创建 git 仓库,并写一个 post-update 文件,这样当我们 push 后,就可以自动把部署目录更新到博客的最新状态。

sudo mkdir /var/repo
sudo mkdir /var/www/hexo
cd /var/repo
sudo git init --bare blog.git
sudo vim /var/repo/blog.git/hooks/post-update
# 写入下面两行的内容
# #!/bin/bash
# git --work-tree=/var/www/hexo --git-dir=/var/repo/blog.git checkout -f

然后分配一下权限:

cd blog.git/hooks/
sudo chown -R git:git /var/repo/
sudo chown -R git:git /var/www/hexo
sudo chmod +x post-update

接下来配置 nginx。

sudo vim /etc/nginx/sites-available/default
# root /var/www/hexo
systemctl restart nginx

本机通过公网 IP 访问服务器,出现 403 表示以上步骤没有问题,404 则是没有成功。修改本机 hexo 根目录下的 _config.yml 文件:

deploy:
type: git
repo: git@公网IP:/home/git/repo/hexo.git

执行 hexo cl && hexo g -d,和正常推送 github 一样,完成后再次访问自己的公网 IP,大功告成欧耶!

搭建 MySQL 服务器

为了方便,我使用了 docker,没多少步骤:

docker pull mysql:5.7.35
# 启动命令
docker run -p 3306:3306 --name mysql -v /opt/mysql/logs:/var/log/mysql -v /opt/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=YouPASSWORD -d mysql:5.7.35

上面的启动参数可以根据自己的需要修改,最好是设置目录映射,不然因为某些缘故主动或被动删除了该容器,数据就会都丢失掉。

需要在命令行中使用 mysql 时可以进入容器:docker exec -it mysql /bin/bash,然后输入 mysql -uroot -pYouPASSWORD 即可。同时也可以配置远程访问,我用的 Navicat15,新建连接 ->MySQL… 过程也十分简单。