将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包并打印日志    --完成

相关文章
相关标签/搜索