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 查看
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不对法

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值