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

之前,還未畢業,憑藉本身三腳貓的功夫,只會在Windows環境中使用tomcat容器把項目跑起來。java

之前的操做是,利用Eclipse把項目導出成War包,放到tomcat的webApp文件夾中,鼠標點點運行tomcat便可。如今想一想,簡直low到爆。mysql

 

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

 

 

前期準備web

1.一臺Linux服務器(centOS7)spring

2.你的工做臺 (mac電腦)sql

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

 

1、安裝配置MySql數據庫數據庫

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

  (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

 

2、搭建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

 

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

  (1)maven。

      1.maven package。。。

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

      1.scp命令 。 scp  source target.

 

4、部署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包並打印日誌    --完成

相關文章
相關標籤/搜索