React+Flask前后端分离项目部署和PyQT5项目打包

1 React前端部署

shell脚本如下

read -p "请输入Git注释:" comment
npm run build
git add .
git commit -m $comment
git push
ssh root@[host号] > /dev/null 2>&1 << eeooff
cd /root/workspace/Frontend/my-app-center-page
git pull
exit
eeooff
echo react部署脚本执行完毕!

nginx配置如下

server {
    # 记得开83端口
    # 我的应用中心
    listen       83;
    server_name  [host号];

    location / {
        root /root/workspace/Frontend/my-app-center-page/build;
        index index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

2 Flask后端部署

2.1 一般Flask项目部署

以后想起来了再写

2.2 Flask使用了socketio之后的部署细节

本地使用的命令

# 更新requirements.txt
pip list --format=freeze > requirements.txt
git add .
git commit -m "注释"
git push

云端使用的命令

# 激活虚拟环境
cd /root/workspace/python/venvs/ttos_backend
source bin/activate
# 进入项目目录
cd /root/workspace/python/ttos-backend
# 拉取代码
git pull
# 安装python第三方库(要安装gunicorn和gevent)
pip install -r requirements.txt
# 杀死占用端口的进程
ps -ef | grep [端口号]
kill -9 [进程号]
# 没有日志的部署
gunicorn -k gevent app:app -w 1 -b 127.0.0.1:5001 -D
# # 可以删除-D,调试gunicorn,-D是以守护进程方式运行的意思
# gunicorn -k gevent app:app -w 1 -b 127.0.0.1:5001
# # 有日志的部署
# gunicorn -k gevent -w 1 --error-logfile='/root/logs/ttos_logs/error.log' --access-logfile='/root/logs/ttos_logs/access.log' -b 127.0.0.1:5001 -D app:app

nginx对应的配置

server {
    # 记得在云服务器的控制平台中打开81端口
    listen       81;
    server_name  [host号];
    location / {
        proxy_pass http://127.0.0.1:5001;
            
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

3 PyQT5打包

两个注意点

  1. 使用虚拟环境
  2. 使用如下所示的.spec文件
# -*- mode: python ; coding: utf-8 -*-

import os

spec_root = os.path.abspath(SPECPATH)	# 这行与spec_root变量被使用的那一行比较重要

block_cipher = None


a = Analysis(['main.py'],
             pathex=[spec_root],		# spec_root变量被使用地方
             binaries=[],
             datas=[],
             hiddenimports=[],
             hookspath=[],
             hooksconfig={},
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)

exe = EXE(pyz,
          a.scripts, 
          [],
          exclude_binaries=True,
          name='应用名称',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          console=False,
          disable_windowed_traceback=False,
          target_arch=None,
          codesign_identity=None,
          entitlements_file=None )
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas, 
               strip=False,
               upx=True,
               upx_exclude=[],
               name='main')
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值