Linux环境部署java项目基本操作记录

文章详细介绍了在Linux系统中如何安装JDK1.8、MySQL8以及Tomcat9,包括每个步骤的详细配置,如环境变量设置、数据目录权限、防火墙端口开放等,并提供了启动、关闭命令以及创建自启动脚本的方法。此外,还涵盖了远程连接MySQL和解决访问失败的常见问题。

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

安装类

JDK1.8安装

安装包
官网下载:jdk1.8
在这里插入图片描述

安装之前查看是否存在系统自带的openjdkjava -version
如果存在,查看自带JDK命令rpm -qa | grep jdk
逐个删除相关JDK包rpm -e --nodeps 卸载包名

正式安装
1.运用xshell、xftp等工具将安装包上传到想要的目录下:这里举例创建 /usr/java目录

在这里插入图片描述

2.在usr/java目录下解压安装包

tar -zxvf 所要解压的文件名

在这里插入图片描述

3.修改profile文件:vim /etc/profile

按 i,进入编辑模式,然后在最下方插入以下内容,“JAVA_HOME=” 后的目录即jdk解压目录(:第一行的jdk版本后缀注意要和安装版本一致)

JAVA_HOME=/usr/java/jdk1.8.0_251
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH

在这里插入图片描述
4.让编辑的文件生效执行:source /etc/profile

5.检查安装结果:java -version
在这里插入图片描述

mysql8安装

1、安装包下载:mysql8下载
目前普遍使用64位
在这里插入图片描述
2、将安装包上传到服务器后,解压安装包

tar -xvf mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz 

在这里插入图片描述

再移动并重命名一下,目录本次使用usr/local/mysql,可根据自身喜好自定义,注意后续配置涉及目录需统一

mv mysql-8.0.31-linux-glibc2.12-x86_64 /usr/local/mysql

在这里插入图片描述

3、创建mysql用户组和用户并修改权限

groupadd mysql
useradd -r -g mysql mysql

4、创建数据目录并赋予权限

mkdir -p  /data/mysql              #创建数据目录
chown mysql:mysql -R /data/mysql   #赋予权限

在这里插入图片描述

5、配置my.cnf :vim /etc/my.cnf
具体内容:

