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