以前,还未毕业,凭借自己三脚猫的功夫,只会在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: 90(这个作用是为了可以把服务加入到 chkconfig list中去)
#description:mylove
SERVICE_NAME=mylove (服务名)
PATH_TO_JAR=/data/mylove/mylove.jar (jar包的位置)
PID_PATH_NAME=/data/mylove/mylove-pid (存放进程号的文件)
case $ in
start)
echo "Starting $SERVICE_NAME ..."
if [ ! -f $PID_PATH_NAME ]; then
nohup java -jar $PATH_TO_JAR /tmp >> /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 >> /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 命令即可让程序在后台运行。

。。。。。待续      

    

    

      

  

把我的Java项目部署到Linux系统的更多相关文章

  1. windows下载的java项目部署到linux的各种解决方案

    1.Java是跨平台的,在linux下有问题,主要一是文件读取权限:二检查下系统环境变量设置可正确!.profile JavaWeb_将Windows平台上开发的JavaWeb项目部署到Linux平台 ...

  2. java项目部署在linux上

    在将java项目在linux上之前我们需要准备一下,首先是 一个打成war包的java项目,一个contes的系统,还有就是tomcat和jdkl的压缩包,可以在官网下载, jdk安装 先卸载cent ...

  3. java项目部署常用linux命令

    1.显示当前所有java进程pid的命令:jps2.查找文件或文件夹目录查找目录:find /(查找范围) -name '查找关键字' -type d查找文件:find /(查找范围) -name 查 ...

  4. .Net 6 WebApi 项目部署到 Linux 系统上的 Docker 容器

    1.创建一个基础的WebApi项目 注意:因为发布时候,Dockerfile文件必须和解决方案.cspro文件放在同级,所以建议勾上这个,当时遇到这个问题,导致打包镜像时找不到.cspro文件,搞了好 ...

  5. laravel 博客项目部署到Linux系统后报错 权限都设置为777,仍然报错没有权限

    阿里工程师最后给出解决方案.

  6. java项目部署Linux服务器几种启动方式总结经验

    一:两种部署包: 部署之前先说下两种包,java项目部署到服务器一般有用war包的,也有用jar包的,微服务spring-cloud普及后大部分打包都是jar,部署之前先搞清楚自己要打war包还是ja ...

  7. java web -部署在linux

    概述: 初次将java web项目部署到linux上, 还是很顺利的, 基本上没有什么错误. 步骤: 1, 安装jdk(官网中说了很清晰了),在linux上安装安装jdk, 不想windows那样, ...

  8. java项目发布到linux服务器,tomcat正常启动但没加载项目

    问题描述: java项目发布到linux服务器,一切操作正确,linux命令启动tomcat后,查看日志启动tomcat正常,上传的war包已经解压成功,但是tomcat没加载项目. 解决方法: 1. ...

  9. java项目部署到LIINUX

    天领导给个任务,把java项目部署到liunx服务器上.现记录步骤,方便以后查看.项目部署服务器步骤:服务器信息:弹性IP地址:xx.xx.xxx.xx账号:root密码:cjw@100 数据库信息: ...

随机推荐

  1. poj 1465 Multiple(bfs+余数判重)

    题意:给出m个数字,要求组合成能够被n整除的最小十进制数. 分析:用到了余数判重,在这里我详细的解释了.其它就没有什么了. #include<cstdio> #include<cma ...

  2. ISO中AFN的使用步骤

    1.依赖的框架 * MobileCoreServices.framework * SystemConfiguration.framework * Security.framework 2.主头文件:A ...

  3. hibernate封装查询,筛选条件然后查询

    // 封装查询条件 @Test public void transmitParameter() { Map map = new HashMap<String, String>(); // ...

  4. bash 的漏洞,你们中招了吗?

    http://threatpost.com/major-bash-vulnerability-affects-linux-unix-mac-os-x 检测: $ env x='(){:;}; echo ...

  5. java监测方法运行时间/效率方法

    前言: 这周在写一个小项目,虽然小但是是纯调外部接口的,调完了接口还不停的循环接口返回的数据(已转换JSONArray),然后再判断值,再做不同处理,关键是数据量还比较大,这刚做完还没开始上线,测试也 ...

  6. 在Android中使用并发来提高速度和性能

    Android框架提供了很实用的异步处理类.然而它们中的大多数在一个单一的后台线程中排队.当你需要多个线程时你是怎么做的? 众所周知,UI更新发生在UI线程(也称为主线程).在主线程中的任何操作都会阻 ...

  7. 处理 JSON null 和空数组及对象

    描述了对 JSON 数据中使用的 null 和空数组及对象的处理. JSON 数据具有 null 和空数组及对象的概念.此部分说明其中每个概念如何映射到 null 和未设置的数据对象概念. Null ...

  8. 职业操盘手内部教材 z

    重 点抢筹区:   是主力机构在低位拉高建仓后的一个相当尴尬的区域!因为在这个区域,场外的绝大多数投资者不敢买,而场内持有的人却很想卖!所以会出现成片的卖盘挂单! 由于主力向上做的意图已经非常明显,所 ...

  9. winform 下log4net简单应用示例及“缺少log4net引用”的处理方案

    1.添加应用log4net.dll 2.新增log4net.config文件,文件内容如下 <?xml version="1.0" encoding="utf-8& ...

  10. mongo 安装

    mongo 安装: 1.按照 https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/ 安装 2.安装成功后创建用户 d ...