[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
lower_case_table_names=1

键盘按i进入编辑模式,完成后esc,输入:wq 保存退出

在这里插入图片描述

6、初始化数据库
进入你的mysql下bin目录

cd /usr/local/mysql/bin/

初始化基础信息

./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize

查看密码

cat /data/mysql/mysql.err

在这里插入图片描述
7、启动mysql,并更改root 密码
复制mysql.server放置到/etc/init.d/mysql中

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

赋予权限

chown 777 /etc/my.cnf
chmod +x /etc/init.d/mysql
chmod +x /etc/init.d/mysqld

在这里插入图片描述
8、启动mysql

service mysql start
 
ps -ef|grep mysql

在这里插入图片描述
如上图已经安装成功了。

9、修改密码
登录mysql,翻出前面随机生成的密码

./mysql -u root -p   #bin目录下

复制到password后,按回车即可,密码是不显示的

在这里插入图片描述
执行语句:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
flush privileges; #使密码生效

在这里插入图片描述

10、同时设置远程连接

use mysql                                            #访问mysql库
update user set host = '%' where user = 'root';      #使root能再任何host访问
FLUSH PRIVILEGES;                                    #刷新

在这里插入图片描述
注:服务器防火墙开启的情况下,必须要让防火墙开启myslq的3306端口才可远程连接。

tomcat9安装及部署war包

1.安装

1、下载tomcat9:官网链接
在这里插入图片描述

2、运用工具上传到服务器任意文件夹,根据个人习惯即可

在这里插入图片描述

3、解压tomcat

tar -zxvf tomcat压缩包名

可以将名字改简短(移动至重命名的文件夹),例:

mv apache-tomcat-9.0.71/ tomcat9 

4、在tomcat的bin目录启动

cd tomcat9/bin
./startup.sh

关闭命令:./shutdown.sh

在这里插入图片描述
以上显示说明启动成功。

访问 http://ip:8080 ,出现以下界面则安装正常。(测试阶段保持服务器防火墙关闭状态)

在这里插入图片描述

1.1常见访问失败因素

1、防火墙相关
采用关闭防火墙处理

systemctl disable firewalld

采用防火墙开启项目对应端口处理

firewall-cmd --permanent --zone=public --add-port=8787/tcp  #例8787端口
firewall-cmd --reload   #重新载入

2、云服务器相关
(1)新购云服务器注意:天翼云8080端口需要备案才可使用,测试或初期阶段建议修改tomcat默认的8080端口;
tomcat9目录 -》conf文件夹下的server.xml
在这里插入图片描述

传到本地桌面编辑端口,传回服务器覆盖原文件,重启tomcat。

在这里插入图片描述

(2)云服务器安全组设置端口放行,一般在云服务器网站-控制台有具体操作。

2.部署项目

1、将项目war包放入Tomcat的webapps文件夹中,启动tomcat会自动解压生成同名文件夹
在这里插入图片描述

2、修改访问路径,在conf文件夹中的server.xml配置文件中,Host标签下如果没有Context标签则添加标签,有则修改

<Context path="" docBase="/xxxx/tomcat9/webapps/test" reloadable="true" />

docBase中的属性值是原文件夹,path后设置访问路径

在这里插入图片描述

注:项目也可放在自定义文件下,在tomcat目录下新建项目目录webapps_test,在server.xml文件中修改对应路径即可。

在这里插入图片描述

配置命令类

mysql

1、启动、关闭

1.1、启动mysql服务

sudo service mysql start
service mysql start

访问mysql:#bin目录下./mysql -u root -p
退出mysql:exit

1.2、重启mysql服务

sudo service mysql restart 

1.3、停止mysql服务

sudo service mysql stop

2、多方式查询是否启动

【注意:】多数mysql安装教程的步骤中会操作一步:将mysql.server放置到/etc/init.d/目录下,
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
本文中使用了“mysql”,常见的帖子中多数会使用“mysqld”或者“mysql”,但由于各个博主命名有差异,要注意这个名称,部分命令使用时相关mysql服务名称要对应,不然会找不到文件。例如查询mysql状态命令、启动命令的部分方式都有一定影响。
2.1、 service mysql status

在这里插入图片描述

如果在重命名mysql服务文件时采用了“mysqld”,那么可以使用service mysqld status

service mysqld status

2.2、chkconfig --list

在这里插入图片描述

2.3、pidof mysqld 命令:如果显示PID说明程序启动,不显示PID即为程序没有启动。

在这里插入图片描述

2.4、ps aux | grep mysqld ps aux | grep mysql 命令:
在这里插入图片描述

在这里插入图片描述

2.5、chkconfig --list mysql命令:

在这里插入图片描述

3、设置 mysql远程连接

mysql 数据库中 user 表里的 host 字段,这个字段是控制允许连接 MySQL 数据库的用户的 IP 的,一般来说,我们有以下几种常用设置:
192.168.1.1:直接限制固定 IP,那么只有这个 IP 能通过这个用户连接 MySQL 数据库;
%:% 是一个通配符,例如 192.168.1.% 就是所有以 192.168.1 开头的 IP 段都可以连接,更简单的 % 就表示所有人都可以连接;
localhost:这个就是表示只有本地能通过这个用户连接 MySQL 数据库。

3.1、登录MySQL:一般安装在 /usr/local/mysql ,进入bin目录登录

./mysql -uroot -p

root 就是你要登陆的用户的用户名,之后需要你输入密码,没有问题后就连上 MySQL 数据库了。

在这里插入图片描述
3.2、切换到 mysql 数据库:

use mysql;

可以查看 user 表的所有记录:

select user, host from user;

3.3、关闭 MySQL 远程连接,只需要把 root 用户的 host 改成 localhost 即可(只能本地访问):注意项目配置文件的数据库连接配置使用localhost或者127.0.0.1。

update user set host='localhost' where user='root';

在这里插入图片描述

允许 MySQL 远程连接,只需要把 root 用户的 host 改成 % 即可(任何人都可以访问)

update user set host='%' where user='root';

在这里插入图片描述

之后刷新 MySQL 权限相关表:

flush privileges;

无效则重启 MySQL 服务:

service mysql restart

4、设置开机自启

4.1、确保mysql处于启动状态,将安装目录下的 support-files 目录下mysql.server复制到/etc/rc.d/init.d/mysql
注意:这里复制时并重命名了mysql服务名称,本文中使用了“mysql”,常见的帖子中多数会使用“mysqld”或者“mysql”,且多数mysql安装教程的步骤中会操作这一步,但由于各个博主命名有差异,要注意这个名称,部分命令使用时相关mysql服务名称要对应,不然会找不到文件。

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

4.2、赋予可执行权限

chmod +x /etc/init.d/mysql

4.3、添加服务

chkconfig --add mysql

4.4、显示服务列表

chkconfig --list

在这里插入图片描述

如果看到mysql的服务,并且3,4,5都是 on/开 ,则成功,如果是off/关,则可以使用

chkconfig --level 345 mysql on

4.5、重启liunx

reboot

4.6、验证

netstat -na | grep 3306

如果看到有监听说明服务启动了
在这里插入图片描述

防火墙

1、开启、关闭

开启防火墙:

systemctl start firewalld.service

查看状态:

systemctl status firewalld
systemctl status firewalld.service 
// 查看防火墙状态,是否是running
firewall-cmd --state 

临时关闭:

systemctl stop firewalld.service
systemctl stop firewalld

永久关闭:

systemctl disable firewalld

2、端口设置

开启端口(3306为例):
参数含义:
–zone #作用域
–permanent #永久生效,没有此参数重启后失效

firewall-cmd --permanent --zone=public --add-port=3306/tcp

重新载入配置,比如添加规则之后,需要执行此命令

firewall-cmd --reload

查看端口是否开放:

firewall-cmd --permanent --query-port=3306/tcp

移除端口:

firewall-cmd --permanent --remove-port=3306/tcp

3、其他

列出支持的zone

 firewall-cmd --get-zones

列出预定义的服务

firewall-cmd --get-services

查看ftp服务是否放行,返回yes或者no

firewall-cmd --query-service ftp

临时开放ftp服务

firewall-cmd --add-service=ftp

永久开放ftp服务

firewall-cmd --add-service=ftp --permanent

永久移除ftp服务

firewall-cmd --remove-service=ftp --permanent

4、设置开机自启

3.1 、开机自启防火墙

systemctl enable firewalld.service

3.2、禁止开机启动防火墙

systemctl disable firewalld.service

tomcat

1、常规启动、关闭

找到tomcat的安装目录,进入bin目录
启动:

./startup.sh

关闭:

./shutdown.sh

2、简单的启动脚本

一种非常傻瓜式的方式,方便调用tomcat安装目录下的原始启动脚本,懒人创建法,用xftp等工具把任意一个sh文件传到本地,用编辑器修改内容重命名之后,传回服务器。
创建脚本文件:(例:在根目录下创建tomcat.sh)
在这里插入图片描述

2.1、touch创建一个脚本

touch tomcat.sh

2.2、编辑脚本:vi tomcat.sh

vi tomcat.sh

添加下方内容,红框内路径更换位自己的tomcat安装路径即可:

在这里插入图片描述

#!/bin/bash

if [ $# -eq 0 ]; then
  echo "请选择要执行的参数start|stop|restart"
  read param
fi
if [ $# -gt 1 ]; then
  echo "参数大于1个:[bash starttomcat.sh start| stop | restart]"
  exit
fi
if [ !-n $param ]; then
 param=$1
fi
case $param in
'start')
  /usr/local/apache/bin/startup.sh
;;
'stop')
 /usr/local/apache/bin/shutdown.sh
;;
'restart')
 netstat -tnlp | grep 8080
 if [ $? -eq 0 ]; then
  /usr/local/apache/bin/shutdown.sh
  sleep 10
  /usr/local/apache/bin/startup.sh
 else
  /usr/local/apache/bin/startup.sh
 fi
