当前位置: 首页 > news >正文

Django + Vue 项目部署(1panel + openresty)

前言

大家好,我是绿藻头,一名全栈工程师,目前专注于Python的开发,以及Vue和微信小程序的开发。写博客的原因有两个:一是方便将自己的笔记保存下来,二是给自己找些小事做,总比下班后躺在床上玩手机好。

准备工作
在开始之前,请确保你已经完成以下准备工作:

  • 一个你自己定义好的Python项目(比如,已经写好几个接口)。
  • 一个配置好的Vue项目,记得配置好网址。
  • 一台已经安装好1Panel的服务器。
  • 在服务器中安装了OpenResty。

Python项目

首先,创建一个Python项目并编写一些接口(这部分内容不重点讨论)。
常见问题
作为初学者,我常常思考一些问题,比如:
如何将项目上传到自己的服务器?
如何更新项目?
相信很多人都有类似的疑问,针对这些问题,我目前有两种方案:

上传源码到服务器 如果你的项目接口较少,或者接口已经基本开发完成,那么可以直接将源码上传到服务器。

你可以使用xftp或SSH(在Mac上我用的是SSH)将文件传输到服务器上,注意:不要上传虚拟环境(.venv文件夹)。

使用Git进行管理 如果你希望能够方便地更新项目代码,并且使用版本控制,可以考虑使用Git。举个例子,这是我的一个GitHub仓库:JobSubmissionPlatform。 在服务器上执行以下命令:

git init # 初始化本地Git仓库

git remote add origin https://github.com/duasong111/JobSubmissionPlatform.git  # 添加远程仓库
git remote -v  # 查看远程仓库
git pull origin main  # 拉取远程仓库的代码

这样,代码就成功下载到服务器上,后续你可以通过git pull来拉取更新的代码。
创建并激活Python虚拟环境
在服务器上,你需要创建一个虚拟环境来隔离项目的依赖。操作步骤如下:
创建虚拟环境(假设环境名称为myenv):
python -m venv myenv # 创建虚拟环境
激活虚拟环境:
source myenv/bin/activate # 激活虚拟环境
如果命令行前缀变成(myenv),说明虚拟环境已经激活成功。
安装依赖并启动项目
安装项目的依赖:
pip install -r requirements.txt # 安装依赖
启动项目:
python manage.py runserver 0.0.0.0:8000 # 启动项目,使用0.0.0.0表示允许所有IP访问
为什么使用0.0.0.0? 这是一个回环地址,意味着项目可以通过所有IP进行访问,直到没有报错为止。
使用uWSGI进行生产环境部署
我们不希望每次手动启动项目,使用uWSGI可以在生产环境中方便地部署Django应用。
首先安装uWSGI:

pip install uwsgi

创建uwsgi.ini配置文件:

[uwsgi]
chdir = /home/Web_python/JobSubmissionPlatform  # 项目路径
module = wsgi:application  # 入口模块
master = true  # 启动master进程
processes = 2  # 启动2个worker进程
socket = 127.0.0.1:8000  # 设置监听端口
vacuum = true  # 清理进程
env = DJANGO_SETTINGS_MODULE=JobSubmissionPlatform.settings  # 环境变量
daemonize = /home/Web_python/uwsgi.log  # 日志文件路径

查看进程是否启动:

启动uWSGI:
uwsgi --ini uwsgi.ini  # 启动uWSGI进程
ps aux | grep uwsgi  # 查看uWSGI进程是否存在
netstat -tnlp | grep 9000  # 检查端口是否监听

配置Shell脚本用于启动与关闭uWSGI
为了方便管理uWSGI进程,我们可以配置两个Shell脚本来启动和停止uWSGI进程。

停止的脚本

#!/usr/bin/env bashecho -e "\033[34m----------------wsgi process--------\033[0m"# 获取 uWSGI 进程的 PID
PIDS=$(ps -ef | grep '[u]wsgi.*uwsgi.ini' | awk '{print $2}')if [ -z "$PIDS" ]; thenecho -e "\033[31mNo uWSGI processes found for uwsgi.ini\033[0m"exit 1
fiecho -e "\n-----------going to close ----------------"
for PID in $PIDS; doecho "Stopping uWSGI process with PID: $PID"kill -15 "$PID"  # 使用 SIGTERM 优雅终止sleep 1# 检查进程是否仍在运行if ps -p "$PID" > /dev/null; thenecho -e "\033[31mProcess $PID did not terminate, forcing kill...\033[0m"kill -9 "$PID"  # 如果 SIGTERM 失败,强制终止fi
doneecho -e "\033[32mAll uWSGI processes stopped\033[0m"

