A. 如何在Ubuntu 14.04服务器上自动化部署Spring Boot的应用
1. 在Ubuntu中安装java8
以下是一个简单的安装方法。
$ 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 mole: "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
作为配置文件,而在proction环境中我们系统它支持提供外部的配置文件 application-proction.yml
。
./gradlew bootRun # 开发环境下默认使用项目里的application.yml
# 在本地测试使用外部配置文件
./gradlew bootRun -Dspring.config.location=/path/to/application-proction.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-proction.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-proction.yml root@your_server_ip:/root/spring-blog/current
然后 SSH
登录服务器,修改配置文件 application-proction.yml
,试运行应用。
ssh root@your_server_ip
cd spring-blog/current
java -jar SpringBlog-0.1.jar --spring.config.location=application-proction.yml
# application-proction.yml
server:
address: raysmond.com # 使用域名或者IP,启动之后就可以这个域名或IP访问网站了
port: 80
contextPath:
spring:
profiles:
active: proction
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-proction.yml \
> ../logs/proction.log 2> ../logs/proction.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/proction.log
ERROR_LOG=$HOME/logs/proction.err
CONFIG=$HOME/application-proction.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-proction.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-proction.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
一键部署到远程服务器了。
B. 在服务器上布置一个应用软件系统的步骤
目前服务器常用的操作系统有三类:
-Unix
-linux
-Windows NT/2000/2003 Server.
这些操作系统都是符合C2级安全级别的操作系
统.但是都存在不少漏洞,如果对这些漏洞不了
解,不采取相应的措施,就会使操作系统完全暴
露给入侵者.
BJFU Info Department, QiJd第七章操作系统安全配置方案
UNIX系统
UNIX操作系统是由美国贝尔实验室开发的
一种多用户,多任务的通用操作系统.
诞生于1969年,在GE645计算机上实现一
种分时操作系统的雏形
1970年给系统正式取名为Unix操作系统.
到1973年,Unix系统的绝大部分源代码都
用C语言重新编写过,大大提高了Unix系统
的可移植性,也为提高系统软件的开发效率
创造了条件.
BJFU Info Department, QiJd第七章操作系统安全配置方案
主要特色
UNIX操作系统经过20多年的发展后,已经成为一种成
熟的主流操作系统,并在发展过程中逐步形成了一些
新的特色,其中主要特色包括5个方面.
-(1)可靠性高
-(2)极强的伸缩性
-(3)网络功能强
-(4)强大的数据库支持功能
-(5)开放性好
BJFU Info Department, QiJd第七章操作系统安全配置方案
Linux系统
Linux是一套可以免费使用和自由传播的
类Unix操作系统,主要用于基于Intel x86
系列CPU的计算机上.
Linux是在GPL(General Public
License)保护下的自由软件,版本有:
Redhatlinux,Suse,Slackware,
Debian等;国内有:XteamLinux,红旗
Linux.Linux流行的原因是免费并且功能
强大.
BJFU Info Department, QiJd第七章操作系统安全配置方案
Linux典型的优点
(1)完全免费
(2)完全兼容POSIX 1.0标准
(3)多用户,多任务
(4)良好的界面
(5)丰富的网络功能
(6)可靠的安全,稳定性能
(7)支持多种平台
BJFU Info Department, QiJd第七章操作系统安全配置方案
Windows系统
Windows NT(New Technology)是微软
公司第一个真正意义上的网络操作系统,
发展经过NT3.0,NT40,NT5.0
(Windows 2000)和NT6.0(Windows
2003)等众多版本,并逐步占据了广大的
中小网络操作系统的市场.
Windows NT众多版本的操作系统使用了
与Windows 9X完全一致的用户界面和完全
相同的操作方法,使用户使用起来比较方
便.与Windows 9X相比,Windows NT的
网络功能更加强大并且安全.
BJFU Info Department, QiJd第七章操作系统安全配置方案
Windows NT系列操作系统
Windows NT系列操作系统具有以下三方面的优点.
(1)支持多种网络协议
-由于在网络中可能存在多种客户机,如Windows 95/98,Apple
Macintosh,Unix,OS/2等等,而这些客户机可能使用了不同的
网络协议,如TCP/IP协议,IPX/SPX等.Windows NT系列操作支
持几乎所有常见的网络协议.
(2)内置Internet功能
-内置IIS(Internet Information Server),可以使网络管理员轻松
的配置WWW和FTP等服务.
(3)支持NTFS文件系统
-NT同时支持FAT和NTFS的磁盘分区格式.使用NTFS的好处主要
是可以提高文件管理的安全性,用户可以对NTFS系统中的任何文
件,目录设置权限,这样当多用户同时访问系统的时候,可以增加
文件的安全性.
BJFU Info Department, QiJd第七章操作系统安全配置方案
安全配置方案初级篇
安全配置方案初级篇主要介绍常规的操作
系统安全配置,包括十二条基本配置原
则:
(1)物理安全,(2)停止Guest帐号,
(3)限制用户数量
(4)创建多个管理员帐号,(5)管理员帐号改名
(6)陷阱帐号,(7)更改默认权限,(8)设置
安全密码
(9)屏幕保护密码,(10)使用NTFS分区
(11)运行防毒软件,(12)确保备份盘安全.
BJFU Info Department, QiJd第七章操作系统安全配置方案
1,物理安全
服务器应该安放在安装了监视器的隔离房
间内,并且监视器要保留15天以上的摄像
记录.
另外,机箱,键盘,电脑桌抽屉要上锁,
以确保旁人即使进入房间也无法使用电
脑,钥匙要放在安全的地方.
2,停止Guest帐号
在计算机管理的用户里面把Guest帐号停用,任何时候都不允许
Guest帐号登陆系统.
为了保险起见,最好给Guest 加一个复杂的密码,包含特殊字符,数
字,字母的长字符串.
用它作为Guest帐号的密码.并且修改Guest帐号的属性,设置拒绝
远程访问,如图所示.
BJFU Info Department, QiJd第七章操作系统安全配置方案
3 限制用户数量
去掉所有的测试帐户,共享帐号和普通部门帐号
等等.用户组策略设置相应权限,并且经常检查
系统的帐户,删除已经不使用的帐户.
帐户很多是黑客们入侵系统的突破口,系统的帐
户越多,黑客们得到合法用户的权限可能性一般
也就越大.
对于Windows NT/2000主机,如果系统帐户超过
10个,一般能找出一两个弱口令帐户,所以帐户
数量不要大于10个.
BJFU Info Department, QiJd第七章操作系统安全配置方案
4 多个管理员帐号
虽然这点看上去和上面有些矛盾,但事实上是服
从上面规则的.创建一个一般用户权限帐号用来
处理电子邮件以及处理一些日常事物,另一个拥
有Administrator权限的帐户只在需要的时候使
用.
因为只要登录系统以后,密码就存储再
WinLogon进程中,当有其他用户入侵计算机的
时候就可以得到登录用户的密码,尽量减少
Administrator登录的次数和时间.
5 管理员帐号改名
Windows 2000中的Administrator帐号是不能被停用的,这意味着
别人可以一遍又一边的尝试这个帐户的密码.把Administrator帐户
改名可以有效的防止这一点.
不要使用Admin之类的名字,改了等于没改,尽量把它伪装成普通用
户,比如改成:guestone.具体操作的时候只要选中帐户名改名就
可以了,如图所示.
6 陷阱帐号
所谓的陷阱帐号是创建一个名为"Administrator"的本地帐
户,把它的权限设置成最低,什么事也干不了的那种,并
且加上一个超过10位的超级复杂密码.
这样可以让那些企图入侵者忙上一段时间了,并且可以借
此发现它们的入侵企图.可以将该用户隶属的组修改成
Guests组,如图所示.
7 更改默认权限
共享文件的权限从"Everyone"组改成"授权用户"."Everyone"在
Windows 2000中意味着任何有权进入你的网络的用户都能够获得这
些共享资料.
任何时候不要把共享文件的用户设置成"Everyone"组.包括打印共
享,默认的属性就是"Everyone"组的,一定不要忘了改.设置某文
件夹共享默认设置如图所示.
BJFU Info Department, QiJd第七章操作系统安全配置方案
8安全密码
一些网络管理员创建帐号的时候往往用公司名,
计算机名,或者一些别的一猜就到的字符做用户
名,然后又把这些帐户的密码设置得比较简单,
这样的帐户应该要求用户首此登陆的时候更改成
复杂的密码,还要注意经常更改密码.
这里给好密码下了个定义:安全期内无法破解出
来的密码就是好密码,也就是说,如果得到了密
码文档,必须花43天或者更长的时间才能破解出
来,密码策略是42天必须改密码.
C. 如何将APP部署在阿里云服务器上
1。远程登录第一次购买ECS后,会把该ECS服务器的root账号、密码发送购买者的邮箱,然后购买者可以通过远程登录到ECS服务器。
2。安装web环境根据自己应用特点选择安装相关web服务器tomcat或者jetty,阿里云提供了一条龙安装部署脚本,为开发者提供了更多的方便。
3。打包应用将web源码下载到本地,使用命令mvnpackage打成war包。如果不是maven工程,可以用类似ant打成war包。
4。上传war包Linux下面可以使用sftp上传war包,上传war包到指定目录后进行解压。
5。启动web服务将tomcat或jetty服务启动。
6。配置反向代理、绑定域名。
D. 如何在生产服务器上部署 Node.js 应用
服务器推荐用nginx,配置简单,性能强悍。
nginx可以使用代理访问后端的Node.js应用服务器。
配置方法:
1)在配置文件http段内容添加后端服务器:
http {
#添加后端服务器,和nginx负载均衡配置一样
upstream nodejs {
server 127.0.0.1:8080;
}
...
}
2)给应用添加虚拟主机:
server {
listen 80;
server_nameIP
location / {
proxy_pass nodejs;#名字和前面的对应,将所有的请求转发给后端的node
}
access_log logs/nodejs.access.log main;#如果需要日志的话
}
推荐将静态文件如css、js和图片和应用服务器分开。
E. 如何把本地项目部署到服务器上
把本地项目部署到服务器上方法比较多,这里以javaee项目为例:
把项目打包成zip,FTP上传到生产服务器tomcat的webapps目录下解压;
本地修改好的文件,立即FTP上传到生产服务器对应的目录;
生产服务器安装svn服务,在本地把修改过的文件commit,然后生产服务器update。
拓展资料:
服务器,也称服务器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。
服务器的构成包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
在网络环境下,根据服务器提供的服务类型不同,分为文件服务器,数据库服务器,应用程序服务器,WEB服务器等。
按应用层次划分通常也称为“按服务器档次划分”或 “按网络规模”分,是服务器最为普遍的一种划分方法,它主要根据服务器在网络中应用的层次(或服务器的档次来)来划分的。要注意的是这里所指的服务器档次并不是按服务器CPU主频高低来划分,而是依据整个服务器的综合性能,特别是所采用的一些服务器专用技术来衡量的。按这种划分方法,服务器可分为:入门级服务器、工作组级服务器、部门级服务器、企业级服务器。
服务器—网络
F. 如何和实现在一个云服务器上部署多个应用
借助云服务商的服务器管理助手,比如说景安服务器管理助手,可以实现在一台云服务器上部署对个网站。操作流程如下:
创建网站A和B,并分别填入名称、ftp、用户名和密码等信息;
分配网站CPU、内存和带宽资源;
上传网站A和B的网站程序至相应的根目录;
域名解析与绑定.
G. 如何将app部署在阿里云服务器上
1。远程登录第一次购买ECS后,会把该ECS服务器的root账号、密码发送购买者的邮箱,然后购买者可以通过远程登录到ECS服务器。
2。安装web环境根据自己应用特点选择安装相关web服务器tomcat或者jetty,阿里云提供了一条龙安装部署脚本,为开发者提供了更多的方便。
3。打包应用将web源码下载到本地,使用命令mvnpackage打成war包。如果不是maven工程,可以用类似ant打成war包。
4。上传war包Linux下面可以使用sftp上传war包,上传war包到指定目录后进行解压。
5。启动web服务将tomcat或jetty服务启动。
6。配置反向代理、绑定域名。
H. 如何配置和部署云服务器应用
选择云服务器的配置的话就要主要参考这几个因素:CPU,内存,硬盘,带宽,线路,操作系统和地区。下面分别说一下:
CPU就代表了云服务器的运算能力,如果网站流量较大,如果网站流量较大,动态页面比较多,建议选择2核以上CPU,而且目前的云计算厂商提供云服务器的配置还可以随时增加,也就是当你觉得业务量增长了,需要更强的运算能力了,那么就可以直接在官网上进行资源扩充。
内存是数据的中转站,也是决定网站打开速度的重要因素,内存越大,可用缓存越大,打开速度也就越快。根据你网站的规模选择合适配置的空间,假如是一般的个人博客,或者企业展示网站类,就可以选小一点的,若是商城类,新闻类就要相对大一点的空间,针对于各种应用场景,需要采取不同规格的配置,总之,最适合的才是最好的。
硬盘是存储数据的地方,硬盘的大小要根据网站的数据大小决定,在选择时应该考虑到剩余空间。另外硬盘的I/O读取速度直接决定文件读取的快慢,云服务器硬盘的读取速度比其他网站快很多,一般情况下都够用。