搭建文档
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、安装
- 查看是否安装JDK
java -version
说明:没有安装java环境或者可能是没有配置环境变量
2. 上传已经下载好的JDK安装包
我这边安装的目录是:/opt/ 下
3. 解压安装包
解压命令:
tar -xvf jdk-8u361-linux-x64.tar.gz
2、配置环境变量
- 编辑系统配置文件
命令:
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、安装
- 上传已经下载好的mysql安装包
- 解压压缩包
命令: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、配置
- 创建数据目录
这里我将mysql的数据存到了 /data/mysql 目录下,系统与原本是没有这个目录的。
命令:mkdir -p /data/mysql
- 修改配置文件
命令: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用户
-
创建mysql用户组和mysql用户
groupadd mysql && useradd -r -g mysql mysql
-
给用户赋予mysql数据文件夹(/data/mysql)权限
chown mysql:mysql -R /data/mysql
4、启动mysql
- 安装初始化依赖
进入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
- 设置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
- 连接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登录)
- mysql设置远程登录
- 设置用户远程登录
sql的意思是:GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%' IDENTIFIED BY '密码';
GRANT(授权)
ALL PRIVILEGES(所有权限)
ON(在)
🌟.🌟(全部数据库.全部表)
‘%’(远程) - 刷新更改的配置
flush privileges;
- linux开放3306端口
重启防火墙生效firewall-cmd --zone=public --add-port=3306/tcp --permanent
查看开放的端口firewall-cmd --reload
firewall-cmd --list-ports
- 测试连接
7、创建mysql用户及设置用户数据权限
-
创建一个test的用户用来我们的jar包运行服务
从yml文件中可以看出我们使用127.0.0.1的ip连接数据库的,我们这边给test用户设置增、删、改、查、创建数据库的权限,而且我们只给了test库的权限。 -
我们先用root账户创建一个test库宾创建一些测试表
-
添加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、安装
- 上传redis安装包
- 解压
tar -vxf redis-5.0.4.tar.gz
2、编译
- 进入reids目录
cd redis-5.0.4
- 安装全套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
- 编译
make
- 安装
make PREFIX=/opt/redis-5.0.4 install
3、配置
- 设置全局变量
最后面追加:vi /etc/profile
export PATH=/opt/redis-5.0.4/bin:$PATH
- 重新加载配置文件
source /etc/profile
- 修改reids.conf
修改下面几处
4. 开机启动
echo "redis-server /opt/redis-5.0.4/redis.conf &" >> /etc/rc.local
4、验证
- 启动redis服务
进入redis.conf位置目录执行启动命令
redis-server ./redis.conf
- 验证是否启动
ps -ef | grep redis
- 这里就忽略开放6379的防火墙(需要外部访问的话需要开放端口,与mysql开放端口相同)
5、相关问题及解决方案
6、部署后端jar包,验证是否可以启动成功
mysql与redis的连接地址
我们把jar包放到/data/test目录下启动
使用命令(命令用来做测试,control+c就会停止服务,后面正式部署用允许后台执行的命令就好):
java -jar agent-admin.jar
都没有问题,现在说明后端启动没有问题了。
6、nginx
1、安装
- 上传nginx安装包
- 解压
tar -vxf nginx-1.20.2.tar.gz
- 安装
授权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、配置
-
修改/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、验证
- 启动nginx(后面的是上面修改后的配置文件:/usr/local/nginx/conf/nginx.conf)
nginx -c /usr/local/nginx/conf/nginx.conf
- 确认是否启动成功
ps -ef | grep nginx
- linux开放80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
重启防火墙生效
firewall-cmd --reload
4、部署前端与后端
- 创建后端(/data/agent)与前端(/data/agent/agent-vue)的目录
注意⚠️:前端的目录一定要和nginx中配置的前端目录要一致,要不然nginx无法找到前端页面地址
- 将前端与后端包放到目录中
前端:
后端:
- 启动后端jar包
启动nohup java -jar agent-admin.jar &
查看是否启动正常 (主要就是查看日志的方式,来判断是否启动成功)
tail -f nohup.out