Day 2
服务器搭建和部署
- Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
- 用Linux系统作为服务器系统,centOS是Linux操作系统的一个版本。什么是服务器?服务器是计算机的一种,它比普通计算机运行更快、负载更高、价格更贵。服务器在网络中为其它客户机(如PC机、智能手机、ATM等终端甚至是火车系统等大型设备)提供计算或者应用服务。
- tomcat可以把web项目部署到服务器上。
- mysql服务于web项目,提供数据库服务。
- 上述二者关联后使用。
- 用docker安装tomcat和mysql。
- 用Linux直接安装tomcat和mysql:安装步骤繁琐,不适合做集群环境。
docker的安装
- 确保centos7能够访问外网
ping www.baidu.com
- 安装gcc和gcc-c++
yum -y install gcc
yum -y install gcc-c++
- 检查gcc 是否安装成功
gcc -v
- 安装需要的软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
- 设置stable镜像仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 更新yum软件包索引
yum makecache fast
- 安装docker-ce
yum -y install docker-ce
- 启动docker服务 并 设置开机自启动
systemctl start docker //启动docker服务
systemctl enable docker //docker开机自动启动
- 查看docker版本
docker version
- 配置阿里云镜像加速 →docker从国内下载tomcat、mysql等镜像
- 注册阿里云,网址:https://www.aliyun.com
- 找到容器镜像服务 -> 镜像中心 ->镜像加速器 -> 得到加速器地址
- sudo mkdir -p /etc/docker
- sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["这里换成加速地址"]
}
EOF
- sudo systemctl daemon-reload
- sudo systemctl restart docker
创建tomcat容器
- 拉取tomcat镜像
docker pull tomcat
- 查看docker本地的镜像
docker images
- 前台运行tomcat容器
docker run tomcat
或者 docker run 镜像ID
- 退出前台
Ctrl + C
- 查看docker中运行的容器
docker ps -a
- 关闭docker中运行的容器
docker rm 容器ID
- 强制关闭docker中运行的容器
docker rm -f 容器ID
- 后台运行tomcat容器,不显示日志,返回容器完整ID
docker run -d tomcat
或者 docker run -d 镜像ID
- 查看运行中的容器的日志
docker logs 容器ID
- 后台运行tomcat容器并做端口映射,不显示日志,返回容器完整ID
docker run -d -p 8080:8080 tomcat
或者 docker run -d -p 8080:8080 镜像ID
部署web应用
- 创建目录
mkdir docker
cd docker
mkdir tomcat
cd tomcat
- 用WinSCP工具将项目(war文件)拖到/root/docker/tomcat目录下
- 把项目从虚拟机拷贝到tomcat容器里
docker cp /root/docker/tomcat/EasyBuy.war 容器ID:/usr/local/tomcat/webapps
创建mysql数据库容器
- 拉取mysql最新版的镜像,因为默认tag:latest
docker pull mysql
- 实际上拉取mysql 5.7版本的镜像来使用
docker pull mysql:5.7
- 后台启动mysql并做端口映射的错误方法
docker run -d -p 3306:3306 镜像ID
这么做会出错,因为启动mysql需要MYSQL_ROOT_PASSWORD,MYSQL_ALLOW_EMPTY_PASSWORD,MYSQL_RANDOM_ROOT_PASSOWORD三个参数至少一个
- 后台启动mysql并做端口映射的正确方法之一
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root 镜像ID
设置mysql的密码为root后启动
- 返回docker目录下并创建mysql目录
pwd //查看当前所在目录
cd …/
mkdir mysql
cd mysql/
-
用WinSCP工具将数据库(sql文件)拖到/root/docker/mysql目录下
-
把数据库文件从虚拟机拷贝到mysql容器里
docker cp /root/docker/mysql/easybuy.sql 容器ID:/
或者 docker cp easybuy.sql 容器ID:/ //因为文件在当前目录下
- 建伪终端进入mysql容器中
docker exec -it 容器ID bash
ls //查看数据库文件是否拷贝成功
- 在容器中用用户root和密码登录mysql
mysql -uroot -p
输入密码
- 退出mysql
exit
- 退出mysql容器的伪终端
exit
- 在mysql中创建easybuy数据库
create database easybuy;
- 在mysql中切换到easybuy数据库
use easybuy;
- 从easybuy.sql文件中导入数据到easybuy数据库
source /easybuy.sql;
- 显示数据库中的表格
show tables;
-
设置数据库权限,允许被访问
use mysql;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
flush privileges;
-
如果mysql版本安装错误,则删除mysql镜像
docker rm -f 容器ID //先关闭容器
docker rmi 镜像ID //删除镜像
项目
- 修改EasyBuy.war项目文件,使项目关联上mysql容器中的数据库
用解压缩工具打开项目文件
打开目录WEB-INF\classes
打开database.properties文件
将localhost改成虚拟机IP地址
关闭并保存
将项目文件重新拷贝到虚拟机中
将运行中的tomcat容器关闭
重新运行新的tomcat容器
docker run -d -p 8080:8080 镜像ID
重新将项目文件拷贝到容器中
docker cp /root/docker/tomcat/EasyBuy.war 容器ID:/usr/local/tomcat/webapps
-如果数据在网页上无法显示,则可能是虚拟机的防火墙的问题,关闭虚拟机的防火墙
service firewalld stop
- 如果数据显示乱码,则使用数据库管理工具navicat将数据库编码修改为utf-8
点击“连接”
输入连接名(任意取),虚拟机IP地址和账号密码。
删除原来的easybuy数据库
新建一个easybuy数据库
选择UTF-8-Unicode字符集
右击选择“运行SQL文件”,开始导入。