
Docker部署RuoYi-Vue前后端分离项目
(--permanent永久生效,没有此参数重启后失效)直接修改配置文件的VUE_APP_BASE_API即可。将事先准备好的nginx.conf放在指定的目录下,3:添加新的开放端口,并重启,查看。修改mysql数据库连接。nginx.conf文件。
项目部署
Docker中更新vim
apt-get update
apt-get install vim docker
1:镜像下载与服务配置
1.1:Mysql
docker pull mysql
镜像下载启动:
docker run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=luohai --name mysql mysql
1.2:Nginx
镜像下载
docker pull nginx
将事先准备好的nginx.conf放在指定的目录下
/home/nginx/conf/nginx.conf
镜像启动
docker run -d --name nginx -p 80:80 -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/ruoyi/ruoyi-ui/:/home/ruoyi/ruoyi-ui nginx
1.3:redis
镜像下载
docker pull redis
镜像启动
docker run -d --name redis -p 6379:6379 redis
1.4:设置防火墙开放端口
1:查看防火墙状态:
systemctl status firewalld
2:查看打开的端口
firewall-cmd --zone=public --list-ports
3:添加新的开放端口,并重启,查看
firewall-cmd --zone=public --add-port=80/tcp --permanent
(--permanent永久生效,没有此参数重启后失效)
firewall-cmd --reload
4:删除端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent
2:web项目打包
2.1:修改url
直接修改配置文件的VUE_APP_BASE_API即可
2.2:打包
npm run build:prod
3:后端项目打包
3.1:修改配置信息
修改文件路径
修改redis地址
修改mysql数据库连接
3.2:后端打包
mvn clean package -Dmaven.test.skip=true
进入容器内部启动jar:
nohup java -jar -Xms256m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m ruoyi-admin.jar >> ruoyi-admin.log 2>&1
4:附件:
nginx.conf文件
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
charset utf-8;
location / {
root /home/ruoyi/ruoyi-ui;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
location /prod-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://192.168.64.130:8080/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
Nginx做负载均衡
基础命令安装
yum -y install lrzsz epel-release net-tools bash-completion unar zip unzip wget vim gcc-c++ tcl-devel -y
安装pcre nginx需要这个组件
yum -y install gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre pcre-devel
下载nginx
wget http://nginx.org/download/nginx-1.24.0.tar.gz
解压
tar -xf nginx-1.24.0.tar.gz
安装nginx 负载均衡依赖--with-stream模块
./configure --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-stream --with-http_ssl_module
编译安装
make && make install
修改配置文件
http同级目录下加
upstream backend { #定义集群,backend是集群名称,可自行定义
server 221.236.26.77:58099 weight=2; #集群组是两台服务器组成
server 221.236.26.78:58099 weight=4; 权重
}
定义一个server 使本机访问8080的请求负载均衡到221.236.26.77:58099和221.236.26.78:58099 2台服务器的两个端口上
server {
listen 8080;
server_name localhost;
location / {
proxy_pass http://backend; #对应upstream backend 集群名称
}
}
保存后重新加载nginx配置
sbin/nginx -t 检测配置文件
sbin/nginx -s reload 重新加载
重定向
server {
listen 80;
#填写绑定证书的域名
server_name www.xxx.com;
#(第一种)把http的域名请求转成https
return 301 https://$host$request_uri;
#(第二种)强制将http的URL重写成https
rewrite ^(.*) https://$server_name$1 permanent;
}
$host和$request_uri是值用户访问域名的地址
编写启动脚本step.sh,如下:
#!/bin/bash
#这里可替换为你自己的执行程序,其他代码无需更改
APP_NAME=cqxcx-api-3.3.2.0-SNAPSHOT.jar
if [ x"$JAVA_MEM_OPTS" == x ];then
JAVA_MEM_OPTS="-server -Xms512m -Xmx512m -Xmn128m -Xss256k"
fi
#使用说明,用来提示输入参数
usage() {
echo "Usage: sh 执行脚本.sh [start|stop|restart|status]"
exit 1
}
#检查程序是否在运行
is_exist(){
pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `
#如果不存在返回1,存在返回0
if [ -z "${pid}" ]; then
return 1
else
return 0
fi
}
#启动方法
start(){
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is already running. pid=${pid} ."
else
nohup java -jar $APP_NAME --spring.profiles.active=dev --server.port=8080 $JAVA_MEM_OPTS > ./$(date +%Y-%m-%d) 2>&1 &
echo "${APP_NAME} started"
fi
}
#停止方法
stop(){
is_exist
if [ $? -eq "0" ]; then
kill -9 $pid
echo "${APP_NAME} stoped"
else
echo "${APP_NAME} is not running"
fi
}
#输出运行状态
status(){
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is running. Pid is ${pid}"
else
echo "${APP_NAME} is NOT running."
fi
}
#重启
restart(){
stop
start
}
#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
"start")
start
;;
"stop")
stop
;;
"status")
status
;;
"restart")
restart
;;
*)
usage
;;
esac
更多推荐
所有评论(0)