IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> ubuntu 系统部署django项目(uwsgi+supervisor) -> 正文阅读

[Python知识库]ubuntu 系统部署django项目(uwsgi+supervisor)

项目技术背景

设别通过twisted 与服务平台通信,服务平台分析展示数据信息。

设备的唯一标识从设备中抽取了3个id
AID,BID,CID

安装期间有几次出现无法连接root
给root用户设置密码:
命令:sudo passwd root
输入密码,并确认密码。
重新输入命令:su root
然后输入密码:
发现可以切换到root权限了。


在home/路径下,把代码复制过去

安装python

系统ubuntu
我选择的是python 2.7

安装pip
sudo apt-get install python-pip
sudo apt-get install python-setuptools
sudo apt-get install python-dev
sudo easy_install twisted
sudo apt-get install python-setuptools python-dev build-essential
sudo apt-get install python-setuptools
sudo apt --fix-broken install
sudo apt-get install python-dev
sudo python2 -m easy_install twisted

以上安装失败,打算安装pip

sudo apt install python-pip
sudo pip install twisted 失败
是因为pip 的镜像有问题

利用临时镜像,安装twisted
参考 https://blog.csdn.net/sinat_42556063/article/details/119672430
sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ twisted
sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ twisted

django 运行基本策略

参考学习连接:
①首先把项目传到linux中
②进入项目文件夹中,安装Django库
pip install django
③安装操作mysql的库mysqlclient
pip install mysqlclient
④数据迁移
python manage.py makemigration
python manage.py migrate
静态数据执行
python manage.py collectstatic
④执行项目
python manage.py runserver 0.0.0.0:8000
⑤访问项目

http://服务器ip:端口号

创建账号
python manage.py createsuperuser
创建django 用户
输入密码

运行demo 程序测试

cd /home/python_project/deviceid_allocate/
python manage.py runserver 0.0.0.0:8000
这一步,如果有问题,可以试试
python manage.py runserver 8000
python manage.py runserver

一般故障

“settings.py” E212: Can’t open file for writing
sudo su 用权限

有时8000无法响应,可能有系统占用
查看占用进程号
netstat -tulpn | grep 8000
杀死进程
kill -9 进程号
重新运行
python manage.py runserver 0.0.0.0:8000

平台系统生产系统部署

按照生产的部署方式来部署
思路:
使用uwsgi 启动django 项目,使用supervior 来监控进程,当系统进程被杀死,就自己重启。

安装nginx

查看nginx是否安装成功

nginx -v
启动nginx
service nginx start
重启
service nginx restart
停止
service nginx stop
启动后,在网页重输入ip地址,即可看到nginx的欢迎页面。至此nginx安装成功
nginx文件安装完成之后的文件位置:
/usr/sbin/nginx:主程序
/etc/nginx:存放配置文件
/usr/share/nginx:存放静态文件
/var/log/nginx:存放日志

安装uwsgi

#用临时镜像安装
sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ supervisor
#安装uwsgi
sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ uwsgi --upgrade
#找到项目中的 uwsgi.ini  的位置
cd  /home/automic_hw/Workspace/upgrade_tool_manage_v2/env/product_18/
#通过下面的命令,启动django 项目
uwsgi --ini uwsgi.ini

在这里插入图片描述

[uwsgi]
# uwsgi as web server
# http = 127.0.0.1:8080

# project home
chdir = /home/automic_hw/Workspace/deviceid_allocate/

# django's wsgi.py
module = deviceid_allocate.wsgi:application

# env
env = DJANGO_SETTINGS_MODULE=deviceid_allocate.settings
env = PYTHONPATH=/home/automic_hw/Workspace/pyamlib

# master
master = true

pidfile = /home/automic_hw/Workspace/django_run/pid/deviceid_allocate.pid

# for communcation with nginx
socket=127.0.0.1:10003

# number of worker process
processes = 5

# respawn processes taking more than 20 seconds
--harakiri=20
# respawn processes after serving 5000 requests 
--max-requests=5000

# clear environment on exit
vaccum = true

# 
# daemonize = /home/automic_hw/Workspace/django_run/log/deviceid_allocate.log

logto = /home/automic_hw/Workspace/django_run/log/deviceid_allocate.log

static-map = /static=collected_static

die-on-term = true

查看所有uwsgi 进程
ps aux | grep uwsgi

停止所有进程
sudo pkill -f uwsgi -9

uwsgi 重启
sudo service uwsgi restart

安装 supervisor

参考学习连接
#Ubuntu安装Supervisor
sudo apt install supervisor
#supervisor开机自启:
systemctl enable supervisor

开始运行系统

systemctl start supervisor

在配置文件里,修改配置
具体见配置文档,参考文档

在这里插入图片描述

复制 upgrade_tool_manage_v2_supervisor.conf 到
/etc/supervisor/conf.d/

启动Supervisor

在启动之前我们还需要完成两件事情:
修改uwsgi配置
之前我们在uwsgi的配置文件中设置了一个日志文件保存位置的参数:
daemonize = /home/mysite_uwsgi/mysite.log
但是这个参数的配置与Supervisor的日志输出配置是有冲突的,需要注释掉它,因为在前面加个#:
#daemonize = /home/mysite_uwsgi/mysite.log
干掉uwsgi进程
在使用Supervisor启动uwsgi之前,我们需要先把uwsgi正在运行的进程都干掉
停止所有进程
sudo pkill -f uwsgi -9

启动Supervisor
supervisord -c /etc/supervisor/supervisord.conf

查看运行状态
上一步执行成功之后,如果没有报错那么就是启动成功了,然后我们执行下面的命令查看uwsgi启动状态
supervisorctl status
查看进程
ps aux | grep supervisord
kill -9 进程号

重启命令
supervisorctl -c /etc/supervisor/supervisord.conf restart all

启动应用
sudo supervisorctl start upgrade_tool_manage_v2
sudo supervisorctl start deviceid_allocate

停止应用
sudo supervisorctl stop deviceid_allocate

部署运行问题解决

Supervisor 启动报错“Another program is already listening on a port”的正确解决方法

ps aux | grep supervisord
首先进入 supervisor 控制台:
supervisorctl
然后重新读取配置:
reread
更新配置:
update
开始所有配置:
start all
查看所有状态:
status
至此,解决了新的守护进程的生效问题。

启动2个django项目

复制代码到工作空间
在这里插入图片描述

在nginx 配置2个server

配置多个conf,放到conf.d 中
在这里插入图片描述

启动子系统二

尝试一下:
cd /home/automic_hw/Workspace/deviceid_allocate/env/dev/
通过下面的命令,启动django 项目
uwsgi --ini uwsgi.ini
如果页面,可以启动,证明成功

查看所有uwsgi 进程
ps aux | grep uwsgi
可以看到一些进程号都起来了。
在这里插入图片描述

停止所有进程
sudo pkill -f uwsgi -9
uwsgi 重启
sudo service uwsgi restart

supervisorctl status 查看
在这里插入图片描述

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-05-01 15:42:14  更:2022-05-01 15:43:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:27:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码