前后端服务搭建

搭建文档

1、前言

1、背景

​ 介于公司将一个项目交给我部署上线,再次之前没有过搭建过生产环境、及生产环境的部署。就请教同事及网上教程的方式完成了项目部署。
​ 下面操作的方式是用两台电脑的方式模拟线上部署(一台windows与一台mac):windows安装了VM虚拟机,虚拟机上安装了linux(操作系统CentOS 7.6),主要是模拟linux系统(下面介绍的的时候简称为“服务器”);mac操作服务器完成部署。

2、搭建思路

​ 使用前后端分离架构,主要用到mysql(数据存储)、redis(登录缓存)、nginx(转发)、JDK1.8

3、设备及软件版本

​ linux服务器(CentOS 7.6)、mysql(5.6)、reids(没有版本限制,最新即可)、nginx(没有版本限制,最新即可)
​ 注意:选用mysql(5.6以上版本,不包含5.6)要注意自己的建表语句,datetime字段使用到timestamp默认值报错的问题,我这边就不想修改我的建表语句就选择了5.6的版本,当然你也可以选择其他版本。
​ 提醒:更换Mariadb库为mysql 5.7,相关问题麻烦自行查询解决办法。

2、安装包选择介绍

3、JDK

1、安装

  1. 查看是否安装JDK
    java -version
    

请添加图片描述 说明:没有安装java环境或者可能是没有配置环境变量
2. 上传已经下载好的JDK安装包
请添加图片描述
​ 我这边安装的目录是:/opt/ 下
3. 解压安装包
请添加图片描述
​ 解压命令:

tar -xvf jdk-8u361-linux-x64.tar.gz

2、配置环境变量

  1. 编辑系统配置文件
    请添加图片描述
    ​ 命令:
vi /etc/profile

请添加图片描述
2. 在文件在下面追加
请添加图片描述
追加内容:

export JAVA_HOME=/opt/jdk1.8.0_361
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

注意:export JAVA_HOME=/opt/jdk1.8.0_361 这里的“jdk1.8.0_361“,一定要是自己的刚才解压后的jdk文件夹名称
请添加图片描述
3. 重新加载配置文件
请添加图片描述
命令:

source /etc/profile

3、验证

请添加图片描述
命令:

java -version

4、相关问题及解决方案

4、mysql

1、安装

  1. 上传已经下载好的mysql安装包
    请添加图片描述
  2. 解压压缩包
    请添加图片描述
    命令:
     tar -vxf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
    

请添加图片描述
3. 重命名文件名
请添加图片描述
命令:

mv mysql-5.6.36-linux-glibc2.5-x86_64 mysql-5.6

请添加图片描述

2、配置

  1. 创建数据目录
    请添加图片描述
    这里我将mysql的数据存到了 /data/mysql 目录下,系统与原本是没有这个目录的。
    命令:
    mkdir -p /data/mysql
    
  2. 修改配置文件
    请添加图片描述
    命令:
    vi /etc/my.cnf
    

请添加图片描述
修改内容:
请添加图片描述

[mysqld]
port=3306
user=mysql
basedir=/opt/mysql-5.6
datadir=/data/mysql
socket=/tmp/mysql.sock
character_set_server=utf8mb4
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid

3、创建mysql用户组和mysql用户

  1. 创建mysql用户组和mysql用户
    请添加图片描述

    groupadd mysql && useradd -r -g mysql mysql
    
  2. 给用户赋予mysql数据文件夹(/data/mysql)权限
    请添加图片描述

    chown mysql:mysql -R /data/mysql
    

4、启动mysql

  1. 安装初始化依赖
    进入mysql的安装的目录下
    请添加图片描述
    yum -y install autoconf make perl
    

请添加图片描述
2. 执行初始化
请添加图片描述
进入 “/opt/mysql-5.6/scripts” 目录

cd /opt/mysql-5.6/scripts

初始化命令(这里要根据自己的文件目录调整语句): 请添加图片描述

./mysql_install_db --defaults-file=/etc/my.cnf --basedir=/opt/mysql-5.6/ --datadir=/data/mysql/ --user=mysql

–defaults-file 指定配置文件
–basedir 指定mysql安装目录
–datadir 指定mysql数据目录
–user 创建的用户 请添加图片描述
3. 启动mysql
复制启动文件到 “/etc/init.d/mysql”
请添加图片描述

cp /opt/mysql-5.6/support-files/mysql.server /etc/init.d/mysql

启动
请添加图片描述

service mysql start

请添加图片描述

5、连接mysql

  1. 设置mysql全局变量 请添加图片描述
    vi /etc/profile
    

请添加图片描述

export PATH=/opt/mysql-5.6/bin:/opt/mysql-5.6/lib:$PATH

注意:“/opt/mysql-5.6”修改为自己的安装目录
2. 重新加载配置文件

