之前,還未畢業,憑藉本身三腳貓的功夫,只會在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包並打印日誌 --完成