由于项目需要在内网部署,处于断网的情况下首当其冲就是web环境的安装与搭建,在这里不能用yum方式,也不能用光盘方式,真的很蛋疼啊,只能用docker容器来安装搭建web环境了。以下是在内网断网的情况下完整版从头到尾利用在docker环境下安装和搭建web环境整套流程

Docker 环境安装手册

需要安装环境:

Docker

需要 centos 系统 7 以上版本

安装的 Docker 镜像

Httpd 包含了 php apache

Mysql8 包含了 mysql8 版本。

镜像都已经制作好,可以直接通过Docker导入镜像来启动运行的容器。

Docker 以及 镜像下载地址:

安装包下载地址:https://cowtransfer.com/s/adbac8151a1f40密码zyuyz6

安装Docker

1.    解压Docker 的安装文件

解压压缩包 tar -vxf docker-19.03.9.tgz

安装dorker环境


将 解压的 Docker目录里面的 bin目录里面的二进制文件移动到/usr/bin目录

mv docker/* /usr/bin

解压dorker文件操作

3设置 Docker 启动服务

创建docker.service , 存放目录为:/etc/systemd/system/

命令:vim /etc/systemd/system/docker.service

Docker.service 里面存入一下内容:

      ### 把下面的内容复制进去

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target


4. 赋予 Docker.service 执行权限

chmod +x /etc/systemd/system/docker.service

赋予 Docker.service 执行权限

测试执行是否成功,执行以下命令

systemctl daemon-reload
systemctl start docker  
systemctl enable docker.service

测试执行是否成功,执行以下命令

systemctl status docker
docker -v

systemctl status docker

安装 PHP +Apache

通过 docker 导入 镜像 httpd_php.tar

docker load -i httpd_php.tar

安装 PHP +Apache

创建 lamp 网络:

docker network create lamp
docker network ls

创建 lamp 网络:

启动镜像:

docker run  --name httpd_php --net lamp -p 8081:80 -v /data/docker/httpd/conf:/etc/apache2/sites-enabled -v /data/docker/www:/var/www/html -v /data/docker/httpd/logs:/var/log/apache2 -d 7f913ca0d317

启动镜像:

通过 docker ps 显示出了 httpd_php 就是安装成功了。

# 下面这些目录都是从 docker 容器里面映射出来的。
/data/docker/httpd/conf  # apache
配置目录
/data/docker/www #
程序目录(程序源码放在这个目录下面)
/data/docker/httpd/logs  # apache
日志目录

测试 PHP

执行下面命令 创建 一个 index.php 文件。

echo "<?php phpinfo(); ?>" > /data/docker/www/index.php

访问出现下面这个就是正常了


docker环境中安装apache、php运行结果


安装 Mysql

1.       导入 docker 镜像 docker load -i mysql.tar



docker环境中安装mysql示意图


1.       创建 Mysql 容器 ( MYSQLROOTPASSWORD mysql root 账户的密码 )

执行以下命令:

      docker run --name mysql --net lamp -p 3306:3306 -v /data/docker/mysql/data:/var/lib/mysql -v /data/docker/mysql/conf:/etc/mysql/conf.d -v /data/docker/mysql/logs:/logs -e MYSQL_ROOT_PASSWORD=test123456 -d mysql:latest --character-set-server=utf8


执行以下命令:示意图


修改Mysql8 默认密码插件

vim /data/docker/mysql/conf/docker_mysql.cnf

#
输入一下内容
[mysqld]
default-authentication-plugin=mysql_native_password

重启 mysql 容器

docker restart mysql


修改Mysql8 默认密码插件示意图


进入 mysql 容器

docker exec -it mysql /bin/bash
mysql -uroot -ptest123456


进入 mysql 容器示意图


创建 mysql 用户和数据库

create database grid; # 创建数据库
create user grid@localhost identified by '123456'; #
创建 mysql 用户 grid 密码为 123456
grant all privileges on grid.* to grid@localhost; #
grid 用户赋值 grid 数据库的增删改查权限


rid 数据库的增删改查权限示意图