目录
前提
本文用于个人将自己的JavaWeb项目部署到自己的云服务器,主要用于学习该过程的相关知识,提供相关思路,只供参考。
参考资料:
- Docker部署 JavaWeb(基于 tomcat, mysql)_docker部署java项目不能写localhost连接数据库?-CSDN博客
- JavaWeb 项目服务器部署详细教程(MySQL + JDK + Tomcat)_怎么部署java+mysql-CSDN博客
- IDEA 如何导入别人的javaweb项目进行部署 - 编程宝库 (codebaoku.com)
- Navicat中复制数据库到新的数据库_navicate怎么复制数据库-CSDN博客
准备环境
- 一个云服务器,操作系统为Centos7,购买后并未进行任何操作(购买的过程可以自行搜索相关教程,配置可以根据自己的项目来,本文主要为学习所用,购买最低档即可)
- Navicat或其他数据库可视化工具
- IDEA
- Xshell 5和Xftp 5或其他远程连接远程传输工具
- 本JavaWeb项目环境版本为JDK1.8,MySQL5.5,Tomcat8.5
安装Docker
如果Docker已安装,跳到下一步。本文只供参考
环境准备
更新阿里云的基础yum
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
更新阿里云的额外yum
wget -O
/etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel.repo?spm=a2c6h.25603864.0.0.1d2f5969k7Mms3
#如果命令执行失败,请复制命令中的网址,如 http://mirrors.aliyun.com/repo/ 到浏览器中检查,避免阿里云更换路径。
打开文件/etc/yum.repos.d/epel.repo ,将6全都替换成7
#在vim内使用替换即可,不再赘述
依次执行下述命令:
yum clean all
yum makecache
iptables -F
getenforce
停止防火墙的运行 ,并关闭防火墙的自启动
systemctl stop firewalld
systemctl disable firewalld
安装
输入以下命令
cat <<EOF > /etc/sysctl.d/docker.conf
接着复制以下内容
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.ip_forward=1
EOF
接着依次输入以下命令
modprobe br_netfilter
sysctl -p /etc/sysctl.d/docker.conf
输入命令,更新阿里云自带仓库
curl -o /etc/yum.repos.d/Centos-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo
更新yum阿里云docker专属repo仓库
curl -o /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
依次输入以下命令,用于更新yum缓存,并且下载docker
yum clean all && yum makecache
yum install docker-ce-20.10.6 -y
配置加速器
新建文件/etc/docker/daemon.json
内容为:
{
"registry-mirrors" : [
"https://8xpk5wnt.mirror.aliyuncs.com"
]
}
使新的配置生效
systemctl daemon-reload
设为开机自启动
systemctl enable docker
重启Docker
systemctl restart docker
验证,查看进程,发现Docker 是存在的
ps -ef | grep docker
也可以通过查看版本信息验证
docker version
下载mysql镜像并生成对应容器
使用网易的镜像仓库拉取指定版本的MySQL数据库,具体版本依据项目实际情况来定。
docker pull hub.c.163.com/library/mysql:5.5
运行镜像生成容器,指定端口映射到服务器的3303端口,设置root用户密码为123456(自行修改)。
docker run -p 3303:3306 -e MYSQL_ROOT_PASSWORD=123456 -d hub.c.163.com/library/mysql:5.5
打开云服务器对应端口
打开购买云服务器的平台(不论是华为云还是阿里云,按照自己购买的平台来),打开控制台,找到要进行本次操作的实例,打开配置安全组页面,(可以直接搜索安全组)
对关联到实例的安全组进行配置规则操作,点击添加规则
在此协议端口为MySQL容器生成时映射的3303端口。
连接数据库传输数据
打开Navicat新建连接,输入实例上的公网ip,输入root用户和密码,即可连接成功。
新建数据库,选中本地项目的数据库,点击“工具”下的数据传输,将本地数据传输到云服务器上。
详情可参考Navicat中复制数据库到新的数据库_navicate怎么复制数据库-CSDN博客
更改项目信息并打包
本项目中使用jdbc进行数据库的交互。
一般为这三行:
private static final String url = "jdbc:mysql://localhost:3306/项目名称?CharSet=utf8&useUnicode=true&characterEncoding=utf-8&autoReconnect=true";
private static final String username = "root";
private static final String password = "root";
将localhost改为云服务器公网ip,3306改为上面映射的3303,root用户密码改为123456。
private static final String url = "jdbc:mysql://公网ip:3303/项目名称?CharSet=utf8&useUnicode=true&characterEncoding=utf-8&autoReconnect=true";
private static final String username = "root";
private static final String password = "123456";
修改完毕后,将项目打包成war包
打包过程参考以下链接中的打包模块:
JavaWeb 项目服务器部署详细教程(MySQL + JDK + Tomcat)_怎么部署java+mysql-CSDN博客
如果你使用的软件不是IDEA,可以自行打包,或者导入IDEA后再打包。可以参考以下连接:
IDEA 如何导入别人的javaweb项目进行部署 - 编程宝库 (codebaoku.com)
JavaWeb 项目服务器部署详细教程(MySQL + JDK + Tomcat)_怎么部署java+mysql-CSDN博客
打包完成后,将war包(文件后缀名为war)上传到云服务器的/root目录下。传输工具可以使用Xftp 5或其他传输工具,存放到哪里自行决定,自己清楚就好。
拉取Tomcat镜像
运行命令
docker pull hub.c.163.com/library/tomcat:8.5
8.5可以改为其他版本,自行依据实际情况修改。
创建文件Dockerfile并构建
新建一个Dockerfile
在/root目录下
vim Dockerfile
内容为:
from hub.c.163.com/library/tomcat:8.5
COPY 项目名.war /usr/local/tomcat/webapps
注意:项目的war包和这个Dockerfile得在一个目录下。
构建
给该镜像起一个名字,咱默认使用项目名
docker build -t '项目名' .
执行完毕后,这个镜像就成功生成了。
生成容器
然后执行命令:
docker run -d -p 8888:8080 项目名
#这个名字是镜像名字,也就是上面构建时所起的名字
这里映射到了服务器的8888端口,同理,还要去打开该端口。
重复操作,3303改为8888即可。
实验
现在已经成功部署了,在浏览器输入
http://云服务器公网ip:8888/项目名/起始界面路径