java移植到linux_把我的Java项目部署到Linux系统

本文讲述将Java项目从Windows环境移植到Linux服务器的过程。包括前期准备,如准备Linux服务器、工作台和项目源码;接着介绍安装配置MySQL数据库、搭建Linux环境、打包项目并传到Linux机器,最后将Java项目部署为Linux服务,还给出了相关操作步骤和踩坑提醒。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以前,还未毕业,凭借自己三脚猫的功夫,只会在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 instart)

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 ..."

elseecho"$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_NAMEelseecho"$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 ..."

elseecho"$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"

elseecho"$SERVICE_NAME is not running..."fi

;;

esac

(3)注意包文件存放位置的权限,例如存放位置为/data/mylove。需要给他读写执行的权限。sudo chmod -R 775 /data

(4)启动服务。service mylove start

tips: nohup 命令即可让程序在后台运行。

。。。。。待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值