將java項目部署與更新到Linux系統下


以前,還未畢業,憑借自己三腳貓的功夫,只會在Windows環境中使用tomcat容器把項目跑起來。

以前的操作是,利用Eclipse把項目導出成War包,放到tomcat的webApp文件夾中,鼠標點點運行tomcat即可。現在想想,簡直low到爆。

 

實習了小半年,自己搞了一個小小的java項目,決定把它部署到新買的Linux服務器上去。順便提高一下自己的Linux基礎。

 

 

前期准備

1.一台Linux服務器(centOS7)

2.你的工作台 (mac電腦)

3.項目源碼(使用sprintBoot+springDateJpa,使用mySql數據庫)

 

一、安裝配置MySql數據庫

        打算先把MySQL數據庫裝mac上做成數據庫服務。  

  (1)官網下載安裝包(http://dev.mysql.com/downloads/mysql/)

  (2)下載mac版本的mysql,mac版本安裝好之后會在系統偏好設置里面出現一個mysql服務(但是作為程序員,規定自己不能使用圖形用戶界面)

  (3)定義別名使用命令行的方式啟動停止mysql

      alias mysqlstart=sudo /usr/local/mysql/support-files/mysql.server start

      alias mysqlstop=sudo /usr/local/mysql/support-files/mysql.server stop

  (4)配置mysql環境變量。

      1. vi ~/.bash_profile 

      2. export PATH=${PATH}:/usr/local/mysql/bin

      3. source ~/.bash_profile

   (5)修改數據庫root密碼。安裝過程中,mysql安裝程序會自動給你一個初始化密碼(一定要保存好,不然有點麻煩)。

      1.登陸數據庫 mysql -u root -p

      2.修改密碼 mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass'); 

  (6)添加一個mysql的用戶,並允許該用戶遠程訪問數據庫

      1.mysql -u root -p

      2.CREATE USER 'guxiaoli'@'localhost' IDENTIFIED BY '123456'; 

      3.grant all PRIVILEGES on dateBase.* to guxiaoli@'%'  identified by '123456';(授權guxiaoli用戶可以使用任意ip訪問‘dateBase數據庫的所有表’)

        (dateBase.*  代表某數據庫的某表,所有可用*.*。'%'代表所有ip,如果限定ip,把ip替換掉%。如果不授權遠程賬號,將會出現Host 'XXX' is not allowed to connect to          this MySQL server錯誤)

  (7)改變mysql編碼格式。mysql默認的編碼格式是laint1。需要將其改變成UTF-8編碼格式。

       1.安裝好的mysql,會在目錄 /usr/local/mysql/support-files中,有個文件,名為my-default.cnf

       2.把my-default.cnf文件移動到 /etc目錄下,並改名為 my.cnf

       3.修改my.cnf文件內容。在[mysqld] 下面添加   'character_set_server=utf8'

       4.重啟mysql服務

 

  踩坑提醒: 1.再用命令行操作mysql數據庫的時候,命令行末尾要加上分號。加了分號之后mysql才會識別這是一條完成的命令,再去執行。

      2.!!!一定要把my-default.cnf 移到/etc目錄下!!!。我改了半天的my-default.cnf文件,重啟mysql...重啟mac...並無卵用。

      3.在啟動mysql的時候可能會報錯:The server quit without updating PID file (/usr/local/mysql/data/localhost.localdomain.pid).

       報這個錯誤的原因有很多種。試試這種方法:在my.cnf的配置文件里指定pid File,

       [mysqld] 下 pid-file = /usr/local/mysql/data/mysql.pid

      4.別忘了允許用戶遠程連接mysql

 

二、搭建Linux環境

   搞了個Linux服務器,對自己狠一點,不要裝圖形化界面,全程命令行。好么。

  (1)ssh。為了能更好的訪問並操作Linux系統,搭建ssh無密碼服務登陸。簡便又安全。

      1.進入到Linux服務器中(ctrl+alt+F2進入終端)

      2.查看系統有沒有ssh服務     rpm -qa |grep ssh 

      3.如果沒有安裝ssh服務 安裝ssh服務 yum install ssh

      4.啟動,停止,重啟ssh服務, service sshd start | stop | restart

      5.ssh的默認端口是22 

  (2)開放Linux系統端口。centOS7的系統自帶防火牆,阻止外界訪問本機的所有端口。需要把22,80,8080等需要的端口開放。

      1. cd /etc/sysconfig

      2.修改該目錄下的iptables-config 文件

      3.加入下面幾行,開放80,22,8080端口

          -A RH-Firewall -1 -INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
          -A RH-Firewall -1 -INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
          -A RH-Firewall -1 -INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

      4.重啟防火牆  service  iptables  restart

  (3)JDK 。centOS系統有自帶的java環境。是openJDK的版本。開發環境中使用的是sun的JDK,決定保持一致。

      1.查看本機的jdk版本  rpm -qa | grep jdk

      2.卸載open jdk  yum -y remove openJDK

      3.下載並sun的JDK

 

三、打包項目並傳到Linux機器上

  (1)maven。

      1.maven package。。。

   (2)把打好的jar包傳到Linux機器上

      1.scp命令 。 scp  source target.

 

四、部署java項目作為Linux的服務

  如果直接在Linux系統上運行命令java -jar app.jar,即可把項目正常的運行起來,但是這樣不好。比如退出ssh的時候就會結束進程。

  所以把java進程配置成服務。service myapp start | stop | restart 簡單的命令即可搞定。

  (1)增加Linux服務,是要在/etc/init.d目錄下添加shell腳本

  (2)貼一下我的腳本。。。

      

復制代碼
#!/bin/sh
#chkconfig:2345 80 90(這個作用是為了可以把服務加入到 chkconfig list中去)
#description:mylove
SERVICE_NAME=mylove (服務名)
PATH_TO_JAR=/data/mylove/mylove.jar  (jar包的位置)
PID_PATH_NAME=/data/mylove/mylove-pid  (存放進程號的文件)
case $1 in
start)
echo "Starting $SERVICE_NAME ..."
if [ ! -f $PID_PATH_NAME ]; then
nohup java -jar $PATH_TO_JAR /tmp 2>> /dev/null >> /dev/null &
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 ..."
nohup java -jar $PATH_TO_JAR /tmp 2>> /dev/null >> /dev/null &
echo $! > $PID_PATH_NAME
echo "$SERVICE_NAME started ..."
else
echo "$SERVICE_NAME is not running ..."
fi
;;
status)

status)
if [ -f $PID_PATH_NAME ]; then
PID=$(cat $PID_PATH_NAME);
echo "$SERVICE_NAME is running, pid=$PID"
else
echo "$SERVICE_NAME is not running..."
fi
;;
esac
復制代碼

 

  (3)注意包文件存放位置的權限,例如存放位置為/data/mylove。需要給他讀寫執行的權限。sudo chmod -R 775 /data 

  (4)啟動服務。service mylove start

   

   tips: nohup 命令即可讓程序在后台運行。 

 

 

。。。。。待續   

 

將工程打包---通過WinScp將jar包傳輸到Linux系統下(如果原來有項目 可以將原來的jar改個名稱  作為備份)----通過Xshell  查看端口    殺死進程    運行jar包並打印日志    --完成


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM