新增项目部署文档

This commit is contained in:
ktianc 2022-10-11 15:02:38 +08:00
parent 334b66b4a5
commit f5996560fb

275
项目部署.md Normal file
View File

@ -0,0 +1,275 @@
# 项目部署
## 初始化工作
### 部署目录
根目录:/opt
项目目录:/opt/project
项目启动日志目录:/opt/logs
## 生产环境要求
服务器系统版本Centos 7.2以上
| 软件名称 | 版本 |
| ---------- | ------------ |
| Python | >= 3.8 |
| Mysql | >= 8.0 |
| Nginx | >= 1.16 |
| Git | 最新,非必须 |
| Supervisor | >= 3.4.0 |
## 项目配置
### 接口项目配置
**项目主要配置信息:**
文件路径kinit-api/application/settings.py
```python
# 关闭代码调试
DEBUG = False
```
**导出项目接口依赖包:**
kinit-api 根目录下执行命令:
```
pip freeze > requirements.txt
```
### 前端项目打包
kinit-admin 打包项目根目录下执行命令:
```
pnpm run build:pro
```
### 软件安装配置
#### Mysql
安装配置请查看链接https://www.cnblogs.com/yanglang/p/10782941.html
```
scp mysql-8.0.27-1.el7.x86_64.rpm-bundle.tar root@127.0.0.1:/usr/local/pag
// 安装命令:
tar -xvf mysql-8.0.27-1.el7.x86_64.rpm-bundle.tar
rpm -ivh mysql-community-common-8.0.27-1.el7.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-libs-8.0.27-1.el7.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-client-8.0.27-1.el7.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-server-8.0.27-1.el7.x86_64.rpm --nodeps --force
rpm -qa | grep mysql
rpm -e mysql-community-common --nodeps
rpm -e mysql-community-libs --nodeps
rpm -e mysql-community-client --nodeps
rpm -e mysql-community-server --nodeps
mysqld --initialize
chown mysql:mysql /var/lib/mysql -R
systemctl start mysqld.service
systemctl enable mysqld
cat /var/log/mysqld.log | grep password
mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'b0Nrzh97G9lJkQMK';
create user 'root'@'%' identified with mysql_native_password by 'b0Nrzh97G9lJkQMK';
grant all privileges on *.* to 'root'@'%' with grant option;
flush privileges;
```
安装配置完成后建议使用Navicat Premium 作为 Mysql 的客户端
1. 首先需要创建 kinit 系统数据库
2. 然后将 kinit-api\static\kinit.sql 文件导入
#### Python
```shell
# 下载python安装包
wget https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tgz
# 创建安装目录
mkdir /usr/local/python3
# 解压安装包
tar -zxvf Python-3.8.2.tgz
# 进入解压目录
cd Python-3.8.2
# 配置
./configure --prefix=/usr/local/python3
#编译
make && make install
#创建软链接
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/python3 /usr/local/bin/python3
#pip创建软链接
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
# 更新pip
pip3 install --upgrade pip
```
#### Git
安装:
```
yum -y install git
```
获取项目文件:
```
mkdir -p /opt/project/
git clone -b release 项目Git仓库
```
或者也可以通过压缩包上传的方式上传到服务器,推荐使用 Git 方式
#### Python 虚拟环境
创建项目所使用的 python 虚拟环境:
```shell
# 安装 virtualenv
pip3 install virtualenv
# 找到虚拟环境的安装目录
find / -name virtualenv
# 创建软链接
ln -s /usr/local/python3/bin/virtualenv /usr/bin/
# 进入虚拟环境目录
mkdir -p /opt/env
cd /opt/env
# 新建虚拟环境,会在当前目录生成一个文件夹
virtualenv kinit
# 进入虚拟环境(命令行前面会出现虚拟环境名称)
cd kinit
source bin/activate
# 退出虚拟环境命令(之后的设置都是在虚拟环境中设置,这里不需要退出)
deactivate
```
安装接口项目依赖包:
```shell
# 在虚拟环境中执行
# 进入到 saas-api 根目录下执行
pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
```
#### Supervisor
官方文档http://supervisord.org/
安装配置请查看https://www.jianshu.com/p/0b9054b33db3
创建项目接口 supervisor 配置文件:
```shell
vim /etc/supervisord.d/kinit.api.ini
```
内容如下:
```ini
[program:kinit.api]
directory=/opt/project/kinit/kinit-api/
command=/opt/env/kinit/bin/gunicorn main:app -w 2 -k uvicorn.workers.UvicornWorker -b 0.0.0.0:9000
startsecs=10
stopwaitsecs=10
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile_maxbytes=10MB
stdout_logfile_backups = 3
stdout_logfile=/opt/logs/kinit.api.log
```
更新 supervisor 配置:
```
supervisorctl update
```
更新后会自动启动进程
可以通过命令查看:
```
supervisorctl status
```
#### Nginx
安装:
```
yum -y install nginx
```
增加配置文件
```
vim /etc/nginx/conf.d/kinit.conf
```
内容如下:
```nginx
server
{
listen 80;
server_name 127.0.0.1;
root /opt/project/kinit/kinit-admin/dist/;
keepalive_timeout 180s;
client_max_body_size 20m;
location ~ \.well-known{
allow all;
}
location / {
try_files $uri $uri/ @router;
root /opt/project/kinit/kinit-admin/dist/;
index index.html;
}
location /api/ {
proxy_pass http://127.0.0.1:9000/;
client_max_body_size 20m;
}
location @router {
rewrite ^.*$ /index.html break;
}
access_log /opt/logs/kinit.log;
error_log /opt/logs/kinit.log;
}
```
配置完成后启动:
```
systemctl start nginx
# 开启自启动
systemctl enable nginx
```
查看当前状态:
```
systemctl status nginx
```