
项目架构图项目介绍JspGou 是老式 war 包项目无内置 Web 容器依赖外部独立 Tomcat 才能运行Blog 是 SpringBoot 可执行 jar 项目自带嵌入式 Tomcat服务器只装 JDK 就能直接启动不需要单独安装、配置 Tomcat。项目搭建一、环境准备准备一台服务器2核心2线程4G的服务器我们一般有了新的项目要部署就会申请服务器一般我们拿到一台新的服务器都要对这个服务器进行一个初始化比如IP的配置防火墙的配置还有账号密码的设置等我这里搞了一个简单的初始化脚本#!/bin/bash# 设置要分配的IP地址、子网掩码和默认网关echo正在关闭防火墙systemctl stop firewalldsystemctl disable firewalldecho正在关闭networkmanagersystemctl stop NetworkManagersystemctl disable NetworkManagerecho正在关闭selinuxsetenforce0sed-ris/SELINUXenforcing/SELINUXdisabled/g/etc/selinux/configecho正在配置网卡ip_address192.168.255.163subnet_mask255.255.255.0default_gateway192.168.255.2networkfile/etc/sysconfig/network-scripts/ifcfg-ens32if[-f$networkfile];thenrm$networkfilefi# 编写ifcfg-ens32文件并将其复制到相应目录中cat/etc/sysconfig/network-scripts/ifcfg-ens32EOF TYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOstatic DEFROUTEyes IPV4_FAILURE_FATALyes IPV6INITyes IPV6_AUTOCONFyes IPV6_DEFROUTEyes IPV6_FAILURE_FATALno IPV6_ADDR_GEN_MODEstable-privacy NAMEens32 UUID2a28f6f8-c188-4415-b960-42b19519a04b DEVICEens32 ONBOOTyes IPADDR$ip_addressNETMASK$subnet_maskGATEWAY$default_gatewayDNS1114.114.114.114 DNS2223.5.5.5 EOFecho正在安装基础软件包yum-yinstallwgetlrzszunzipgziptelnetecho配置基础环境变量cat/etc/profileEOF 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 llls -lh --colorauto alias grepgrep --color alias freefree -m alias dfdf -h alias dudu -h alias vivim EOFcat~/.vimrcEOF 设置高亮 syntax on 显示行号 set number 自动缩进功能 set autoindent 启用鼠标支持 set mousea 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 EOFsource/etc/profile systemctl restart networkecho脚本执行完毕没有执行权限给他一个执行权限chmod x init.sh配置yum源步骤1备份原有仓库配置关键防止出错无法恢复 修改系统配置前务必备份原始文件避免误操作后无法回滚sudomv/etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 步骤2下载阿里云YUM源配置文件 根据系统已安装的工具curl 或 wget选择以下任一命令执行 若系统有 curlsudocurl-o/etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo 若系统有 wgetsudowget-O/etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo 提示若两种工具都没有可先通过系统自带的基础源临时安装如sudoyuminstall-ycurl再执行上述命令。 步骤3清理旧缓存 并重建新缓存 新的YUM源配置需通过清理旧缓存、重建新缓存来生效避免旧配置干扰# 清理所有YUM缓存sudoyum clean all# 基于新源重建缓存加载阿里云源的包信息sudoyum makecache 步骤4设置YUM跳过失效仓库可选但推荐 当部分仓库失效时YUM默认会中断 操作。通过以下命令设置“跳过失效仓库”确保整体流程不中断sudoyum-config-manager--save--setoptrepoid.skip_if_unavailabletrue 说明将repoid替换为具体仓库ID如 CentOS-Base若需对所有仓库生效可批量配置或省略具体ID视系统版本而定。 步骤5验证YUM源是否配置成功 执行简单的包安装命令如安装 wget测试是否能正常从阿里云源下载sudoyuminstall-ywget二、项目解析blog项目是使用Java开发使用了springboot框架进行开发的项目部署环境:jdk8mysql5.7redis5.0。注意如果部署项目中需要mysql数据库或者其他数据如redis等中间件时我们应该优先运行中间件三、数据库的部署1.下载rpm包mkdir/opt/soft/mysql-pcd/opt/soft/mysqlwgethttps://mirrors.aliyun.com/mysql/MySQL-5.7/mysql-community-client-5.7.36-1.el7.x86_64.rpmwgethttps://mirrors.aliyun.com/mysql/MySQL-5.7/mysql-community-common-5.7.36-1.el7.x86_64.rpmwgethttps://mirrors.aliyun.com/mysql/MySQL-5.7/mysql-community-devel-5.7.36-1.el7.x86_64.rpmwgethttps://mirrors.aliyun.com/mysql/MySQL-5.7/mysql-community-libs-5.7.36-1.el7.x86_64.rpmwgethttps://mirrors.aliyun.com/mysql/MySQL-5.7/mysql-community-libs-compat-5.7.36-1.el7.x86_64.rpmwgethttps://mirrors.aliyun.com/mysql/MySQL-5.7/mysql-community-server-5.7.36-1.el7.x86_64.rpm2.安装mysqlyum-yinstallmysql-community*3.配置安装完成后我们不要急着启动先给mysql来一个自定义配置备份原来的配置然后添加新的配置cp /etc/my.cnf /etc/my.cnf_bakmv /etc/my.cnf /etc/my.cnfbakvim /etc/my.cnf#客户端设置 [client] #mysql服务配置 [mysqld] #服务器监听端口默认为3306 port3306 #数据存储位置 datadir/var/lib/mysql #Unix套接字文件路径 socket/var/lib/mysql/mysql.sock #MySQL服务唯一标识,开启二进制日志做主从时需要 server-id1 log-binmysql-bin #不会跟随符号链接 symbolic-links0 #日志路径 log-error/var/log/mysqld.log #服务进程pid文件路径 pid-file/var/run/mysqld/mysqld.pid #mysql字符集设置 character_set_serverutf8mb4 #mysql比较规则设置 collation_serverutf8mb4_general_ci4.启动mysql#设置开机自启并立即启动systemctlenablemysqldsystemctl start mysqld#查看mysql状态systemctl status mysqld5.修改密码yum安装的mysql会在日志中给我们生成一个临时密码我们需要用这个临时密码去修改成我们自己的密码#查看临时密码greppassword/var/log/mysqld.log#修改mysql密码mysqladmin-uroot-p临时密码password需要修改的密码mysqladmin-uroot-pb:4omwydI1SepasswordAdmin123.6.授权mysql安装完成后还需要给一个登录权限不然无法用IP连接登录mysqlmysql-uroot-p-查看一下用户是否具有权限SELECTuser,host,authentication_stringfrommysql.user;授权--语法GRANT权限列表ON库名.表名TO用户名客户端主机ipIDENTIFIEDBY密码WITHGRANTOPTION;GRANTALLPRIVILEGESON*.*TOroot%IDENTIFIEDBYAdmin123.WITHGRANTOPTION;-- 最后刷新FLUSHPRIVILEGES;7.创建数据库当我们拿到项目后如果项目没有提供数据库需要创建的名称我们可以通过项目的配置文件中查看blog目录结构后面有讲解spring:datasource:#这里能看到我们需要的数据库名字叫做blogurl:jdbc:mysql://localhost:3306/blog?useUnicodetruecharacterEncodingutf-8username:rootpassword: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/profileexportJAVA_HOME/usr/local/java/jdk1.8.0_121exportJRE_HOME${JAVA_HOME}/jreexportCLASSPATH$JAVA_HOME/lib:${JRE_HOME}/lib:$CLASSPATHexportJAVA_PATH${JAVA_HOME}/bin:${JRE_HOME}/binPATH$PATH:$HOME/bin:$JAVA_HOME/bin#刷新环境变量source/etc/profile#查看java版本java-version五、部署blog创建文件夹,上传软件包及配置文件mkdir-p/opt/web/blogcd/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修改成具体的IPurl:jdbc:mysql://localhost:3306/blog?useUnicodetruecharacterEncodingutf-8username:rootpassword:Admin123.driver-class-name:com.mysql.cj.jdbc.Driver修改完成后我们就可以启动Java程序。Java启动命令java-jarblog-0.0.1-SNAPSHOT.jar#如果没有报错我们就按ctrlC停掉然后使用下面的后台启动如果没有问题我们的项目就部署完成了但是java -jar xxx.jar属于前台运行如果我们关闭窗口进程将自动结束所以我们需要使用后台运行nohupjava-jarxxx.jarnohupjava-jarblog-0.0.1-SNAPSHOT.jar讲解nohup表示守护进程表示后台启动#查看一下进程是否存在ps-ef|grepjava#查看端口是否正常netstat-lntp|grep8080加了nohup启动日志就会输出到nohup.out中使用tail -f查看日志是否报错#查看日志是否正常tail-fnohup.out 或者vim nohup.out直接进去看#如果以上都没有问题了我们就去浏览器进行访问由于敲这个命令比较麻烦所以我们可以编写成一个脚本的方式进行启动vim start.sh使用脚本时需要先停掉原来的Java#!/bin/bash# 检查Java是否已安装if!command-vjava/dev/null;thenecho错误Java未安装。请安装Java后再试。exit1fi# 定义Java应用程序的JAR文件路径JAR_FILEblog-0.0.1-SNAPSHOT.jar# 检查JAR文件是否存在if[!-f$JAR_FILE];thenecho错误在$JAR_FILE找不到JAR文件exit1fi# 检查Java应用程序是否已经在运行ifpgrep-f$JAR_FILE/dev/null;thenecho错误应用程序已在运行。exit1fi# 后台启动Java应用程序nohupjava-jar$JAR_FILElog/blog.log21# 获取应用程序的进程IDPID$!echoJava应用程序已成功在后台启动进程ID为$PID。脚本授权chmodx start.sh#启动脚本./start.sh日志查看方法tail-flog/blog.log如果没有报错即可访问ip:端口# 端口是8080这里和我们之前做的jspgou对比数据库方面都是一样的部署数据库创建数据库导入数据。不一样的地方我们这次的部署没有使用tomcat添加环境变量的时候只需要添加jdk的tomcat的不需要之前我们项目是存放在tomcat中现在存放在/opt/web/blog中之前启动Java服务我们启动的是tomcat现在启动Java服务使用的java -jar用的是java命令最后思考一个问题为什么jspgou需要tomcatblog不需要部署tomcat?JspGou 是老式 war 包项目无内置 Web 容器依赖外部独立 Tomcat 才能运行Blog 是 SpringBoot 可执行 jar 项目自带嵌入式 Tomcat服务器只装 JDK 就能直接启动不需要单独安装、配置 Tomcat。