大家好,如果您还对jar部署到服务器不太了解,没有关系,今天就由本站为大家分享jar部署到服务器的知识,包括如何在ubuntu后台系统中部署jar包的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!
一、如何在ubuntu后台系统中部署jar包
1#使用域名或者IP,启动之后就可以这个域名或IP访问网站了
port: 80
contextPath:
spring:
profiles:
active: production
thymeleaf:
cache: true
jade4j:
caching: true
dataSource:
driverClassName: .mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1/spring_blog
username: root
password:
hibernate:
dialect: .hibernate.dialect.MySQLDialect
hbm2ddl.auto: update
show_sql: false
redis:
host: localhost
port: 6379
4.如何在Ubuntu中后台运行Spring Boot应用?推荐使用 nohup这个命令。
cd/root/spring-blog/current
nohup j*a-jar SpringBlog-0.1.jar--spring.config.location=lication-production.yml\>../logs/production.log 2>../logs/production.err&在Ubuntu还可以/etc/init.d目录下新建一个脚本,把SpringBlog作为service来运行,这样不用每次都打这么繁琐的命令了。新建一个/etc/init.d/spring_blog文件,内容如下:#!/bin/sh
SERVICE_NAME=spring_blog
HOME=/root/spring-blog
PATH_TO_JAR=$HOME/current/SpringBlog-0.1.jar
PID_PATH_NAME=/tmp/spring_blog.pid
LOG=$HOME/logs/production.log
ERROR_LOG=$HOME/logs/production.err
CONFIG=$HOME/lication-production.yml
case$1 in
start)
echo"Starting$SERVICE_NAME..."
if [!-f$PID_PATH_NAME ]; then
cd$HOME/current
nohup j*a-jar$PATH_TO_JAR--spring.config.location=lication-production.yml>$LOG 2>$ERROR_LOG&
echo$!>$PID_PATH_NAME
echo"$SERVICE_NAME started..."
else
echo"$SERVICE_NAME is already running..."
fi;;
stop)
if [-f$PID_PATH_NAME ]; then
PID=$(cat$PID_PATH_NAME);
echo"$SERVICE_NAME stoping..."
kill$PID;
echo"$SERVICE_NAME stopped..."
rm$PID_PATH_NAME
else
echo"$SERVICE_NAME is not running..."
fi;;
restart)
if [-f$PID_PATH_NAME ]; then
PID=$(cat$PID_PATH_NAME);
echo"$SERVICE_NAME stopping...";
kill$PID;
echo"$SERVICE_NAME stopped...";
rm$PID_PATH_NAME
echo"$SERVICE_NAME starting..."
cd$HOME/current
nohup j*a-jar$PATH_TO_JAR--spring.config.location=lication-production.yml>$LOG 2>$ERROR_LOG&
echo$!>$PID_PATH_NAME
echo"$SERVICE_NAME started..."
else
echo"$SERVICE_NAME is not running..."
fi;;
esac现在就可以使用service的方式来运行网站了。
sudo service spring_blog start
sudo service spring_blog stop
sudo service spring_blog restart
5.在本地自动化部署网站到远程服务器在本地我用了一个shell脚本和一个python脚本来配合自动化部署。
deploy.sh使用 gradle的命令发布jar包,使用 scp命令吧jar包上传到服务器上;
deploy.py使用 SSH远程登录服务器,并在服务器上执行部署命令。# deploy.sh#!/bin/bash
SERVER="your_server_ip"
JAR="build/libs/SpringBlog-0.1.jar"
echo"Building$JAR..."./gradlew build
echo"Upload$JAR to server$SERVER..."
scp$JAR root@$SERVER:/root/spring-blog/
python deploy.py
deploy.py主要使用了一个 paramiko库,用于 SSH远程登录服务器,并执行命令。这个脚本会把服务器上/root/spring-blog/current/SpringBlog-0.1.jar备份到/root/spring-blog/releases中,并把新发布的jar包放到/root/spring-blog/current中,然后重启 spring_blog服务。#!/usr/bin/python
import paramiko
import threading
import time
ip='your_server_ip'
user='root'
password=''
jar='SpringBlog-0.1.jar'
home='/root/spring-blog'
current=home+"/current"
releases=home+"/releases"
def execute_cmds(ip, user, passwd, cmd):
try:
ssh= paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip,22,user,passwd,timeout=5)
for m in cmd:
print m
stdin, stdout, stderr= ssh.exec_mand(m)# stdin.write("Y")
out= stdout.readlines()
for o in out:
print o,
print'%s\tOK\n'%(ip)
ssh.close()
except:
print'%s\tError\n'%(ip)
if __name__=='__main__':
print'Start deploying%s to server%s'%(jar, ip)
now= time.strftime("%Y%m%d%H%M%S")
cmd= ['echo Stop spring_blog service...&& service spring_blog stop','echo Flush all redis cache data...&& redis-cli-r 1 flushall','echo Stop redis server...&& service redis_6379 stop','echo Use new jar...'+\'&& mv'+ current+'/'+ jar+''+ releases+'/'+ now+'_'+ jar,'mv'+ home+'/'+ jar+''+ current+'/'+ jar,'echo Stop redis...&& service redis_6379 start','echo Start spring_blog service...&& service spring_blog start'+\'&& echo All done.'
]
a=threading.Thread(target=execute_cmds, args=(ip,user,password,cmd))
a.start()配置完以后,在本地写完代码就可以运行./deploy.sh一键部署到远程服务器了。
二、如何部署tomcat如何部署tomcat服务器
tomcat部署项目的几种方式
一、静态部署
1.将web项目文件复制到webs目录。
Tomcat的Webs目录是Tomcat的默认应用程序目录。当服务器启动时,将加载该目录中的所有应用程序。因此,JSP程序可以打包成一个war包,放在目录中。服务器会自动解压这个war包,并在这个目录下生成一个同名的文件夹。war包是一个具有特征格式的jar包,它是通过压缩一个web程序的所有内容得到的。对于特定的打包,可以使用IDE环境下的许多开发工具,如Eclipse等。也可以使用cmd命令:jar-cvfmywar.warmyweb。
默认的应用程序目录Webs也可以更改。打开Tomcat的conf目录中的server.xml文件,找到以下内容:
添加到节点:
工作空间你好WebRoot特权=
或者
可重新加载=mymy
或者
docBase=工作空间sms4
描述:
Path是虚拟路径;
DocBase是应用程序的物理路径;
WorkDir是该应用程序的工作目录,存储运行时生成的与该应用程序相关的文件;
调试是设置调试级别,0表示提供最少的信息,9表示提供最多的信息。
只有当privileged设置为true时,Tomcat的Web应用程序才能使用容器中的Servlet。
如果reloadable为true,tomcat会自动检测应用程序的/WEB-INF/lib和/WEB-INF/classes目录的变化,并自动加载新的应用程序,可以在不重启tomcat的情况下更改应用程序,实现热部署。
防资源锁定和防加锁热部署是需要配置的参数。默认值为false,以避免更新某个web。有时Tomcat无法完全删除旧的web,通常会在WEB-INF/lib下留下一个jar包,必须关闭后才能删除,导致自动部署失败。设置为true,Tomcat将在运行相应的web时将相应的源文件和jar文件复制到一个临时目录中。
3.创建上下文文件。
在conf目录中,创建一个新的Catalina\localhost目录,并在该目录中创建一个xml文件。名称不能随意选择,要和路径后的名称一致。根据下面路径的配置,xml的名称应该是hello(hello.xml),而这个xml文件的内容是:
工作空间你好WebRoot特权=
Tomcat附带了以下示例:
特权=
这个例子是tomcat自带的,编辑的内容其实和第二种方法一样,其中xml文件的名称是访问路径,可以隐藏应用的真实名称。
4.注意:
要删除一个Web应用,应该删除webs下对应的文件夹和server.xml中对应的上下文,以及Tomcat的conf删除localhost目录中相应的xml文件,否则Tomcat仍然会被配置和加载。。。
第二,动态部署
登录tomcat管理控制台:,输入用户名和密码管理应用程序并动态发布。
在上下文路径(选项)中输入/yourwebname:,它表示应用程序的访问。
应该在xml配置文件URL中指定XML文件,例如,在F:用以下内容建立下一个hmcx.xml文件:
如果有更简单的方法来部署。war文件,下面还有一个选择WAR文件uploae。单击浏览选择。war文件,然后单击部署。
tomcat环境安装配置?
右击“我的电脑”>>选择“属*”>>单击左侧栏“高级系统设置”>>“高级”>>“环境变量”,在系统变量这一栏里,配置Tomcat的环境变量:
1、新建CATALINA_BASE变量,变量名是CATALINA_BASE,变量值填Tomcat的安装位置或免安装版的就是其解压位置;
2、新建CATALINA_HOME变量,变量名是CATALINA_HOME,变量值填Tomcat的安装位置或免安装版的就是其解压位置;
3、找到Path变量,编辑,变量名是Path,变量值:复制,添加在原变量值的末尾;%CATALINA_HOME%bin;%CATALINA_HOME%lib(注意,前面的那个分号是用来和原有的变量值隔开的,如果原来有的话,就不用写了)。
Tomcat安装及配置教程?
Tomcat,是一个开放源代码的免费的web应用服务器,适用于中小型系统以及并发用户不多的场合。下面,我们就一起来看看如何安装Tomcat,以及怎么对Tomcat环境变量进行配置吧。
首先,登录到Tomcat官方装包。在【Download】目录下,找到并合适版本的Tomcat。(由于我的JDK为1.8.0,因此我选择了Tomcat8版本)。
后,根据自己电脑操作系统的位数,再选择右侧【core】下的压缩包进行,并保存。
因为的该压缩为免安装版Tomcat,完成后,将该压缩包解压即可。(记住该解压文件的存放位置,后面环境变量配置会用到)
环境变量配置
鼠标右键【这台电脑】-->选择【属*】->【高级系统设置】-->【系统变量】。
然后,“系统变量”框下的【新建】按钮。(1)新建CATALINA_BASE变量变量名:CATALINA_BASE变量值:C:myapache-tomcat-8.5.42-windows-x64apache-tomcat-8.5.42(Tomcat安装位置,即刚刚解压文件夹下bin文件所在位置)
(2)新建CATALINA_HOME变量变量名:CATALINA_HOME变量值:C:myapache-tomcat-8.5.42-windows-x64apache-tomcat-8.5.42(变量值同上,填Tomcat的安装位置)
(3)找到Path变量,编辑变量名:Path变量值:%CATALINA_HOME%bin(不要删除原有path变量值,在最后一行添加上这一句即可)
这样Tomcat就配置好了。打开cmd命令提示符,输入startup后回车,就可以看到Tomcat成功启动了。
tomcat的安装?
搜索tomcat,进入官网
左边download是的意思,有tomcat7tomcat8tomcat9三个版本可供选择。我们选tomcat9
tomcat9,页面刷新以后,从
32-bitWindowszip(pgp,md5,sha1)
64-bitWindowszip(pgp,md5,sha1)
32-bit/64-bitWindowsServiceInstaller(pgp,md5,sha1)
三个里面选一个,分别是32位压缩包,64位压缩包,32位安装包
完以后,解压出来
在bin目录里面找到startup.bat,双击运行
出来一个黑色窗口,几秒后,最后一行显示Catalina.startServerstartupin1078ms,说明运行成功
在浏览器栏输入localhost:8080,页面是这样的,说明tomcat运行成功
如何配置TomCat数据库?
1.在tomcatcontext.xml文件中配置jndi数据源(注意要将数据库驱动放入tomcatlib文件夹中)
2.使用springJndiObjectFactoryBean使用该数据源
tomcat详细配置方法?
先配置jdk环境变量,在我的电脑->属*->高级->环境变量->系统变量中添加以下环境变量(假定jdk安装在d:jdk1.6):J*A_HOME=d:jdk1.6classpath=.;%J*A_HOME%libdt.jar;%J*A_HOME%libtools.jar;path=%J*A_HOME%bin安装Tomcat后,在我的电脑->属*->高级->环境变量->系统变量中添加环境变量(假定tomcat安装在d:Tomcat):CATALINA_HOME:D:TomcatCATALINA_BASE:D:TomcatTOMCAT_HOME:D:Tomcat然后修改环境变量中的classpath,把tomat安装目录下的monlib下的servlet.jar追加到classpath中去,修改后的classpath如下:
classpath=.;%J*A_HOME%libdt.jar;%J*A_HOME%libtools.jar;%CATALINA_HOME%monlibservlet.jar;
三、jenkins上使用shell脚本nohup部署jar服务到remote服务器
先贴一下,我的jenkins里最后核心配置
remove_jar.sh脚本:
start_jar.sh脚本内容:
remove_jar.sh和 start_jar.sh在jenkins服务器上,需要将这两个shell在0.0.0.0(不能暴露)的远端去执行
没错,客官您一眼就看出来了,觉得简单的不值一提吧,先别着急,对搜这个问题的小菜鸡来说这里面也是大有文章,听我一一道来。
1、第一个问题:ps-ef|grep xxx.jar查到多余的pid
现象:在0.0.0.0上行 ps-ef| grep alk-wxapi-test.jar| grep-v grep| awk'{print$2}'只能查到一个pid,但是把这句话放到shell脚本里,在本地使用命令上远端执行,就会找到3个pid,而且kill时提示失败的错误。
现在已经知道原因了,但是当时确实是个问题。
已经解决不方便复现了,因此就描述一下就行了。
原因:shell里的这个命令也是通过bash在远程执行的,所以找到的别的无关紧要的pid其实是bash,因此在grep是除了排除grep本身( grep-v grep)外还要排除bash( grep-v bash)
最后命令是:
2、远程执行脚本,里面有nohup j*a-jar,发生错误: nohup: failed to run mand‘j*a’: No such file or directory
这是因为nohup时j*a环境变量没有读到,处理方式就是在nohup执行前加入
3、其他思路
4、第二条说jdk的路径因为每个服务企业都不一样,所以需要手动传改,这一点已经在脚本上做了修改,启动脚本上携带的第一个参数就是jdk的安装路径
这两个也都是比较好的思路,以后肯定有机会体验的,本篇到此。
ps-ef|grep-v在shell sh脚本中貌似无效?
linux下搭建zookeeper集群遇到的坑
nohup: cannot run mand异常解决
Zookeeper not starting, nohup error