source /etc/profile
  1. 连接mysql
    请添加图片描述
    mysql -uroot -p
    

请添加图片描述
这里我们还没有设置密码,所以直接回车就好
请添加图片描述
4. 设置root用户密码
切换数据库 请添加图片描述

use mysql;

查询用户表
请添加图片描述

select host, user, password from user;

我们可以看出 host,user,password 三列
host 允许访问mysql连接的地址
user 允许连接的用户
password 连接时需要的密码
我们可以看出上面是个root用户都没有设置密码,我们等下设置一下密码
我们也看到下面两个没有用户名、密码,表示我们直接输入“mysql”命令也可以进入mysql(建议删除掉后面)
请添加图片描述
修改密码
请添加图片描述

 update user set password=PASSWORD("你的密码") where User ='root';

查看修改后的状态

select host, user , password from user;

请添加图片描述
刷新权限(在修改mysql任何权限都要执行)

flush privileges;

请添加图片描述
​ 退出重新登录验证
退出命令:

exit;

重新登录:
请添加图片描述

6、设置远程登录(等下我们使用navacat登录)

请添加图片描述

  1. mysql设置远程登录
    1. 设置用户远程登录
    GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%' IDENTIFIED BY '密码';
    
    ​ sql的意思是:
    ​ GRANT(授权)
    ​ ALL PRIVILEGES(所有权限)
    ​ ON(在)
    ​ 🌟.🌟(全部数据库.全部表)
    ​ ‘%’(远程)
  2. 刷新更改的配置
    flush privileges;
    
  3. linux开放3306端口
    请添加图片描述
    firewall-cmd --zone=public --add-port=3306/tcp --permanent
    
    重启防火墙生效
    请添加图片描述
    firewall-cmd --reload
    
    查看开放的端口
    firewall-cmd --list-ports
    
  4. 测试连接
    请添加图片描述

7、创建mysql用户及设置用户数据权限

  1. 创建一个test的用户用来我们的jar包运行服务
    请添加图片描述
    ​ 从yml文件中可以看出我们使用127.0.0.1的ip连接数据库的,我们这边给test用户设置增、删、改、查、创建数据库的权限,而且我们只给了test库的权限。

  2. 我们先用root账户创建一个test库宾创建一些测试表
    请添加图片描述

  3. 添加test用户且设置数据权限
    请添加图片描述
    远程登录的权限

    GRANT INSERT,UPDATE,DELETE,SELECT,CREATE ON test.* TO 'test'@'%' IDENTIFIED BY 'test123';
    

    本机登录的权限

    GRANT INSERT,UPDATE,DELETE,SELECT,CREATE ON test.* TO 'test'@'127.0.0.1' IDENTIFIED BY 'test123';
    

    刷新权限
    请添加图片描述

    flush privileges;
    

    测试是否可以远程是否可以登录
    请添加图片描述
    4. 补充说明

    其实我们可以登录root账户在navacat上可以看到我们给test用户设置的权限(mysql.db中)
    请添加图片描述

8、相关问题及解决方案

5、redis

1、安装

  1. 上传redis安装包
    请添加图片描述
  2. 解压
    请添加图片描述
    tar -vxf redis-5.0.4.tar.gz
    

2、编译

  1. 进入reids目录
    请添加图片描述
    cd redis-5.0.4
    
  2. 安装全套gcc
    请添加图片描述
    yum install cpp
    yum install binutils
    yum install glibc
    yum install glibc-kernheaders
    yum install glibc-common
    yum install glibc-devel
    yum install gcc
    yum install make
    
  3. 编译请添加图片描述
make
  1. 安装
    请添加图片描述
    make PREFIX=/opt/redis-5.0.4 install
    

3、配置

  1. 设置全局变量
    vi /etc/profile
    
    最后面追加:
    请添加图片描述
    export PATH=/opt/redis-5.0.4/bin:$PATH
    
  2. 重新加载配置文件
    source /etc/profile
    
  3. 修改reids.conf
    请添加图片描述
    修改下面几处
    请添加图片描述
    请添加图片描述4. 开机启动
    请添加图片描述
    echo "redis-server /opt/redis-5.0.4/redis.conf &" >> /etc/rc.local
    

4、验证

  1. 启动redis服务
    进入redis.conf位置目录执行启动命令
    请添加图片描述
    redis-server ./redis.conf
    
  2. 验证是否启动
    请添加图片描述
    ps -ef | grep redis
    
  3. 这里就忽略开放6379的防火墙(需要外部访问的话需要开放端口,与mysql开放端口相同)

5、相关问题及解决方案

6、部署后端jar包,验证是否可以启动成功

mysql与redis的连接地址
请添加图片描述
请添加图片描述
我们把jar包放到/data/test目录下启动
请添加图片描述
使用命令(命令用来做测试,control+c就会停止服务,后面正式部署用允许后台执行的命令就好):
请添加图片描述

