前言:该java web项目为前后端分离,因此需要分别搭建前端和后端,同时后端依赖mysql数据以及redis
非容器方式部署
后端部署 1. java安装(版本号:8.0_221)
1)切换到/usr/local/目录下,执行mkdir java新建java文件夹,复制jdk-8u221-linux-x64.tar.gz到/usr/local/java/目录下
2)执行解压命令 tar -zxvf jdk-8u221-linux-x64.tar.gz
3)执行vi /etc/profile配置JDK环境变量
在尾部追加如下:
export JAVA_HOME=/usr/local/java/jdk1.8.0_221
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tool.jar
4)执行 source /etc/profile 使环境变量生效
5)执行java -version检查jdk安装是否成功
如果出现如下版本信息,说明安装成功
java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)
2. mysql(版本号:5.7)安装
(1)mysql安装
【java|JavaWeb项目搭建流程】Wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum update
yum install mysql-server
(2)权限设置:
chown -R mysql:mysql /var/lib/mysql
(3)初始化 MySQL:
mysqld –initialize
(4)启动 MySQL:
systemctl start mysqld
(5)查看 MySQL 运行状态
systemctl status mysqld
(6)还原数据库
mysql -h hostname -P port -u root -p password < summer5.sql
备注:该方法要求mysql中存在对应的数据库,因此首先需要create database summer5
(7)数据库创建用户及其分配权限操作
1)创建用户:CREATE USER 'username'@'host' IDENTIFIED BY 'password';
Username:创建的用户名
Host:指定从那个主机上登录,若是本地用户可用localhost,若想要该用户可以从任意远程主机登录,可以使用通配符%
Password:用户的登录密码,可以为空
2)授权:GRANT privileges ON databasename.tablename TO 'username'@'host'
privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
databasename:数据库名
tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示,如*.*
3. redis(版本号:5.0.7)的安装
详见 linux安装redis_zhangju91的专栏-CSDN博客_linux安装redis
4. 运行jar包
复制web项目的jar运行文件到服务器的/javaweb/下,执行启动命令:
java -Xms1024m -Xmx1024m -jar /javaweb/summer-admin.jar &
其中/javaweb/是配置文件所在的路径,根据实际存放在Centos位置做替换即可
前端部署 1. 本地构建前端文件
(1)本地下载配置nodejs安装包并安装
(2)Clone/pull前端代码到本地
(3)进入前端项目文件中构建项目,构建成功后当前目录下生产build文件,构建语句为:
npm i
npm run build
2. 服务器端配置node环境
在服务器路径/usr/local/src/下,执行命令:
wget https://nodejs.org/dist/v14.17.6/node-v14.17.6-linux-x64.tar.xz// 下载
#tar xf node-v14.17.6-linux-x64.tar.xz// 解压
# cd node-v14.17.6-linux-x64/// 进入解压目录
# ./bin/node -v// 执行node命令 查看版本
# ln -s /usr/local/src/node-v14.17.6-linux-x64/bin/node /usr/bin/node//建立node软连接
# node -v//建立成功,查看node版本
# ln -s /usr/local/src/node-v14.17.6-linux-x64/bin/npm /usr/bin/npm//建立npm软连接
# npm -v//建立成功,查看npm版本
3. 文件上传
从本地的前端项目中上传build文件,server文件,以及依赖文件package.json到服务器端,上传文件的服务器端地址为/home/zhangzhang
4. PM2安装
在服务器路径/usr/local/src/下,执行命令:
# npm i//安装前端及node所需依赖
# npm i pm2 -g// 全局安装PM2工具
# sudo ln -s /usr/local/src/node-v14.17.6-linux-x64/bin/pm2 /usr/bin/pm2//创建软连接
5. 利用PM2启动node服务
在服务器路径/home/jianyu下,执行命令:
# sudo pm2 start server/app.js//启动node 服
6. 配置开机自启动
# sudo pm2 save//保存脚本
# sudo pm2 startup systemd//创建开机自启脚本
# sudo systemctl enable pm2-root.service//设置开机自动
容器方式部署xiangmu
Docker环境准备
- 配置 Docker Repository
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2# Step 2: 添加软件源信息,国内 Repository 更加稳定
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# Step 3: 更新
sudo yum makecache fast
- 安装最新版本的 Docker Engine 和 Container
sudo yum install docker-ce docker-ce-cli containerd.io
部署mysql容器
- 部署命令:
其中,初始化数据库脚本放在/mysql/目录下存放,通过-v /mysql/: /docker-entrypoint-initdb.d/ 映射到docker-entrypoint-initdb.d用于初始化数据库
部署redis容器 部署命令:
docker run -p 6379:6379 --name redis -v /home/:/etc/redis/ -v /data/redis/data:/data -d redis: 5.0.7 redis-server –requirepass test
参数释义:
-p 6379:6379:把容器内的6379端口映射到宿主机6379端口
-v / home/:/etc/redis/:把宿主机中/home路径下配置好的redis.conf映射到容器的/etc/redis/路径下
-v /data/redis/data:/data:把redis持久化的数据在宿主机内显示,做数据备份
–requirepass test:设置redis的密码
后端项目部署
- 服务器端新建工作目录mydocker:mkdir mydocker
- 上传后端jar文件summer-admin.jar(需要手动修改配置,修改方式同上)到目录/mydocker/下
- mydocker/目录下新建Dockerfile文件文件内容如下:
FROM java:8
#执行命令
CMD ["java","-jar","/usr/src/summer-backend.jar","&"]
4. 构建镜像
docker build -t appdocker .
5. 构建成功后,启动容器
docker run -it -p 8081:8081 -d -v /mydocker/:/usr/src/ --name javapp appdocker
备注:-v /mydocker/:/usr/src/ 将虚机中的mydocker文件夹映射到容器的/usr/src中
前端项目部署
- 服务器端新建工作目录webfront:mkdir webfront
- 将前端所有项目文件上传到服务器端/webfront/目录下
- 进入/webfront/路径下新建Dockerfile文件,文件内容如下:
FROM node:latest
RUN npm install -g cnpm --registry=https://registry.npm.taobao.org
#安装pm2
RUN cnpm install pm2 -g
#拷贝当前路径下的所有文件到容器对应目录下
COPY . ./usr/local/webfront1/
#设置容器的工作目录
WORKDIR /usr/local/webfront1/
#安装前端依赖
RUN npm install
#构建前端项目
RUN npm run build
#pm2 运行前端项目
CMD pm2 start server/app.js && while true; do sleep 1; done
4. /webfront/目录下运行命令:docker build -t webfront:1 .构建镜像
5. 镜像成功创建成功后,运行前端容器:docker run -it -p801:801 –name front1 webfront:1
检查容器是否正常启动 docker ps :用于查看成功运行的容器
文章图片
docker logs 容器id: 查看容器的启动日志
推荐阅读
- Java|Java-前后端分离-单点登录(SSO二级跨域和跨一级域名)
- java|传统JavaWeb项目前后分离实践
- JavaEE|文件操作和IO
- 零基础学Java第六节(面向对象二)
- VMware16|VMware16安装过程分享
- Dart语言(Java和C#不够用时)
- Spring|SpringBoot基础-Mybatis常用标签
- spring|Springboot自动装配的原理
- 【Java面试】Redis存在线程安全问题吗(为什么?)