服务器Centos部署Spring boot 前后端项目

使用centos部署前后端项目,使用的是centos 8,后端用的是Spring,前端用的是Vue,使用下面的步骤进行部署:

- 安装MySQL

这一步有多种方式进行安装,可以使用包管理器,可以使用安装包解压缩进行安装,但是最终都需要使用对配置文件进行配置,我建议大家可是尝试下面的MySQL脚本就行安装,只需要在里面改动值就可以。

  • vi InstallMySQL.sh
  • 创建bash文件,填入下面的内容
#!/bin/bash
# https://blog.csdn.net/qq_41054313
#数据库密码
mysqlPWD="lhDream@123"

echo "--MySQL5.7安装--"

echo "下载依赖环境"
yum -y install wget
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

echo "开始安装"
yum -y install mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql-community-server

echo "启动MySQL"
systemctl start  mysqld.service
systemctl status mysqld.service
a=$(systemctl status mysqld.service | grep "active (running)" | wc -l)

if [ $a -gt 0 ] 
then
	echo "启动完成,状态正常"
	#配置MySQL
	echo "配置MySQL"

	str=$(grep "password is generated for root@localhost:" /var/log/mysqld.log)
	localPWD=${str##*"root@localhost: "}
	echo "数据库默认密码:"$localPWD
	export MYSQL_PWD=$localPWD
	echo "重置数据库密码为:"$mysqlPWD
	mysql --connect-expired-password -uroot  -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '$mysqlPWD'"
	
	echo "刷新权限"
	export MYSQL_PWD=$mysqlPWD
	mysql --connect-expired-password -uroot  -e "flush privileges"

	echo "配置远程登录"
	mysql --connect-expired-password -uroot  -e "grant all privileges on *.* to 'root'@'%' identified by '$mysqlPWD' with grant option"

	echo "配置数据库编码"
	echo "[client]" > /etc/my.cnf
	echo "default-character-set=utf8" >> /etc/my.cnf
	echo "" >> /etc/my.cnf
	echo "[mysqld]" >> /etc/my.cnf
	echo "datadir=/var/lib/mysql" >> /etc/my.cnf
	echo "socket=/var/lib/mysql/mysql.sock" >> /etc/my.cnf
	echo "character-set-server=utf8" >> /etc/my.cnf
	echo "collation-server=utf8_general_ci" >> /etc/my.cnf
	cat /etc/my.cnf

	#重启MySQL查看配置结果
	systemctl restart mysqld
	systemctl status mysqld.service

	mysql --connect-expired-password -uroot  -e "status"

	echo "安装完成"
else
	echo "状态异常,安装失败"
fi
#rm -f mysql57-community-release-el7-10.noarch.rpm
echo "exit"

bash InstallMySQL.sh

运行脚本,查看安装进度

安装Redis

vi InstallRedis.sh
#!/bin/bash

# 安装版本
redis_version="6.2.7"
# 安装目录
#redis_installDir="/opt/module/redis"
redis_installDir="/opt/bigdata/redis"

install_redis() {
  local version=$1
  local installDir=$2
  local redisconf_file=$installDir/redis-$version/redis.conf
  # 安装工具包
  yum -y install epel-release gcc make tcl

  # 下载地址
  local downloadUrl="http://download.redis.io/releases/redis-$version.tar.gz"
  if [ -z "$(command -v wget)" ]; then
    yum -y install wget
    if [ $? -eq 0 ]; then
      echo "wget安装完成"
    else
      echo "wget安装失败,请检查"
      exit 1
    fi
  fi
  if [ ! -d "${installDir}" ]; then
    mkdir -p "${installDir}"
    if [ $? -eq 0 ]; then
      echo "安装目录${installDir}已创建"
    else
      echo "请确保您有足够的权限来创建目录,请增加权限后再次执行"
      exit 1
    fi
  fi
  if [ ! -f "/tmp/redis-$version.tar.gz" ] ; then
    wget "$downloadUrl" -P /tmp
    if [ $? -eq 0 ]; then
      echo "redis-$version.tar.gz下载成功"
    else
      echo "redis-$version.tar.gz下载失败,请重试或手动下载到/tmp目录下再次执行"
      echo "下载地址:$downloadUrl"
      exit 1
    fi
  else
    echo "/tmp/redis-$version.tar.gz文件已存在"
  fi
  if [ -d "${installDir}/redis-$version" ]; then
    echo "${installDir}/redis-$version 已存在,正在删除..."
    rm -rf "${installDir}/redis-$version"
  fi
  tar -zxvf "/tmp/redis-$version.tar.gz" -C "${installDir}"
  if [ $? -eq 0 ]; then
    echo "redis-$version.tar.gz解压成功"
  else
    echo "redis-$version.tar.gz解压失败,请查看异常信息后重试"
    exit 1
  fi
  # 编译和安装
  cd ${installDir}/redis-$version
  make && make install

  sed -i "s|daemonize no|daemonize yes|" "$redisconf_file"
  sed -i "s|bind 127.0.0.1 -::1|bind 127.0.0.1 -::1\nbind 0.0.0.0|" "$redisconf_file"
  sed -i "s|# requirepass foobared|# requirepass foobared|" "$redisconf_file"

#  sed -i "s|port 6379|port 6379|" "$redisconf_file"
#  sed -i "s|# cluster-enabled yes|cluster-enabled yes|" "$redisconf_file"
#  sed -i "s|# cluster-config-file nodes-6379.conf|cluster-config-file nodes.conf|" "$redisconf_file"
#  sed -i "s|# cluster-node-timeout 15000|cluster-node-timeout 5000|" "$redisconf_file"
#  sed -i "s|appendonly no|appendonly yes|" "$redisconf_file"

  echo "redis 单机版下载、安装、配置完成"
  echo "redis安装目录:${installDir}/redis-$version"
  echo "单机版 进入 redis 交互界面命令:redis-cli -h $(ip addr | grep 'inet ' | awk '{print $2}'| tail -n 1 | grep -oP '\d+\.\d+\.\d+\.\d+') -p 6379"
  echo "集群版 进入 redis 交互界面命令:redis-cli -h $(ip addr | grep 'inet ' | awk '{print $2}'| tail -n 1 | grep -oP '\d+\.\d+\.\d+\.\d+') -c -p 30001"

#  mkdir -p "${installDir}/redis-$version/cluster-test"
#  for cluster_dir in {7000..7005}
#  do
#    local create_dir="${installDir}/redis-$version/cluster-test/$cluster_dir"
#    mkdir -p "$create_dir"
#    cp "$redisconf_file" "$create_dir"
#    sed -i "s|port 6379|port $cluster_dir|" "$create_dir/redis.conf"
#    redis-server "$create_dir/redis.conf"
#    echo "$cluster_dir 端口的redis启动成功"
#  done

#  local dir=${installDir}/redis-$version/utils/create-cluster
#  sed -i "s|CLUSTER_HOST=127.0.0.1|CLUSTER_HOST=192.168.145.105|" "$dir/create-cluster"
#  sed -i "s|PROTECTED_MODE=yes|PROTECTED_MODE=no|" "$dir/create-cluster"
#  $dir/create-cluster start
#  $dir/create-cluster create

}

install_redis "$redis_version" "$redis_installDir"

exit 0

增加执行权限

chmod a+x /tmp/install_redis.sh

运行当前的bash文件

bash InstallRedis.sh

基本上后端需要这些工具

配置后端项目

  • Maven项目直接通过 clean 和 package 就可以将项目进行打包
    -在这里插入图片描述
    先点 clean,之后点package,后端项目就打包完成。之后package完成之后会生成一个target文件,target文件内估计生成一个xxxx.jar文件,这个jar文件就是打包的文件,如果在ide中没有看到这个target文件,可以去项目的本地文件夹中看一下。

将jar文件上传到服务器中

这里可以使用任何带有ftp功能的客户端进行上传,Winscp,Xftp,Xterminal都可以,建议在上传之前创建一个项目文件夹,单独存放文件。

上传之后运行jar文件

java -jar xxx.jar -spring.profiles.active=dev

jar后面的内容可以删除,主要是为了换一个环境进行启动java项目

之后可以输入服务器的网址进行访问,可以一些返回的结果

spring:
  datasource:
    driver-class-name: com.cj.mysql.jdbc.Driver
    url: jdbc:mysql://192.168.198.149:3306/xxx?useSSL=false
    username: root
    password: xxxxx
  redis:
    host: 127.0.0.1
    port: 6379
#    password: 115474287Zxcczld
  server:
    port: 8080
    servlet:
      context-path: /api #设置路径前缀与前端一致,默认是/
    database: 0
    lettuce:
      pool:
        max-active: 10
        max-idle: 10
        min-idle: 1
        time-between-eviction-runs: 10s

前端配置 nginx安装配置

nginx 配置同样也比较麻烦,我这边写了一个 一键安装的脚本,可以修改内容直接使用

nginx一键安装

前端项目打包 上传

我们使用npm工具进行打包

npm build

在IDE打包之后会生成一个dist文件夹,将这个文件夹的内容和刚刚的方式一样上传到服务器中,可以和后端项目在同一个父文件夹中

配置 nginx.conf文件

找到nginx.conf文件,进行配置,主要需要配置的是server里面的内容,location的内容,location后面跟的内容是当前dist文件所在的目录,比如当前dist文件在 www下面,那么内容就是 /www/dist

之后重启nginx服务

sudo service nginx restart

或者

sudo systemctl restart nginx

之后在浏览器中输入ip地址之后,就会显示前端的主页内容

注意

如果运行之后显示错误,返回错误页面,403 或者 404 可以去/var/log/nginx 中查看错误文件,是由于什么运行不能运行。

如果你在CentOS操作系统下面运行Nginx服务出现权限方面的问题,有可能是SELinux(Security Enhanced Linux)在起作用。SELinux提供了一种机制来限制进程的权限,以此增强系统的安全性。

临时禁用SElinux

    sudo setenforce 0
    sudo nano /etc/selinux/config

修改如下内容:

    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    #     enforcing - SELinux security policy is enforced.
    #     permissive - SELinux prints warnings instead of enforcing.
    #     disabled - No SELinux policy is loaded.
    SELINUX=disabled
    # SELINUXTYPE= can take one of these two values:
    #     targeted - Targeted processes are protected,
    #     mls - Multi Level Security protection.
    SELINUXTYPE=targeted

重新运行

相信这时候已经OK了!

  • 17
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1.项目代码功能经验证ok,确保稳定可靠运行。欢迎下载使用!在使用过程中,如有问题或建议,请及时私信沟通。 2.主要针对各个计算机相关专业,包括计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师或企业员工使用。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈! 【资源说明】 项目简介 开发环境 * 操作系统:Windows 10 * 开发工具:Intellij IDEA * 数据库:MySQL 5.7.22 * Java SDK:Oracle JDK 1.8.0_131 部署环境 * 操作系统:Linux centos7 x64 * 虚拟化技术:VMware + Docker 项目管理工具 * 项目构建:Maven + Nexus * 代码管理:Git + GitLab * 镜像管理:Docker Registry 后台主要技术栈 * 核心框架:Spring Boot + Spring Cloud * 视图框架:Spring MVC * 页面引擎:Thymeleaf * ORM 框架:tk.mybatis 简化 MyBatis 开发 * 数据库连接池:Alibaba Druid * 数据库缓存:Redis Sentinel * 消息中间件:RabbitMQ (后期考虑加入) * 接口文档引擎:Swagger2 RESTful 风格 API 文档生成 * 全文检索引擎:ElasticSearch (后期考虑加入) * 分布式链路追踪:ZipKin * 分布式文件系统:Alibaba FastDFS * 分布式服务监控:Spring Boot Admin * 分布式协调系统:Spring Cloud Eureka * 分布式配置中心:Spring Cloud Config * 分布式日志系统:ELK(ElasticSearch + Logstash + Kibana)(后期考虑加入) * 反向代理负载均衡:Nginx * CDN服务器:基于Nginx搭建 前主要技术栈 * 前框架:Bootstrap + jQuery * 前模板:AdminLTE 自动化运维 * 持续集成:GitLab * 持续交付:Jenkins (后期考虑加入) * 容器编排:Kubernetes 系统架构 ![image]( /image/system.png) 服务规划 # Cloud | 服务名称 | 服务口 | 服务说明 | | --- | --- | --- | | itoken-eureka | 8761 | 服务注册与发现 | | itoken-config | 8888 | 分布式配置中心 | | itoken-zipkin | 9411 | 分布式链路追踪 | | itoken-zuul | 8768 | 分布式路由网关 | | itoken-admin | 8084 | 分布式系统监控 | # service | 服务名称 | 服务口 | 服务说明 | | --- | --- | --- | |itoken-service-admin|8501|管理员服务提供者| |itoken-service-redis|8502|数据缓存服务提供者| |itoken-service-sso|8503|单点登录服务提供者| |itoken-service-posts|8504|文章服务提供者| |itoken-service-upload|8505|文件上传服务提供者| |itoken-service-digiccy|8506|数字货币服务提供者| |itoken-service-collection|8507|数据采集服务提供者| # web | 服务名称 | 服务口 | 服务说明 | | --- | --- | --- | |itoken-web-admin|8601|管理员服务消费者| |itoken-web-posts|8602|文章服务消费者| |itoken-web-backend|8603|后台服务聚合| |itoken-web-digiccy|8604|数字货币服务消费者| 页面效果 # 管理员服务页面 ![image]( /image/main.jpg) # 文章服务页面 ![image]( /image/posts.jpg) # 交易所页面 ![image]( /image/digiccy.jpg)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WeChat098

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值