java -jar agent-admin.jar

请添加图片描述
都没有问题,现在说明后端启动没有问题了。

6、nginx

1、安装

  1. 上传nginx安装包
    请添加图片描述
  2. 解压
    请添加图片描述
    tar -vxf nginx-1.20.2.tar.gz
    
  3. 安装
    授权nginx目录
    chmod 777 /opt/nginx-1.20.2
    

请添加图片描述
进入nginx的文件目录
请添加图片描述
安装插件

yum -y install gcc openssl openssl-devel pcre-devel zlib zlib-devel

请添加图片描述
执行./configure

./configure
```![请添加图片描述](https://img-blog.csdnimg.cn/19bd5f9897ec49daa65ccdc963554dfc.png)
执行make
```c
make

请添加图片描述
执行make install命令

make install

请添加图片描述

2、配置

  1. 修改/usr/local/nginx/conf/nginx.conf配置文件

    vi /usr/local/nginx/conf/nginx.conf
    

    全部替换为下面的

    #user  nobody;
    worker_processes  1;
    
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    
    #pid        logs/nginx.pid;
    
    
    events {
        worker_connections  1024;
    }
    
    
    http {
        include       /usr/local/nginx/conf/mime.types;
        default_type  application/octet-stream;
    
        #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
        #                  '$status $body_bytes_sent "$http_referer" '
        #                  '"$http_user_agent" "$http_x_forwarded_for"';
    
        #access_log  logs/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  65;
    
        #gzip  on;
    
        server {
                    listen       80;
                     server_name  localhost;
    
                    location / {
                    root   /data/agent/agent-vue;
                    index  index.html index.htm;
                            try_files $uri $uri/ @router;
                    }
                    location /api/admin {
                     proxy_pass  http://127.0.0.1:18082;
                    }
                    location @router {
               rewrite ^.*$ /index.html last;
            }
    
                error_page   500 502 503 504  /50x.html;
                location = /50x.html {
                    root   /usr/share/nginx/html;
                }
    
            }
    
    }
    

    主要修改内容:
    请添加图片描述
    3. 配置nginx的全局命令
    编辑环境变量配置文件

    vi /etc/profile
    

    后面追加

    PATH=$PATH:/usr/local/nginx/sbin
    

    请添加图片描述

3、验证

  1. 启动nginx(后面的是上面修改后的配置文件:/usr/local/nginx/conf/nginx.conf)
    请添加图片描述
 nginx -c /usr/local/nginx/conf/nginx.conf
  1. 确认是否启动成功
    请添加图片描述
    ps -ef | grep nginx
    
  2. linux开放80端口
    请添加图片描述
firewall-cmd --zone=public --add-port=80/tcp --permanent

重启防火墙生效
请添加图片描述

firewall-cmd --reload

4、部署前端与后端

  1. 创建后端(/data/agent)与前端(/data/agent/agent-vue)的目录
    注意⚠️:前端的目录一定要和nginx中配置的前端目录要一致,要不然nginx无法找到前端页面地址
    请添加图片描述
  2. 将前端与后端包放到目录中
    前端:
    请添加图片描述
    后端:
    请添加图片描述
  3. 启动后端jar包
    启动
    nohup java -jar agent-admin.jar &
    

请添加图片描述
​ 查看是否启动正常 (主要就是查看日志的方式,来判断是否启动成功)请添加图片描述

tail -f nohup.out

5、页面验证

请添加图片描述

请添加图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
搭建一个Java前后端分离网站,你可以按照以下步骤进行: 1. 设计前端界面:首先,你需要设计网站的前端界面。使用HTML、CSS和JavaScript来创建用户界面,并确保它符合你的需求。 2. 开发后端服务:接下来,你需要使用Java编程语言来开发后端服务。选择一个Java框架(如Spring Boot)来构建你的后端应用程序。这个后端应用程序将处理前端发送过来的请求并返回相应的数据。 3. 实现API接口:在后端应用程序中,你需要实现一些API接口来处理前端的请求。这些API将定义你的前后端之间的通信协议。你可以使用Spring MVC来处理和管理这些API接口。 4. 数据库集成:将数据库集成到你的后端应用程序中。选择一个适合你的项目的数据库(如MySQL、PostgreSQL等),并使用Java的数据库访问技术(如JDBC或Hibernate)与数据库进行交互。 5. 构建前后端分离架构:为了实现前后端分离,你需要将前端后端部署在不同的服务器上。前端部署在Web服务器(如Nginx或Apache)上,后端部署在应用服务器(如Tomcat或Jetty)上。 6. 跨域问题处理:由于前后端分离,你可能会遇到跨域问题。你可以在后端应用程序中配置跨域资源共享(CORS)来解决这个问题。 7. 部署和测试:最后,将前端后端代码部署到相应的服务器上,并进行测试以确保它们能够正常工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值