esac


注:(需要修改时输入 i 进入编辑模式,按esc推出编辑模式,继续退出该脚本再输入退出命令)

// 退出
:q  或者
:x
//退出并且不保存
:q!
//保持并且退出
:wq

2.3、保存内容,按ESC后输入冒号+“wq” :wq

2.4、使用该tomcat.sh命令:之前创建在根目录下,就在根目录下使用。可以将脚本文件放在自己想要的位置目录不用每次都cd到安装位置bin目录下去启动关闭。
启动:

sh tomcat.sh start

关闭:

sh tomcat.sh stop

重启:

sh tomcat.sh restart
<think>好的,用户需要编写一个在Linux服务器上部署Java项目的脚本。首先,我需要回顾一下部署Java项目的基本步骤,确保脚本涵盖所有关键环节。根据提供的引用内容,部署流程通常包括环境检查、依赖安装、项目构建、文件传输、服务启动等步骤。 首先,环境检查部分,需要确认服务器是否已安装JDK。用户可能已经安装了JDK,但版本可能不符合要求,所以脚本需要检查JDK是否存在以及版本是否正确。引用[3]提到解压JDK并配置环境变量,可能需要在脚本中包含这些步骤,但考虑到用户可能已经配置好环境,这里可能只需验证。 接下来是项目构建。用户可能是在本地开发,需要将项目打包成JAR或WAR文件。引用[2]提到使用Maven或Gradle进行打包,所以脚本需要支持这两种构建工具。不过,如果用户已经在本地构建好了,可能只需要传输文件到服务器,但自动化构建会更方便。 然后是文件传输,使用SCP或XFTP将构建好的文件上传到服务器。引用[2]和[4]提到通过xftp上传,但脚本中使用SCP会更自动化。需要确保脚本中包含SCP命令,并处理可能的身份验证问题,比如使用SSH密钥。 部署到服务器后,需要停止当前运行的服务,备份旧版本,然后启动新版本。引用[4]提到使用java -jar命令启动项目,可能需要考虑后台运行,比如使用nohup或systemd服务管理。此外,日志管理也很重要,脚本应该处理日志文件的输出和轮转。 还需要考虑依赖安装,如Tomcat。引用[2]和[6]提到安装Tomcat,如果项目是WAR文件,可能需要部署到Tomcat的webapps目录。但用户的问题更偏向于直接运行JAR,所以可能需要判断项目类型。 另外,权限问题不可忽视,脚本需要确保有足够的权限执行相关操作,比如使用chmod修改文件权限。引用[3]中提到的环境变量配置,可能需要脚本在部署前检查JAVA_HOME是否设置正确。 用户可能希望脚本具备灵活性,比如通过参数指定环境,或读取配置文件。示例脚本中使用了变量定义项目名称和路径,这是一个好的做法,方便修改。 最后,脚本的健壮性很重要,比如错误处理、日志记录、备份回滚机制。示例脚本中包含了停止旧进程、备份旧版本,但可以增加错误检查,比如如果构建失败则停止部署。 总结下来,脚本的大致流程应包括环境检查、构建项目、传输文件、停止旧服务、备份、启动新服务,并处理日志和权限。需要参考引用中的步骤,整合成一个自动化脚本,同时提供使用说明和注意事项,帮助用户顺利执行。</think>### Linux部署Java项目的自动化脚本编写指南 在Linux服务器上部署Java项目可编写自动化脚本实现一键部署,以下是详细步骤和示例脚本: --- #### 一、基础部署脚本模板 ```bash #!/bin/bash # 部署参数配置 PROJECT_NAME="myapp" JAR_PATH="/opt/${PROJECT_NAME}/app.jar" BACKUP_DIR="/opt/${PROJECT_NAME}/backup" LOG_FILE="/var/log/${PROJECT_NAME}.log" # 1. 环境检查 if ! command -v java &> /dev/null; then echo "错误:未检测到Java环境,请先安装JDK 8+" >&2 exit 1 fi # 2. 停止旧进程 PID=$(pgrep -f "${JAR_PATH}") if [ -n "$PID" ]; then echo "停止旧进程 PID: $PID" kill -9 "$PID" fi # 3. 备份旧版本 mkdir -p "${BACKUP_DIR}" if [ -f "${JAR_PATH}" ]; then TIMESTAMP=$(date +%Y%m%d%H%M%S) mv "${JAR_PATH}" "${BACKUP_DIR}/${PROJECT_NAME}_${TIMESTAMP}.jar" fi # 4. 部署新版本(需手动上传或通过SCP) # scp user@host:/local/path/target.jar "${JAR_PATH}" # 5. 启动服务 nohup java -jar "${JAR_PATH}" > "${LOG_FILE}" 2>&1 & echo "项目已启动,日志输出至: ${LOG_FILE}" ``` --- #### 二、增强功能脚本(支持自动构建) ```bash #!/bin/bash # 参数配置 REMOTE_USER="deploy" REMOTE_HOST="192.168.1.100" LOCAL_PROJECT_DIR="/home/user/project" REMOTE_DEPLOY_DIR="/opt/myapp" # 1. 本地构建项目 cd "${LOCAL_PROJECT_DIR}" || exit mvn clean package -DskipTests if [ $? -ne 0 ]; then echo "项目构建失败!" >&2 exit 1 fi # 2. 传输到服务器 scp "target/*.jar" "${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DEPLOY_DIR}/app.jar" # 3. 远程执行部署 ssh "${REMOTE_USER}@${REMOTE_HOST}" "bash -s" << EOF systemctl stop myapp.service mv "${REMOTE_DEPLOY_DIR}/app.jar" "${REMOTE_DEPLOY_DIR}/app.jar.bak" systemctl start myapp.service EOF ``` --- #### 三、关键步骤说明 1. **环境检查** - 必须验证JDK安装情况,推荐使用JDK 8+[^3] - 可通过`java -version`检测版本 2. **服务管理优化** - 建议使用Systemd管理服务(创建`/etc/systemd/system/myapp.service`): ```ini [Unit] Description=My Java Application After=syslog.target [Service] ExecStart=/usr/bin/java -jar /opt/myapp/app.jar Restart=always [Install] WantedBy=multi-user.target ``` 3. **日志管理** - 使用`logrotate`实现日志轮转 - 示例配置: ```conf /var/log/myapp.log { daily rotate 7 compress missingok notifempty } ``` --- #### 四、部署验证命令 ```bash # 查看服务状态 systemctl status myapp.service # 实时监控日志 tail -f /var/log/myapp.log # 验证端口监听 netstat -tulnp | grep java ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值