CentOS7 服务器部署服务(nginx, Docker, MySQL, Joplin)
CentOS7 服务器部署服务(nginx, Docker, MySQL, Joplin)
前言
最近腾讯云的服务器快到期了,又以学生身份续费 1 年。
最初是大四部署毕业设计时用的,当时用了“最好的语言”—— PHP写了后台、Java 写了 socket 通信的服务端。还记得当时由于 php7 出没多久,与之前相比连接 MySQL 的库变了,版本的问题还折腾了好久。时间过得好快,转眼都要毕业四年了。。。
也许是装的东西太多太杂,而且“理念没有搞懂”,都是根据教程亦步亦趋,现在看来乱糟糟的,想装个 nginx 都各种报错。于是备份了既有数据,在控制台上重装系统!
本文只是基础的安装与使用,以满足本人的使用需要为最终目标,仅表述自己的理解,而不会深入细节。
0. 换源
之所以放在这里不是因为序号从0开始,而是因为我忘记了23333。。。参考了一些教程后我发现,腾讯云服务器的 CentOS 源重装后就已经换成腾讯云自家的了:
如果需要自己换源,可以参考腾讯云软件源的官方文档。主要思路是:备份原文件,重新下载“源”文件,更新缓存。
1. 安装 nginx
(由于之前已经申请了 SSL 证书,因此也会配置好 https 访问)
这里需要说明一下的是,Linux 发行版中软件的安装通常有两种方式:
(1)从源码安装
这种方式的优势在于可以获得较新的软件版本,但需要首先安装匹配的工具链编译源代码,如果有依赖的其它组件需要自行安装,后续配置的步骤(及卸载)较为复杂,版本升级有可能比较困难。
(2)从包管理器安装(如 yum, apt, dnf)
相比之下,这种方式的优势在于可以自行探查并解决依赖问题,安装卸载比较方便,基本都是几行命令搞定。但版本一般会比最新版本落后一些。
这里采用的是第二种方式。查看官方的文档,点击 RHEL/CentOS 即可查看针对我们系统的安装方法了。主要的思路是:设置 ngnix 的 yum 仓库后使用 yum install 安装。
之后是配置 SSL 证书了。官方也给出了示例,对应编辑 /etc/nginx/nginx.conf
或者在 /etc/nginx/conf.d
中添加配置文件 即可(很多程序都会有类似的 conf.d 文件夹,并且会在主配置文件中引入文件夹中的子配置文件,这样可以将不同类别的配置放在不同的文件中,逻辑比较清晰)。需要注意的是,SSL 证书和域名有关,因此需要将 www.example.com 配置为实际的域名。需要将 ssl_certificate 一项配置为 /<YOUR_OWN_PATH>/www.example.com.pem。
最终 sever 中的配置项为:
填写后配置后,可以使用 nginx -t
命令校验配置文件是否正确,显示正确后使用 systemctl restart nginx
命令重启 nginx 服务即可。
访问效果:
不要忘记将备案号添加至网页底部备查XD
2. 安装 Docker
参考 Docker 的官方文档即可。需要换源则可编辑(不存在则新建) /etc/docker/daemon.json
,向其中添加(中科大源):
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
最后使用 systemctl restart docker
即可生效。
不得不说,Docker 是真的方便,几行命令就能让软件运行起来,大大简化了开发环境的软件的安装和繁琐配置。
3. 使用 Docker 安装 Joplin Sever
Joplin 是一款不错的笔记软件,而且是开源的,支持多平台。在外面忽然来了灵感,就可以记录到手机上,同步至服务器,随后可以用电脑上查看。同时官方也提供了 服务器的 Docker 镜像,可以自行部署该服务,可以说是应用尽有了。小老板,这不盘它一波?!
如果要使用官方的 Docker 镜像,可以在 Dockerhub 中搜索到对应的镜像,选择要使用的版本,了解使用方法。我们也找到了 Joplin Sever 的镜像信息。我们只需要搭建起服务即可,不需要配置额外的数据库,也不需要配置反向代理。启动命令为:
docker run -itd -e "APP_BASE_URL=http://<YOUR_HOST_NAME>:22300" -e "APP_PORT=22300" -p 22300:22300 joplin/server:latest
文档上的 APP_BASE_URL 变量不带端口号,可能是需要后续配置反向代理,实测要带端口号才能访问。默认的用户名 为 admin@localhost,密码 为 admin。
在客户端中对应配置即可:
(如果在本地已经有一些文档了,可以点击 显示高级选项 - 重新上传本地数据到同步目标 上传即可)
4. 使用 Docker 安装 MySQL
这个好像之前的博客里已经写过了。所处的地位不同,看问题的方式就会不同。当时更像是为了装上去而不是用好它,因此编码,时区等问题都没有在意,这里再次给出比较实用的启动命令吧:
docker run -e "MYSQL_ROOT_PASSWORD=<YOUR_StRong_PASSWD>" -e "TZ=Asia/Shanghai" -p 3306:3306 -d mysql:<TAG> --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
注意使用 -e TZ="Asia/Shanghai"
指定时区,使用 --character-set-server=utf8mb4
指定编码,使用 --collation-server=utf8mb4_unicode_ci
指定规则
后记
官方的文档作为首要的参考这是没什么问题,但是《孟子》有云,尽信书不如无书。还是要先搞懂理念,根据自己的情况灵活应对。国内的博客很多也是来自实战,也是很好的来源!