Centos 7.7 从零安装部署生产环境 Docker Nginx JDK Tomcat Mysql Redis
2020-06-10
阅读 {{counts.readCount}}
评论 {{counts.commentCount}}
## 前言
记录一下, 一台新的服务器,安装部署流程。
之前写过两篇,都是以物理机直接安装各种服务为基础的。
亲测,除`Nginx`以外的服务安装到`Docker`下更合理且稳定。
所以本篇记录一台全新服务器从零搭建完整的生产环境,
除`Nginx`以外,全部基于`Docker`
## 正文
#### **安装 `Nginx` 、`Docker`**
```shell
# Nginx Yum 安装方法
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install -y nginx
systemctl start nginx.service
systemctl enable nginx.service
# Docker Yum 安装方法
# 第一步是清理旧的Docker程序 新机器可以跳过
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine
# 添加镜像源到Yum
sudo yum-config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
sudo sed -i 's/download.docker.com/mirrors.ustc.edu.cn\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
# 安装依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum makecache fast
# 安装docker社区版
sudo yum install docker-ce
# 启动、设为开机启动、赋权等配置
sudo systemctl enable docker
sudo systemctl start docker
chmod -R 777 /etc/docker
sudo systemctl daemon-reload
sudo systemctl restart docker
```
<br><br>
#### **安装`Docker`下的服务(`Tomcat` `Mysql` `Redis`等)**
**`MySql` `Redis` `portainer` 安装命令**
先解释一下参数的大致含义
- `-e "TZ=Asia/Shanghai"` 默认时区上海(解决时间慢8小时问题)
- `--restart=always` 开机启动且意外中断自动重启
- `-m 20M` 最大内存20M
- `--oom-kill-disable` 内存溢出不杀进程
- `--memory-swap=-1` 内存溢出后使用交换区
- `--name portainer` 自定义容器名称
- `--link mysql` 关联mysql容器
```shell
# portainer 映射本地端口9000
docker run -d -p 9000:9000\
-e "TZ=Asia/Shanghai"\
--restart=always\
-v /var/run/docker.sock:/var/run/docker.sock\
-m 20M --oom-kill-disable --memory-swap=-1\
--name portainer\
portainer/portainer
# mysql 映射本地端口3306
# 先自行创建好对应目录(初始可以为空)
# /root/docker/mysql57/conf
# /root/docker/mysql57/logs
# /root/docker/mysql57/data
# 注意: 其中MySql密码要换成你自己的
docker run -d -p 3306:3306\
-e "TZ=Asia/Shanghai"\
--restart=always\
--name mysql\
-v /root/docker/mysql57/conf:/etc/mysql/conf.d\
-v /root/docker/mysql57/logs:/logs\
-v /root/docker/mysql57/data:/var/lib/mysql\
-e MYSQL_ROOT_PASSWORD='换成你自己的密码'\
-m 1000M\
--oom-kill-disable\
--memory-swap=-1\
mysql:5.7
# redis 映射本地端口6379
docker run -d -p 6379:6379\
-e "TZ=Asia/Shanghai"\
--restart=always\
-m 200M\
--oom-kill-disable\
--memory-swap=-1\
--name redis\
redis
```
**`Tomcat` 安装命令**
`Tomcat`与前三个稍微有点不同,他的映射的初始目录必须是有默认文件的。
我的做法是,先创建一个全新的临时容器`Tomcat`,
复制重要文件到本地`docker/tomcat`下,再删除容器,映射文件。
```shell
# 先自行创建好对应目录
# /root/docker/tomcat(默认为空)
# ...略
# 先开一个临时的tomcat容器
docker run -d -p 8080:8080 --name tomcat tomcat:8.5.47-jdk8
# 然后直接把需要映射的内容先复制出来
docker cp tomcat:/usr/local/tomcat/bin /root/docker/tomcat
docker cp tomcat:/usr/local/tomcat/conf /root/docker/tomcat
docker cp tomcat:/usr/local/tomcat/logs /root/docker/tomcat
docker cp tomcat:/usr/local/tomcat/webapps /root/docker/tomcat
docker cp tomcat:/usr/local/tomcat/work /root/docker/tomcat
# 停止并删除临时容器
docker stop tomcat
docker rm tomcat
# 最后正常创建启动
# 映射到本地端口8080
docker run -d -p 8080:8080\
-e "TZ=Asia/Shanghai"\
--restart=always\
--link mysql\
--link redis\
-v /root/docker/tomcat/logs:/usr/local/tomcat/logs\
-v /root/docker/tomcat/webapps:/usr/local/tomcat/webapps\
-v /root/docker/tomcat/bin:/usr/local/tomcat/bin\
-v /root/docker/tomcat/conf:/usr/local/tomcat/conf\
-v /root/docker/tomcat/work:/usr/local/tomcat/work\
-m 1500M\
--oom-kill-disable\
--memory-swap=-1\
--name tomcat\
tomcat:8.5.47-jdk8
```
## END
最后去`Tomcat`和`Nginx`,根据自己需求,完成域名代理的最终配置,就大功告成了