以下是一个简单的安装方法。
$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java8-installer
$ java -version
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
2. 本地使用Gradle发布Spring Boot应用
我这里使用Jetty9作为内置的服务器。
// ...
bootRun {
systemProperties = System.properties
}
configurations {
compile.exclude module: "spring-boot-starter-tomcat"
}
dependencies {
// spring boot
compile "org.springframework.boot:spring-boot-starter-web:1.3.0.M5"
compile "org.springframework.boot:spring-boot-starter-jetty"
// ...
}
//...
在本地运行默认使用 src/main/resources/application.yml
作为配置文件,而在production环境中我们系统它支持提供外部的配置文件 application-production.yml
。
./gradlew bootRun # 开发环境下默认使用项目里的application.yml
# 在本地测试使用外部配置文件
./gradlew bootRun -Dspring.config.location=/path/to/application-production.yml
# 发布
./gradlew build
# 运行
java -jar build/libs/SpringBlog-0.1.jar # 默认使用jar包里面的application.yml配置文件
# 使用外部配置文件
java -jar build/libs/SpringBlog-0.1.jar --spring.config.location=/path/to/application-production.yml
3. 在Ubuntu服务器上部署Spring Boot应用
# 上传SpringBlog-0.1.jar到服务器
scp build/libs/SpringBlog-0.1.jar root@your_server_ip:/root/spring-blog/current
# 在服务器上配置生产环境的配置文件
scp application-production.yml root@your_server_ip:/root/spring-blog/current
然后 SSH
登录服务器,修改配置文件 application-production.yml
,试运行应用。
ssh root@your_server_ip
cd spring-blog/current
java -jar SpringBlog-0.1.jar --spring.config.location=application-production.yml
# application-production.yml
server:
address: raysmond.com # 使用域名或者IP,启动之后就可以这个域名或IP访问网站了
port: 80
contextPath:
spring:
profiles:
active: production
thymeleaf:
cache: true
jade4j:
caching: true
dataSource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1/spring_blog
username: root
password:
hibernate:
dialect: org.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 java -jar SpringBlog-0.1.jar --spring.config.location=application-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/application-production.yml
case $1 in
start)
echo "Starting $SERVICE_NAME ..."
if [ ! -f $PID_PATH_NAME ]then
cd $HOME/current
nohup java -jar $PATH_TO_JAR --spring.config.location=application-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 java -jar $PATH_TO_JAR --spring.config.location=application-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_command(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
一键部署到远程服务器了。
一、安装Windows部署服务(WDS) 1、选择“开始—程序—管理工具—服务器管理器”,打开“服务器管理器”控制台,选择“角色”选项,单击“添加角色”链接,运行“添加角色向导 2、在“选择服务器角色”对话框中,选中“windows 部署服务”复选框,如图1-13、在“选择角色服务”对话框中,选中“部署服务器”复选框如同3-1所示4、 在“确认安装选择”对话框中,查看并确认将要安装的角色或功能,如图4-1所示5、单击“安装”按钮开始安装。安装结束后,显示“安装结果”对话框,如图5-1所示,单击“关闭”按钮退去即可二、到这windows 部署服务就安装完成了,下面讲如何运行windows 部署服务,要运行Windows 部署需要安装DHCP服务,下面安装DHCP服务。 6、在“选择服务器角色”对话框中添加“DHCP服务器”如图6-1所示7、在“选择网络连接绑定”对话框中选择“172.30.5.15”如图7-1所示8、在“添加或编辑DHCP作用域”对话框中,为当前DHCP服务器添加作用域,作用域的地址范围是172.30.5.15—172.30.5.199。如图8-1所示9、在“配置DHCPv6无状态模式”对话框中,选择“对此服务器禁用DHCPv6无状态模式”单击按钮,如图9-1所示10、安装DHCP服务器完成之后,在“服务器管理器”窗口中定位到”DHCP服务器”,删除其他作用域(只保留图8-1创建的作用域),然后打开 该作用域的“属性”对话框(如图10-1) 在“高级”选项卡中选择“两者”单选按钮,如图10-2所示11、最后在“IPv4属性”对话框中,为DHCP服务器绑定172.30.5.15 的服务器地址如图11-1所示三 .到此DHCP也安装完成,下面介绍Windows部署服务的配置过程与步骤 12、打开“服务器管理器”定位到“角色—Windows部署服务”,开始启动Windows部署服务。 13、右击dc.heinfo.local(如果你计算机名为win 2008-1 域名为a.com那就右击win2008.a.com) ,从快捷菜单中选择“配置服务器”的命令,如图13-1所示,启动“Windows 部署服务配置向导”。 14、在“欢迎页面”对话框中列出了Windows 部署服务所需的条件,如图14-1所示15、在“远程安装文件夹的位置”对话框中,选择一个可用空间最大的NTFS分区,作为Windows 部署服务保存操作系统映像的位置,如图15-1所示16、在”DHCP选项60”对话框中,配置DHCP服务器。如果网络中的DHCP 服务器与Windows 部署服务在同一台计算机上,请选中“不侦听端口67”和“将DHCP选项标记#60配置为PXECLIient复 选框,”如图16-1所示17、在“PXP服务器初始设置”对话框中,选择“响应所有(已知和未知)客户端计算机”单选按钮,如图17-1所示18、在“配置完成”对话框中,选择“立即在Windows 部署服务器上添加映像”复选框,如图18-1所示19.在“Windows 映像文件位置”对话框中,选择将要添加的Windows 操作系统的位置。在本例中,将 Windows 7(集成 SP1)的64位安装光盘放在光驱中,该光驱盘符为D。在本例中选择D:,如图19-1所示(在选择的 时候先把映像放在光驱中,然后选择光驱)20.在“映像组”对话框,选择“创建新的映像组”单选按钮,在此命令映像组名称为“Windows 7 SP1”,如图20-1所示21.在“复查设置”对话框中,显示了图19-1中要添加的映像数,分别为“启动映像数”与“安装映像数”,如图21-1所示【说明】“启动映像”是用来安装计算机的操作系统映像。从windows vista 开始,启动与安装映像分开。用高版本的启动映像启动计算机,可以安装“低版本”的操作系统,但用低版本的启动映像启动计算机,将不能安装“高版本”的操作系统。例如,可以用windows 7 SP1 的启动映像启动计算机,可以用来安装windows vista;windows server 2008;windows Server 2008 R2;windows 7;windows 7集成SP1包,但用windows vasta 的启动映像启动计算机,则不能安装windows 7;windows server 2008 R2操作系统映像。 22 .在“任务进度”对话框中,当操作系统的启动映像与安装映像添加到windows部署服务器之后,显示“操作完成”,单击“完成”按钮,如图22-1所示23.返回到“服务器管理器”窗口,可以看到已经添加了4个windows 7的安装镜像,如图23-1所示三.下面介绍添加其他操作系统的安装镜像 24.定位到“服务器管理器—角色—windows 部署服务—服务器—(服务器计算机名)—安装映像”,在右侧空白窗格中央右击“添加映像组”,如图24-1所示25、在“添加映像组”对话框中,输入要创建的组名,在本例中为“windows 7 sp1 x32”。 26、然后定位到新创建的映像组,在右侧空白窗口中右击,在弹出的快捷菜单中选择“添加安装映像”命令,如图26-1所示。27.然后在光驱中换上windows 7 集成sp1 的32位版本,在“映像文件”对话框中浏览选择windows 7 安装光盘根目录中的 \sources、install.vim文件。 【说明】在Windows Vista 及其以后的操作系统安装光盘的sources目录中,有两个映像文件,其中名为install.wim的是安装映像,名为boot.vim的是启动映像。 28.在“可用映像列表”对话框中,显示了可用的映像列表及描述信息。如果采用默认的名称和描述,请选中“使用每个选定映像的默认名称和说明”复选框的选择。如图28-129、如上图中取消了“使用每个选定映像的默认名称和说明”复选框的选择,则会弹出“映像元数据”对话框,并依次显示每个映像的名称和说明,可以根据需要修改,如图29-1和29-230、在“摘要”对话框中显示要添加的映像,如图30-1所示31、添加映像完成后,单击“完成”按钮如图31-132、如果要添加其他操作系统的映像,强参照前面的步骤,创建映像组并添加映像,这些就不一一介绍了 四.在添加完映像后,需要添加启动映像。需要注意的是,并不是每次添加安装映像都要添加启动映像 .如果已经有“同版本”的启动映像,则不用添加。Windows 启动映像与安装映像的关 系是: (1)windows 7 SP1与windows server 2008 R2 SP1的启动映像相同,是同一版本。目前该版本的启动映像可以启动并安装包括windows 7 SP1,windows server 2008 SP1 极其以前的操作 系统。例如windows vista, windows server 2008 windows server 2008 R2等 (2)windows启动映像也分为32位和64位。32位启动映像可以装32位和64位操作系统,而64位只能安装64位操作系统。如果windows 部署服务中同时有32位和64位启动映像,则在使 用windows部署的时候,会自动侦测客户端的类型,如果符合64位要求,则会出现64位和32位启动映像的选择,让用户选择;如不符合64位要求,则会默认安装32位启动映像。 (3)在添加更新版本的启动映像之后,可以删除以前版本的启动映像 【接下来介绍添加启动映像的方法,以添加64位的Windows 7SP1的启动映像为例,步骤如下】 33、在“Windows 部署服务”中,定位到“启动映像”,在右侧空白窗格中右击“添加启动映像”如图33-1所示34、在“映像文件”对话框中,从Windows 7 安装光盘中选择浏览选择名为boot.wimd的启动映像,如图34-1所示35、在“添加元数据”对话框中显示了添加的映像名称和说明,用户也可以根据自己的需求或习惯进行定制。如图35-136、在“摘要”对话框中显示了要添加的影响的名称和位数(x64表示64位)如图36-1所示37、添加完成后,单击“完成”按钮,完成镜像的添加。如图37-1所示38、添加启动映像完成之后,返回到“Windows 部署服务”,在“启动映像”页显示了添加的映像,如图38-1所示39、如果要删除不再使用的映像,可以右击该映像,在弹出的快捷菜单中选择“删除”命令根据提示进行操作即可,如图39-1【下面介绍配置Windows部署服务 】 五、在添加完安装映像与启动映像后,右击服务器名,从快捷菜单中选择“属性”命令(见图39-2),可以用来配置Windows部署服务器40、选择“PXE响应设置”选项卡,选中“响应所有(已知和未知)客户端计算”单选按钮,如图40-1所示41、选择“目录服务”选项卡。在“新建客户端命令策略”选项区域中设置客户端计算机的命名原则,在“客户端账户位置”选项区域中设置将使用Windows部署服务远程安装操作系统的计算机存放的位置。如图41-1所示【说明】在以前的RIS服务器中,使用RIS部署的计算机只能保存在AD的computers容器中,而在Windows部署服务中,可以将使用windows部署服务安装操作系统的计算机统一保存在一个容器 中。 42、在“启动”选项卡中,设置“默认启动映像”和“默认启动程序”通常选择默认的就可以,如图42- 1所示43、在“高级”选项卡中,将选择Windows 部署服务使用AD服务器和是否对DHCP中授权,请选中“在DHCP中授权此windows部署服务服务器”单选按钮,如下图44、在DHCP选项卡中设置DHCP服务,如果当前服务器上没有DHCP服务器,请选择两项。如图44-1所示45、在“客户端”选项卡中,设置是否启用无人参与安装,如图45-1所示设置完成后,单击“确定”按钮。完成Windows 部署服务器的设置,接下来创建一个windows 7虚拟机,在虚拟机中,通过网络安装windows 7操作系统,主要步骤如下: 46.创建Windows 7虚拟机后,启动虚拟机,当出现Press F12 for networkserver boot时,按F12键,如图46-1所示欢迎分享,转载请注明来源:夏雨云
评论列表(0条)