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讀取速度直接決定文件讀取的快慢,雲伺服器硬碟的讀取速度比其他網站快很多,一般情況下都夠用。