blog传统部署文档
一、环境准备
准备一台服务器,2核心2线程,4G的服务器;
我们一般有了新的项目要部署就会申请服务器,一般我们拿到一台新的服务器都要对这个服务器进行一个初始化,比如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
二、项目解析
blog项目是使用Java开发,使用了springboot框架进行开发的
项目部署环境:jdk8+mysql5.7+redis5.0。注意:如果部署项目中,需要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.创建数据库
当我们拿到项目后,如果项目没有提供数据库需要创建的名称,我们可以通过项目的配置文件中查看,blog目录结构后面有讲解
spring:
datasource:
#这里能看到我们需要的数据库名字叫做blog
url: jdbc:mysql://localhost:3306/blog?useUnicode=true&characterEncoding=utf-8
username: root
password: Admin123.
driver-class-name: com.mysql.cj.jdbc.Driver
四、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
五、部署blog
创建文件夹,上传软件包及配置文件
mkdir -p /opt/web/blog && cd /opt/web/blog
创建好后我们就上传我们的包和相关文件

上传之后我们修改对应的配置文件,假如我们环境是生产环境,我们就要使用生产环境的配置文件,需要在application.yml中修改active: dev为active: pro,修改之后我们再去生产配置文件中修改相关配置
如果这里为active: dev,不想对其进行修改,那么我们就需要使用application-dev.yml,此时application-pro.yml不生效,如果是active: pro那么application-dev.yml不生效。
在yml中修改连接mysql的配置文件
spring:
datasource:
#localhost修改成具体的IP
url: jdbc:mysql://localhost:3306/blog?useUnicode=true&characterEncoding=utf-8
username: root
password: Admin123.
driver-class-name: com.mysql.cj.jdbc.Driver
修改完成后我们就可以启动Java程序。Java启动命令
java -jar blog-0.0.1-SNAPSHOT.jar
#如果没有报错我们就按ctrl+C停掉,然后使用下面的后台启动
如果没有问题我们的项目就部署完成了,但是java -jar xxx.jar属于前台运行,如果我们关闭窗口进程将自动结束,所以我们需要使用后台运行
nohup java -jar xxx.jar &
nohup java -jar blog-0.0.1-SNAPSHOT.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/blog.log
如果没有报错即可访问
ip:端口
这里和我们之前做的jspgou对比:
数据库方面都是一样的,部署数据库,创建数据库,导入数据。
不一样的地方:
- 我们这次的部署没有使用tomcat
- 添加环境变量的时候只需要添加jdk的,tomcat的不需要
- 之前我们项目是存放在tomcat中,现在存放在/opt/web/blog中
- 之前启动Java服务我们启动的是tomcat,现在启动Java服务使用的java -jar,用的是java命令
最后思考一个问题,为什么jspgou需要tomcat,blog不需要部署tomcat?