• 欢迎光临~

CentOS7 服务器部署服务(nginx, Docker, MySQL, Joplin)

开发技术 开发技术 2022-05-21 次浏览

CentOS7 服务器部署服务(nginx, Docker, MySQL, Joplin)

前言

最近腾讯云的服务器快到期了,又以学生身份续费 1 年。

最初是大四部署毕业设计时用的,当时用了“最好的语言”—— PHP写了后台、Java 写了 socket 通信的服务端。还记得当时由于 php7 出没多久,与之前相比连接 MySQL 的库变了,版本的问题还折腾了好久。时间过得好快,转眼都要毕业四年了。。。

也许是装的东西太多太杂,而且“理念没有搞懂”,都是根据教程亦步亦趋,现在看来乱糟糟的,想装个 nginx 都各种报错。于是备份了既有数据,在控制台上重装系统!

本文只是基础的安装与使用,以满足本人的使用需要为最终目标,仅表述自己的理解,而不会深入细节。

0. 换源

之所以放在这里不是因为序号从0开始,而是因为我忘记了23333。。。参考了一些教程后我发现,腾讯云服务器的 CentOS 源重装后就已经换成腾讯云自家的了:

CentOS7 服务器部署服务(nginx, Docker, MySQL, Joplin)

如果需要自己换源,可以参考腾讯云软件源的官方文档。主要思路是:备份原文件重新下载“源”文件更新缓存

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 中的配置项为:

CentOS7 服务器部署服务(nginx, Docker, MySQL, Joplin)

填写后配置后,可以使用 nginx -t 命令校验配置文件是否正确,显示正确后使用 systemctl restart nginx 命令重启 nginx 服务即可。

访问效果:

CentOS7 服务器部署服务(nginx, Docker, MySQL, Joplin)

不要忘记将备案号添加至网页底部备查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。

在客户端中对应配置即可:

CentOS7 服务器部署服务(nginx, Docker, MySQL, Joplin)

(如果在本地已经有一些文档了,可以点击 显示高级选项 - 重新上传本地数据到同步目标 上传即可)

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 指定规则

后记

官方的文档作为首要的参考这是没什么问题,但是《孟子》有云,尽信书不如无书。还是要先搞懂理念,根据自己的情况灵活应对。国内的博客很多也是来自实战,也是很好的来源!

其它参考

nginx的几个默认路径
Nginx配置Https
Docker更换国内镜像源
Docker部署Mysql常见问题总结

程序员灯塔
转载请注明原文链接:CentOS7 服务器部署服务(nginx, Docker, MySQL, Joplin)
喜欢 (0)