java传统部署文档
一、环境准备
准备一台服务器,2核心2线程,2G的服务器;
我们一般有了新的项目要部署就会申请服务器,一般我们拿到一台新的服务器都要对这个服务器进行一个初始化,比如IP的配置,防火墙的配置,还有账号密码的设置等,我这里搞了一个简单的初始化脚本
#!/bin/bash
# 设置要分配的IP地址、子网掩码和默认网关
echo '正在关闭防火墙'
systemctl stop firewalld && systemctl disable firewalld
echo '正在关闭networkmanager'
systemctl stop NetworkManager && systemctl disable NetworkManager
echo '正在关闭selinux'
setenforce 0 && sed -ri 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
echo '正在配置网卡'
ip_address="192.168.137.140"
subnet_mask="255.255.255.0"
default_gateway="192.168.137.2"
networkfile=/etc/sysconfig/network-scripts/ifcfg-ens32
if [ -f "$networkfile" ]; then
rm "$networkfile"
fi
# 编写ifcfg-ens32文件并将其复制到相应目录中
cat >> /etc/sysconfig/network-scripts/ifcfg-ens32 <<EOF
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="yes"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens32"
UUID="2a28f6f8-c188-4415-b960-42b19519a04b"
DEVICE="ens32"
ONBOOT="yes"
IPADDR=$ip_address
NETMASK=$subnet_mask
GATEWAY=$default_gateway
DNS1=114.114.114.114
DNS2=223.5.5.5
EOF
echo '正在安装基础软件包'
yum -y install wget lrzsz unzip gzip telnet
echo '配置基础环境变量'
cat >> /etc/profile <<EOF
if [ $(id -u) == 0 ]; then
export PS1='[\[\e[31;1m\]\u\[\e[m\]@\h \w]# '
else
export PS1='[\[\e[34;1m\]\u\[\e[m\]@\h \w]$ '
fi
alias ll='ls -lh --color=auto'
alias grep='grep --color'
alias free='free -m'
alias df='df -h'
alias du='du -h'
alias vi='vim'
EOF
cat >> ~/.vimrc <<EOF
"设置高亮
syntax on
"显示行号
set number
"自动缩进功能
set autoindent
"启用鼠标支持
"set mouse=a
"vim新打开.sh文件自动添加一下内容
autocmd BufNewFile *.sh exec ":call SetComment()"
func SetComment()
if expand("%:e")=='sh'
call setline(1,'#!/bin/bash')
call setline(2,'#Author: xxx')
call setline(3,'#Create time:'.strftime("%Y-%m-%d"))
endif
endfunc
EOF
source /etc/profile
systemctl restart network
echo '脚本执行完毕'
没有执行权限,给他一个执行权限
chmod +x init.sh
二、项目解析
项目是使用Java开发,使用了springboot框架进行开发的
项目部署环境:jdk8+mysql5.7。注意:如果部署项目中,需要mysql数据库或者其他数据如redis等中间件时,我们应该优先部署中间件
三、数据库的部署
1.下载rpm包
mkdir /opt/soft/mysql -p && cd /opt/soft/mysql
wget https://mirrors.aliyun.com/mysql/MySQL-5.7/mysql-community-client-5.7.36-1.el7.x86_64.rpm
wget https://mirrors.aliyun.com/mysql/MySQL-5.7/mysql-community-common-5.7.36-1.el7.x86_64.rpm
wget https://mirrors.aliyun.com/mysql/MySQL-5.7/mysql-community-devel-5.7.36-1.el7.x86_64.rpm
wget https://mirrors.aliyun.com/mysql/MySQL-5.7/mysql-community-libs-5.7.36-1.el7.x86_64.rpm
wget https://mirrors.aliyun.com/mysql/MySQL-5.7/mysql-community-libs-compat-5.7.36-1.el7.x86_64.rpm
wget https://mirrors.aliyun.com/mysql/MySQL-5.7/mysql-community-server-5.7.36-1.el7.x86_64.rpm
2.安装mysql
yum -y install mysql-community*
3.配置
安装完成后我们不要急着启动,先给mysql来一个自定义配置
备份原来的配置,然后添加新的配置
mv /etc/my.cnf /etc/my.cnfbak
vim /etc/my.cnf
#客户端设置
[client]
#mysql服务配置
[mysqld]
#服务器监听端口,默认为3306
port=3306
#数据存储位置
datadir=/var/lib/mysql
#Unix套接字文件路径
socket=/var/lib/mysql/mysql.sock
#MySQL服务唯一标识,开启二进制日志,做主从时需要
server-id=1
log-bin=mysql-bin
#不会跟随符号链接
symbolic-links=0
#日志路径
log-error=/var/log/mysqld.log
#服务进程pid文件路径
pid-file=/var/run/mysqld/mysqld.pid
#mysql字符集设置
character_set_server=utf8mb4
#mysql比较规则设置
collation_server=utf8mb4_general_ci
4.启动mysql
#设置开机自启并立即启动
systemctl enable mysqld && systemctl start mysqld
#查看mysql状态
systemctl status mysqld
5.修改密码
yum安装的mysql会在日志中给我们生成一个临时密码,我们需要用这个临时密码去修改成我们自己的密码
#查看临时密码
grep 'password' /var/log/mysqld.log
#修改mysql密码
mysqladmin -uroot -p'临时密码' password '需要修改的密码'
mysqladmin -uroot -p'o?=RfHasu7Cg' password 'Admin123.'
6.授权
mysql安装完成后还需要给一个登录权限不然无法用IP连接
登录mysql
mysql -uroot -p
- 查看一下用户是否具有权限
SELECT user,host,authentication_string from mysql.user;
授权
--语法
GRANT 权限列表 ON 库名.表名 TO '用户名'@'客户端主机ip' IDENTIFIED BY '密码' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY 'Admin123.' WITH GRANT OPTION;
-- 最后刷新
FLUSH PRIVILEGES;
7.创建数据库
数据库名称需要在java配置文件中查看
四、jdk安装
下载好jdk上传到服务器
#创建文件夹,上传jdk
mkdir /opt/soft/jdk && cd /opt/soft/jdk
#创建Java文件夹
mkdir /usr/local/java
#上传jdk后解压
unzip jdk1.8.0_121.zip
#移动解压后的jdk
mv jdk1.8.0_121 /usr/local/java/
#授权
chmod +x /usr/local/java/jdk1.8.0_121/bin/*
chmod +x /usr/local/java/jdk1.8.0_121/jre/bin/*
环境变量配置
#vim /etc/profile
export JAVA_HOME=/usr/local/java/jdk1.8.0_121
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=$JAVA_HOME/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
#刷新环境变量
source /etc/profile
#查看java版本
java -version
五、部署java项目
创建文件夹,上传软件包及配置文件
mkdir -p /opt/web/项目名 && cd /opt/web/项目名
#创建文件后上传项目包和配置文件
修改完成后我们就可以启动Java程序。Java启动命令
java -jar 包名.jar
#如果没有报错我们就按ctrl+C停掉,然后使用下面的后台启动
如果没有问题我们的项目就部署完成了,但是java -jar xxx.jar属于前台运行,如果我们关闭窗口进程将自动结束,所以我们需要使用后台运行
nohup java -jar xxx.jar &
讲解:
nohup 表示守护进程
& 表示后台启动
#查看一下进程是否存在
ps -ef|grep java
#查看端口是否正常
netstat -lntp|grep 8080
加了nohup启动日志就会输出到nohup.out中,使用tail -f查看日志是否报错
#查看日志是否正常
tail -f nohup.out
或者vim nohup.out直接进去看
#如果以上都没有问题了我们就去浏览器进行访问
由于敲这个命令比较麻烦,所以我们可以编写成一个脚本的方式进行启动vim start.sh
使用脚本时需要先停掉原来的Java
#!/bin/bash
# 检查Java是否已安装
if ! command -v java &> /dev/null; then
echo "错误:Java未安装。请安装Java后再试。"
exit 1
fi
# 定义Java应用程序的JAR文件路径
JAR_FILE="blog-0.0.1-SNAPSHOT.jar"
# 检查JAR文件是否存在
if [ ! -f "$JAR_FILE" ]; then
echo "错误:在 $JAR_FILE 找不到JAR文件"
exit 1
fi
# 检查Java应用程序是否已经在运行
if pgrep -f "$JAR_FILE" &> /dev/null; then
echo "错误:应用程序已在运行。"
exit 1
fi
# 后台启动Java应用程序
nohup java -jar "$JAR_FILE" > log/blog.log 2>&1 &
# 获取应用程序的进程ID
PID=$!
echo "Java应用程序已成功在后台启动,进程ID为 $PID。"
脚本授权
chmod +x start.sh
#启动脚本
./start.sh
日志查看方法
tail -f log/日志名.log
如果没有报错即可访问
ip:端口