重启的脚本

#!/usr/bin/env bashecho -e "\033[34m----------------wsgi process--------\033[0m"# 获取 uWSGI 进程的 PID
PIDS=$(ps -ef | grep '[u]wsgi.*uwsgi.ini' | awk '{print $2}')if [ -n "$PIDS" ]; thenecho -e "\n-----------going to close ----------------"for PID in $PIDS; doecho "Stopping uWSGI process with PID: $PID"kill -15 "$PID"  # 使用 SIGTERM 优雅终止sleep 1# 检查进程是否仍在运行if ps -p "$PID" > /dev/null; thenecho -e "\033[31mProcess $PID did not terminate, forcing kill...\033[0m"kill -9 "$PID"  # 如果 SIGTERM 失败,强制终止fidone
elseecho -e "\033[31mNo uWSGI processes found for uwsgi.ini\033[0m"
fiecho -e "\n-------starting uWSGI---------"
# 使用虚拟环境中的 uwsgi,确保路径可移植
UWSGI_BIN=$(command -v uwsgi)
if [ -z "$UWSGI_BIN" ]; thenecho -e "\033[31mError: uwsgi not found in PATH\033[0m"exit 1
fi$UWSGI_BIN --ini uwsgi.ini &sleep 1echo -e "\033[34m----------------wsgi process--------\033[0m"
ps -ef | grep '[u]wsgi.*uwsgi.ini'if [ $? -eq 0 ]; thenecho -e "\033[32muWSGI restarted successfully\033[0m"
elseecho -e "\033[31mFailed to start uWSGI\033[0m"exit 1
fi

哎呦,这个csdn的内容展示不行,不能达到很好的效果啊

http://www.lryc.cn/news/609754.html

相关文章:

  • AI“炼金术”:破解绿色水泥的配方密码
  • 三防平板电脑是什么?这款三防平板支持红外测温!
  • 电脑上不了网怎么办?【图文详解】wifi有网络但是电脑连不上网?网络设置
  • 电脑一键重装系统win7/win10/win11无需U盘(无任何捆绑软件图文教程)
  • Ribbon 核心原理与架构详解:服务负载均衡的隐形支柱
  • 工作流绑定卡片优化用户体验-练习我要找工作智能体
  • 【CVPR2025】计算机视觉|AnomalyNCD:让工业异常分类“脱胎换骨”!
  • transformer与神经网络
  • ubuntu24.01安装odoo18
  • 纯前端使用ExcelJS插件导出Excel
  • 计算机视觉(2)车规摄像头标准
  • 5天挑战网络编程 -DAY1(linux版)
  • python:讲懂决策树,为理解随机森林算法做准备,以示例带学习,通俗易懂,容易理解和掌握
  • 句子表征-文本匹配--representation-based/interactive-based
  • 学习日志27 python
  • 基于开源AI智能名片链动2+1模式与S2B2C商城小程序的直播营销销量转化机制研究
  • 短剧小程序系统开发:引领影视消费新潮流
  • 【世纪龙科技】汽车自动变速器拆装虚拟实训软件
  • 音视频文案字幕一键提取,免费使用,效率软件!
  • AR远程协作网页设计:虚实融合场景下的故障标注与操作指引界面
  • AR技术赋能轨道交通培训:虚实结合提升学习效率
  • AUTOSAR AR-Explorer正式发布
  • 6s081环境配置以及使用vscode连接本地wsl2
  • Qt 使用QtXlsx库处理Excel文件
  • AR技术赋能能源勘探:从数据可视化到智能预测的革命性突破
  • 《解构Angular组件变化检测:从自动到手 动的效能突破》
  • 【Git 误操作恢复指南】
  • 如何安装 nvm-setup.exe?Windows 安装 NVM 管理 Node.js 版本的完整流程(附安装包下载)
  • 配置Mybatis环境
  • ollama解锁LLM生成上下文长度