django+uwsgi+nginx+sqlite3部署
Posted .Tang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django+uwsgi+nginx+sqlite3部署相关的知识,希望对你有一定的参考价值。
note:可通过该命令查找文件未知
sudo find / -name filename
一:项目(github)
ssh root@server ip # 连接你的服务器
git clone -b https://mygithub.com # -b 指定分支
安装virtualenv及配置环境变量 详细见:https://www.cnblogs.com/tangpg/p/8458233.html
mkvirtualenv envname -p python3 # 创建项目使用的python版本的虚拟环境,创建成功默认回进入该虚拟环境 pip install -r requirements.txt # 安装项目依赖 python manage.py runserver # 保证项目能够运行
note:!!!
使用数据库为sqlite3可能会出现如下错误: django.db.utils.NotSupportedError: URIs not supported 应该修改根据错误提示的路径下的base.py文件 if self.features.can_share_in_memory_db: kwargs.update({\'uri\': True}) # 将此处的True改为False return kwargs
二:配置uwsgi
pip install uwsgi # 安装
在项目根目录创建 uwsgi.ini 名字自取
[uwsgi] # 取决于nginx配置 upstream socket = 127.0.0.1:9000 socket = 127.0.0.1:9001 # 项目根目录 chdir = /home/jason/projectName# Django的wsgi文件 module = projectName.wsgi # Python虚拟环境的路径 home = /home/user/.virtualenvs/envname/bin/python # 进程相关的设置 # 主进程 master = true # 最大数量的工作进程 processes = 1 # 感觉跟服务器cpu有关,反正我单核设置成2就会导致浏览特别慢 # 设置socket的权限 chmod-socket = 666 # 退出的时候是否清理环境 vacuum = true # 静态文件 绝对地址 static-map = /static=/home/user/projectName/static
三:nginx 配置
安装nginx 详情:https://www.cnblogs.com/tangpg/p/8962773.html
配置环境变量,编辑/etc/profile 增加如下内容: NGINX_HOME= /usr/local/nginx export PATH=$PATH:$NGINX_HOME/bin source /etc/profile # 重启配置信息
mkdir conf.d # 在nginx.conf目录下创建文件 cd conf.d # 进入 touch project.conf # 创建nginx配置文件,配置此项目的配置信息
在nginx.conf中的http块的最后面, include usr/local/nginx/conf/conf.d/project.conf # 将该配置文件加载到nginx.conf配置中
nginx -s reload # 重启nginx服务 如果没有权限,切换为root用户重启
upstream anyname { server 127.0.0.1:9000 weight=3; # 两台服务器 与 wsgi配置相关 weight=3, 9000端口处理3个请求,9001处理第四个请求。以此循环 server 127.0.0.1:9001; } # 配置服务器 server { # 监听的端口号,通过服务器ip监听的端口 listen 80; # 域名 or ip server_name your server ip; charset utf-8; # 最大的文件上传尺寸 client_max_body_size 75M; # 静态文件访问的url, nginx再次加载静态文件 location /static { # 静态文件地址 alias /home/user/projectName/static; } # 最后,发送所有非静态文件请求到django服务器 location / { include uwsgi_params;
# uwsgi_pass 127.0.0.1:9000; # uwsgi.ini 的socket参数相同 or
uwsgi_pass anyname; # upstream anyname
uwsgi_param UWSGI_SCRIPT projectName.wsgi; # wsgi.py文件
uwsgi_param UWSGI_CHDIR /home/user/projectName; # 指定项目目录
index index.html index.html;
client_max_body_size 35m; } }
四:启动uwsgi
uwsgi --ini uwsgi.ini
就可以通过 服务器域名或ip访问了
但是这样会有个问题,断开ssh连接,改进程也就被kill了。为此,我们可以使用screen
五: screen
yum install screen
出现该错误:
Error downloading packages: ...
执行 : yum clean all, 再重yum ... 我就ok了。
常用命令:
screen -S qugemingzi # 创建会话窗口,并取名 Ctrl+a+d # 暂时退出窗口
exit # 结束会话
screen -r qugemingzi # -r + name回到之前的窗口 查看会话列表: screen -ls 恢复之前离开的会话:screen -r 会话名或进程号 清除dead状态的会话:screen -wipe 启动一个开始就是Detached状态的会话:screen -dmS 名字 命令
1.创建一个会话窗口:screen -S name
2.在次窗口中运行第四不命令: uwsgi --ini uwsgi.ini
3. 将该会话挂起: Ctrl + a + d
这样断开ssh 连接,也不会中断进程了。。。
perfect...
以上是关于django+uwsgi+nginx+sqlite3部署的主要内容,如果未能解决你的问题,请参考以下文章
Install Python+Django+Nginx+UWSGI
django1.11.6+nginx1.12.2+uwsgi2.0.15 部署 | autoops 生产环境部署指南