项目技术背景
设别通过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 查看