赞
踩
本篇教程的使用到的技术有springboot、springcloud、Nacos、Docker、Nginx部署前后端分离访问的微服务。
首先我们需要在服务器中(或者本地部署启动一下Nacos),这里我采用服务器的方式进行部署,这里有一点不一样的是数据源采用MySQL5+的方式进行,替换了原先Nacos中默认的Java数据库方式。
这里简单的做一下说明就是需要在文章一中的数据库配置中格外注意需要将Nacos的数据源显示的指明为MySQL5+,如下图所示。
这里可以直接使用IDEA自带的工具进行打包,打包完成之后直接上传得到的jar包
这里仔细分享一下大家如何后台启动的方式执行Fat jar
在Spring Boot应用中,一个常见的方式是将应用打包为一个fat jar(或uber jar),这样可以方便地在不同环境下部署和运行。下面是如何在后台启动这样的jar包以及查看其日志的步骤:
使用nohup命令启动:
nohup
命令来启动jar包,以确保即使你关闭了终端或断开了SSH连接,程序仍然可以在后台运行。nohup java -jar yourapp.jar > app.log 2>&1 &
nohup
:确保命令在用户登出后继续运行。java -jar yourapp.jar
:使用Java运行你的jar包。> app.log
:将标准输出重定向到app.log
文件。2>&1
:将标准错误也重定向到标准输出(即app.log
文件)。&
:将进程放到后台执行。使用screen或tmux:
screen
或tmux
,你可以随时重新连接到这个会话来查看应用的输出。直接查看日志文件:
app.log
文件中。tail
命令查看日志文件的内容:tail -f app.log
app.log
中的日志,非常适合实时监控日志。配置Spring Boot的日志设置:
application.properties
或application.yml
文件中配置日志文件的路径和级别,例如:logging.file.name=application.log
logging.level.root=WARN
tail -f
的方式查看这个文件。这里我采用的是上面nohup命令启动方式。下面简单演示一下启动的命令
nohup java -jar km-module-base-biz-1.1.1.jar > km-module-base-biz-1.1.1.log 2>&1 &
使用上述命令保证服务可以被重定向到各自的日志中查看。
如何优雅的关闭掉启动的服务
每个在后台运行的进程都有一个唯一的进程标识号(PID)。你可以使用ps
命令结合grep
来查找与你的服务相关的PID。假设你的服务名为km-module-base-biz-1.1.1.jar
,可以使用如下命令:
ps aux | grep km-module-base-biz-1.1.1.jar
这将列出所有包含服务名的进程。输出通常看起来像这样:
username 1234 0.5 1.2 143036 24508 ? Ssl 10:31 0:01 java -jar km-module-base-biz-1.1.1.jar
在这里,1234
是进程ID。
kill
命令终止进程一旦你找到了进程ID,你可以使用kill
命令来终止它。如果进程不响应普通的kill
命令,你可能需要使用更强力的信号,如SIGKILL
(信号编号9):
kill 1234
或者,如果进程不响应,你可以使用:
kill -9 1234
执行kill
命令后,你可以再次运行ps aux | grep km-module-base-biz-1.1.1.jar
来确认进程是否已经被成功终止。
kill
(发送SIGTERM
)来允许应用完成当前任务并释放资源。kill -9
(SIGKILL
)强制关闭进程,应该是最后的手段,因为它不允许进程进行任何清理操作。下面展示一下服务启动之后的效果,启动之后会有日志的输出。
在Naocs上会出现服务启动的实例。
打包完成之后会得到对应的dist文件夹。
将dist文件夹上传到服务器中的对应位置
# 使用官方Nginx镜像作为基础镜像
FROM nginx:alpine
# 将dist目录下的文件复制到容器中的/usr/share/nginx/html目录下
COPY dist/ /usr/share/nginx/html/
COPY nginx.conf /etc/nginx/conf.d/default.conf
# 暴露80端口
# 这里需要注意的是暴露的端口需要和nginx配置的监听端口一致
EXPOSE 8541
# 使用Nginx运行Vue应用
CMD ["nginx", "-g", "daemon off;"]
server {
listen 8541;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Headers X-Requested-With;
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
#这里需要注意的是文件的路径需要是真实有效正确的容器中的目录不然会出现500或者404报错
root /usr/share/nginx/html/;
index index.html index.htm;
try_files $uri &uri/ /index.html;
}
location /api/{
rewrite ^/api/(.*) /$1 break;
proxy_pass http://192.168.0.170:9000;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
docker build -t front-project .
docker run -d -p 8541:8541 front-project
如果这篇文章对您有所帮助,或者有所启发的话,帮忙扫描下发二维码关注一下,您的支持是我坚持写作最大的动力。
求一键三连:点赞、转发、在看。
关注公众号:【舒一笑的架构笔记】,在公众号中回复:面试、代码神器、开发手册、时间管理有超赞的粉丝福利,另外回复:加群,可以跟很多BAT大厂的前辈交流和学习。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。