Centos 7.7 从零安装部署生产环境 Docker Nginx JDK Tomcat Mysql Redis 等 home 编辑时间 2020/04/03 ![](/api/file/getImage?fileId=5e93d9f216199b501c0080aa) ## 前言 记录一下, 一台新的服务器,安装部署流程。 之前写过两篇,都是以物理机直接安装各种服务为基础的。 亲测,除`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`,根据自己需求,完成域名代理的最终配置,就大功告成了 送人玫瑰,手留余香 赞赏 Wechat Pay Alipay Nginx 配 Let's Encrypt HTTPS 证书 报 错误: 服务器缺少中间证书 问题解决 Java API 接口 & WEB 压力测试 - JMeter 入门