專案github地址:github.com/pc859107393…
實時專案同步的地址是國內的碼雲:git.oschina.net/859107393/m…
我的簡書首頁是:www.jianshu.com/users/86b79…
上一期是:[手把手教程][第二季]java 後端部落格系統文章系統——No7
工具
- IDE為idea16
- JDK環境為1.8
- gradle構建,版本:2.14.1
- Mysql版本為5.5.27
- Tomcat版本為7.0.52
- 流程圖繪製(xmind)
- 建模分析軟體PowerDesigner16.5
- 資料庫工具MySQLWorkBench,版本:6.3.7build
本期目標
在Linux上面釋出專案
思路解析
在win上面我們釋出java web專案我們的大致思路如下:
① 配置JDK
② 安裝MySQL
③ 安裝Tomcat
④ 釋出專案
⑤ 安裝Nginx等···
但是我們這裡忽略了最重要的初始第一步,what?其實不論我們在什麼裝置上面進行操作,第一件事是需要連線到裝置上面。
但是我們平常做的操作就是一直在操作我們可以直接觸碰到的物理機,也就是說我們通過直接操作物理機連線了我們面前的電腦裝置。
所以,當我們需要將專案釋出到伺服器的時候,我們需要通過手段連線到伺服器裝置上面。常見的釋出專案的連線手段有:
- 遠端連線(win系統伺服器常用)
- ssh連線( linux/mac伺服器,可以直接通過Linux/mac的終端連線 )
- SFTP連線(基於SSH連線的檔案傳輸協議)
- 等···
通過上面的介紹後,我們也就明白要想連線上Linux/mac的伺服器,我們需要通過ssh連結或者SFTP連線上伺服器。
SSH連線伺服器
既然我們要釋出專案到伺服器,首先我們需要在本地連線上遠端伺服器,連線成功的截圖如下:
我們可以看到上面途中我用紅色矩形圈出來一部分東西,同時在右邊寫上了編號。
- ①這裡的命令是使用ssh協議登入伺服器的意思。
ssh 10.211.55.7 -l pc
//這裡的意思是使用ssh協議、遠端伺服器IP地址是10.211.55.7、被登入的使用者是pc
//當然我們可以簡單點,不指定使用者登入如:
ssh 10.211.55.7
//但是這樣的話終端中會詢問使用什麼使用者登入。 所以推薦使用第一種指定使用者登入的方式。複製程式碼
- ②提示SSH連線的金鑰資訊,輸入yes繼續,或者輸入no結束。
- ③輸入登入使用者的密碼,該密碼不會再終端中顯示。
當一切需要的資訊都正確後,我們就能連結到伺服器了。當然我們通過終端連線伺服器成功後,我們終端中的操作就相當於本地命令操作。所以,我們需要了解Linux常用命令。
正如上圖所示,我們已經連線成功伺服器,接著就應該執行上面的五步。
安裝和配置JDK
a. 檢測jdk是否存在,在終端中輸入java -version後如下所示:
[pc@centos-linux ~]$ java -version
java version "1.7.0_131"
OpenJDK Runtime Environment (rhel-2.6.9.0.el6_8-x86_64 u131-b00)
OpenJDK 64-Bit Server VM (build 24.131-b00, mixed mode)
[pc@centos-linux ~]$複製程式碼
檢查java版本的命令執行後我們可以看到對應的提示資訊如下:
- 已經存在JDK
- JDK版本是1.7.0_131
- 最重要的是JDK不是我們常用的 oracle JDK,而是開源的OpenJDK
這個時候我們需要處理什麼呢?嚴格的來說,我們需要將伺服器上面的jdk置換為我們開發版本所使用的JDK,這樣我們能避免很多不必要的問題,所以我們應該執行後續步驟,也就是解除安裝OpenJDK,然後安裝和配置oracle JDK。
b. 檢測openJDk,並解除安裝,在終端輸入 rpm -qa | grep java 後如下:
[pc@centos-linux ~]$ rpm -qa | grep java
java-1.6.0-openjdk-1.6.0.41-1.13.13.1.el6_8.x86_64
tzdata-java-2017a-1.el6.noarch
java-1.7.0-openjdk-1.7.0.131-2.6.9.0.el6_8.x86_64
[pc@centos-linux ~]$
//注意:
//rpm是小紅帽下面的包管理,相關的請自行百度
//rpm -qa 是查詢本機當前系統下所有的Linux軟體包
// | grep java 是管道查詢java相關的包
//具體的詳細資訊請自行百度,不再多餘贅述複製程式碼
在上面的命令執行結果中我們可以看到跟java相關的東西有三個,但是有一個tzdata-java-2017a-1.el6.noarch我們不知道是什麼,既然我們不知道那麼我們就不管它,直接解除安裝OpenJDk。
- 先解除安裝 openjdk-1.7
- 再解除安裝 openjdk-1.6
- 既然在終端中操作,那麼我們接著就應該輸入命令來刪除jdk,如下:
[pc@centos-linux ~]$ rpm -e --nodeps java-1.7.0-openjdk-1.7.0.131-2.6.9.0.el6_8.x86_64
error: can't create transaction lock on /var/lib/rpm/.rpm.lock (Permission denied)
[pc@centos-linux ~]$
// 這裡提示我們不能進行解除安裝操作,原因是我們沒有足夠的許可權。
//所以我們接著使用root使用者來解除安裝,如下:
[pc@centos-linux ~]$ su
Password:
[root@centos-linux pc]# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.131-2.6.9.0.el6_8.x86_64
[root@centos-linux pc]#
//這時候按照道理講我們應該已經刪除了JDK1.7,不過為了驗證我們還是需要執行檢視java包的命令,如下:
[root@centos-linux pc]# rpm -qa | grep java
java-1.6.0-openjdk-1.6.0.41-1.13.13.1.el6_8.x86_64
tzdata-java-2017a-1.el6.noarch
[root@centos-linux pc]#
// 我們可以看到已經成功的解除安裝了jdk1.7,接著解除安裝jdk1.6再驗證
[root@centos-linux pc]# rpm -e --nodeps java-1.6.0-openjdk-1.6.0.41-1.13.13.1.el6_8.x86_64
[root@centos-linux pc]# rpm -qa | grep java
tzdata-java-2017a-1.el6.noarch
[root@centos-linux pc]#複製程式碼
上面的操作中我們已經解除安裝完成了jdk,涉及到的主要命令有:
- rpm的管道查詢java包,命令是:rpm -qa | grep java
- rpm解除安裝java包,命令是: rpm -e --nodeps 完整包名
c. 安裝oracleJDK
我們來回顧下我們在win上面安裝jdk的步驟。
- 下載jdk
- 找到jdk安裝檔案並執行該檔案
- 設定jdk存放目錄,等待安裝程式執行完成
- 配置環境變數
- 重啟電腦使環境變數生效
通過上面的總結我們可以大致明白Linux的步驟應該是類似的,可能只是在一些細節上面不一樣。let's go!
第一步: 上傳jdk安裝包到伺服器。因為我是mac系統,我就直接使用了圖形化工具Cyberduck來進行SFTP連線,如下:
在左上角的新建連線那裡我們可以點選後新建連線,然後在彈出框裡面輸入對應的資訊(伺服器地址、使用者名稱、密碼)就可以建立連線成功。接著我們開始上傳檔案:
我們在圖形化介面中,可以手動選擇指定目錄到/usr/src/java,當然也可以是其他目錄。這個圖形化介面基本操作就和檔案瀏覽器一樣,主要快捷功能都在滑鼠右鍵裡面。
檔案上傳成功後,我們可以看到資訊如下:
第二步: 安裝jdk到伺服器。這個時候我們切換到終端來繼續操作。輸入安裝指令如下:
[root@centos-linux java]# ls
jdk-8u131-linux-x64.rpm
[root@centos-linux java]# chmod +x jdk-8u131-linux-x64.rpm
[root@centos-linux java]# rpm -ivh jdk-8u131-linux-x64.rpm
Preparing... ########################################### [100%]
1:jdk1.8.0_131 ########################################### [100%]
Unpacking JAR files...
tools.jar...
plugin.jar...
javaws.jar...
deploy.jar...
rt.jar...
jsse.jar...
charsets.jar...
localedata.jar...
[root@centos-linux java]#複製程式碼
首先我們先給可執行檔案(jdk的安裝包)授予可執行許可權,程式碼為: chmod +x 可執行檔案完整路徑和名稱。 當然如果在當前目錄下,則是直接使用: chmod +x 檔名。
接著,我們使用rpm命令執行安裝程式,命令為:rpm -ivh 檔名。
到這裡我們的JDK安裝程式基本是完成了。接著我們應該配置環境變數。
第三步驟: 配置環境變數。 我們先查詢安裝jdk的目錄,具體如下:
[root@centos-linux java]# ls
jdk-8u131-linux-x64.rpm
[root@centos-linux java]# cd ..
[root@centos-linux src]# ls
debug java kernels
[root@centos-linux src]# cd ..
[root@centos-linux usr]# ls
bin games java lib64 local share tmp
etc include lib libexec sbin src
[root@centos-linux usr]# cd java
[root@centos-linux java]# ls
default jdk1.8.0_131 latest
[root@centos-linux java]# cd jdk1.8.0_131
[root@centos-linux jdk1.8.0_131]# ls
bin javafx-src.zip man THIRDPARTYLICENSEREADME-JAVAFX.txt
COPYRIGHT jre README.html THIRDPARTYLICENSEREADME.txt
db lib release
include LICENSE src.zip
[root@centos-linux jdk1.8.0_131]# pwd
/usr/java/jdk1.8.0_131複製程式碼
通過上面的一系列操作,我們拿到了jdk的目錄,接下來建立環境變數,輸入命令:vi /etc/profile 後結果如下:
# /etc/profile
# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc
# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.
pathmunge () {
case ":${PATH}:" in
*:"$1":*)
;;
*)
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
esac
}
if [ -x /usr/bin/id ]; then
if [ -z "$EUID" ]; then
# ksh workaround
EUID=`id -u`
UID=`id -ru`
fi
USER="`id -un`"
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
fi
# Path manipulation
if [ "$EUID" = "0" ]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
else
pathmunge /usr/local/sbin after
pathmunge /usr/sbin after
pathmunge /sbin after
fi
HOSTNAME=`/bin/hostname 2>/dev/null`
HISTSIZE=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; then
export HISTCONTROL=ignoreboth
else
export HISTCONTROL=ignoredups
fi
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
# By default, we want umask to get set. This sets it for login shell
# Current threshold for system reserved uid/gids is 200
# You could check uidgid reservation validity in
# /usr/share/doc/setup-*/uidgid file
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 022
fi
for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then
if [ "${-#*i}" != "$-" ]; then
. "$i"
else
. "$i" >/dev/null 2>&1
fi
fi
done
unset i
unset -f pathmunge複製程式碼
在上面的程式碼中我們沒有看到jdk的配置,所以我們接著按一下a鍵開始輸入內容,輸入內容如下:
#set java enviroment
JAVA_HOME=/usr/java/jdk1.8.0_131
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH複製程式碼
輸入完成後,我們按一下esc退出編輯,接著輸入 :wq 退出並儲存編輯,最後我們輸入命令檢視是否寫入成功,命令如下:
//檢視環境變數配置檔案
[root@centos-linux /]# cat /etc/profile
//應用環境變數
[root@centos-linux /]# source /etc/profile複製程式碼
我們可以看到已經把配置寫入環境變數中了,這時候輸入:java -version可以看到我們的jdk已經安裝完成並且生效。
[root@centos-linux jdk1.8.0_131]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
[root@centos-linux jdk1.8.0_131]#複製程式碼
注意:如果你最後發現所有命令都失效,建議仔細檢查profile裡面的內容是否有錯誤修改或者是否插入了非英文狀態下的符號
Linux安裝JDK總結:
- 解除安裝OpenJDK
- 上傳JDK的rpm安裝包(mac系統使用Cyberduck,win下使用FlashFXP)
- ssh中使用命令安裝JDK
- 配置環境變數
- (可選) 刪除OpenJDK依賴,新增OracleJDK依賴
- 應用環境變數(source /etc/profile)
安裝和配置MySQL
通過類比歸納,我們安裝軟體的步驟都是一樣類似的,所以下面簡要的介紹MySQL在centos上面的安裝。
- 檢測系統是否存在MySQL,有則解除安裝,無則進行第二步。
檢查mysql是否存在:rpm -qa | grep mysql
解除安裝mysql: rpm -e --nodeps mysql名稱複製程式碼
- 進入MySQL官網選擇MySQL Yum Repository,在該頁面選擇對應的linux版本進行下載對應的安裝包。
MySQL官網下載中心連線:https://dev.mysql.com/downloads/repo/yum/
我這裡直接執行命令下載:wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-5.6.22-1.el6.i686.rpm-bundle.tar
解壓後安裝:rpm -ivh MySQL-server-5.6.22-1.el6.i686.rpm
提示資源缺失,執行命令:
yum install zlib.i686
yum install libaio.so.1
yum install libstdc++.i686
接著執行mysql安裝命令,最後順利安裝。提示資訊如下:
[root@centos-linux mysql]# rpm -ivh MySQL-server-5.6.22-1.el6.i686.rpm
Preparing... ########################################### [100%]
1:MySQL-server ########################################### [100%]
···省略若干字···
A RANDOM PASSWORD HAS BEEN SET FOR THE MySQL root USER !
You will find that password in '/root/.mysql_secret'.
You must change that password on your first connect,
no other statement but 'SET PASSWORD' will be accepted.
See the manual for the semantics of the 'password expired' flag.
Also, the account for the anonymous user has been removed.
In addition, you can run:
/usr/bin/mysql_secure_installation
which will also give you the option of removing the test database.
This is strongly recommended for production servers.
See the manual for more instructions.
Please report any problems at http://bugs.mysql.com/
The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at http://shop.mysql.com
New default config file was created as /usr/my.cnf and
will be used by default by the server when you start it.
You may edit this file to change server settings
至此安裝基本完成,接著我們需要配置什麼呢?看上面的提示資訊,可以發現最重要的是mysql密碼,接著修改密碼如下:
一、 安裝mysql連線工具:rpm -ivh MySQL-client-5.6.22-1.el6.i686.rpm
二、提示出錯,需要依賴資源:libncurses.so.5 libtinfo.so.5
三、執行命令安裝依賴:yum -y install libncurses.so.5 libtinfo.so.5
四、最後再安裝mysql連線工具。複製程式碼
- 檢視MySQL服務狀態,並且確保啟動mysql
檢視:service mysql status
啟動:service mysql start
停止:service mysql stop複製程式碼
- 修改mysql的root密碼
檢視第一次登陸密碼:cat /root/.mysql_secret
登入,並且輸入上面的密碼: mysql -uroot -p;
更新root密碼:SET PASSWORD = PASSWORD('你的密碼');複製程式碼
- 開啟mysql遠端訪問(可選)
設定遠端訪問(使用root密碼):
grant all privileges on *.* to 'root' @'%' identified by '123456';
flush privileges;
防火牆開啟3306埠
開啟3306埠:/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
儲存配置:/etc/rc.d/init.d/iptables save
檢測埠狀態:/etc/init.d/iptables status複製程式碼
- 設定開機啟動mysql服務
加入到系統服務:
chkconfig --add mysql
自動啟動:
chkconfig mysql on
查詢列表:
chkconfig複製程式碼
安裝和配置Tomcat
根據上面案例和以前的經驗,我們得出tomcat是綠色版程式只需要解壓到指定目錄直接執行就OK。
- 下載tomcat到伺服器
- 解壓到 /usr/src/tomcat
- 授予可執行檔案的可執行許可權: chmod 777 *.sh
- 啟動: ./startup.sh
- 檢視日誌(按下 Ctrl+C 退出當前的阻塞命令):tail -f ../logs/catalina.out
- 伺服器開放埠:
開啟8080埠:/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT 儲存配置:/etc/rc.d/init.d/iptables save 檢測埠狀態:/etc/init.d/iptables status複製程式碼
安裝套路總結
應用程式分為兩種:① 安裝版本 ② 綠色版本
安裝版本:
- 檢測是否存在對應程式:
rpm -qa | grep 程式名稱複製程式碼
- 存在對應程式,檢查是否符合標準,否則解除安裝:
rpm -e --nodeps 上面檢查到的程式名稱複製程式碼
- 上傳安裝包到伺服器(推薦利用SFTP上傳)
- 安裝檔案,並檢視提示資訊
- 出現錯誤,根據提示資訊解決問題(一般是資源依賴失敗)
安裝命令:yum -y install 提示資訊中出現的缺失的依賴資源(如:libncurses.so.5 libtinfo.so.5,多個資源中使用空格隔開,使用這種方式可以自動掃描包名並且進行載入)複製程式碼
- 最後再執行安裝程式
- 還有可選設定(開機啟動和服務自啟)
- 檢測是否存在對應程式:
綠色版本:沒啥好說的就是上傳、解壓、設定執行許可權(chmod 777 *.sh)
本期文章到此基本結束,至於Nginx設定,粗略的估計放到下一期吧。部署專案的話,直接把war包扔到tomcat的webapps目錄下就行了。