Debian7下初次尝试Nginx+Uwsgi部署Django开发环境
之前一直都用的是新浪的SAE,但是由于各种限制,各种不爽,终于下定决心开始折腾VPS,于是在搬瓦工上买了个年付VPS,开始折腾之旅。
由于对Linux一窍不通,所以不知道如何在Linux上部署开发环境,因此事先查询了好多的资料,找到几篇可以参考的文章,由于系统版本,Nginx版本,Python版本不同,配置的情况可能也略有不同,所以先照着别人的折腾看看。
debian一般默认就安装有python,所以省略这一步,不过有些系统python版本太低,需要先升级Python到需要的版本,怎么升级就不介绍了。
建议先安装Lnmp,这样自动配置好mysql的环境并安装phpmyadmin方便管理.
1. 首先安装必须的软件
apt-get update
apt-get upgrade
apt-get install build-essential psmisc
apt-get install python-dev libxml2 libxml2-dev apt-get install python-pip
pip install uwsgi
安装Nginx 和 Mysql(如果安装了Lnmp就不用这一步了)
apt-get install mysql-server
apt-get install nginx
安装django 和 mysql库
pip install MySQL-python
pip install Django==1.6.2
如果安装失败,出现EnvironmentError: mysql_config not found,需要先执行这个命令再安装mysqldb组件:
apt-get install libmysqlclient-dev
pip install MySQL-python
到这里基本上安装部分就介绍完了,下面讲解配置部分,首先建立web项目的文件夹,比如说我放在/var/www下,然后通过下面的命令创建名为mysite的Django项目:
cd /home/user/www
django-admin.py startproject mysite
此时的目录结构为:
mysite/
├── mysite/
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ ├── wsgi.py
└── manage.py
2. 配置Nginx
由于Nginx默认配置文件中包含了" /etc/nginx/sites-enabled/* "目录下的所有配置文件,所以只需要在此目录新建配置文件即可,新建 websites.conf
server {
listen 80;
server_name mydomain.com www.mydomain.com;
charset utf-8;
if ($host = 'www.mydomain.com'){rewrite ^/(.*)$ http://mydomain.com/$1 permanent;}
location / {
root /var/www/mysite;
uwsgi_pass 127.0.0.1:3031;
include /etc/nginx/uwsgi_params;
}
location /static/ {
alias /var/www/mysite/static/;
autoindex off;
}
}
if ($host = 'www.mydomain.com'){rewrite ^/(.*)$ http://mydomain.com/$1 permanent;} 去掉域名前的 www,自动跳转不带www的
loation /static/ 配置静态文件目录。
uwsgi_pass 127.0.0.1:3032; 每个域名的端口不一样, 并且要和uwsgi的端口一样。
3. 配置uWSGI
配置文件支持ini,xml等各种方式配置,个人比较喜欢ini,文件位置放在哪里都可以,最好是方便管理,可以分别放在不同项目的目录内,也可以统一放在uWSGI的安装目录内。
[uwsgi]
socket = 127.0.0.1:3031
chdir = /var/www/mysite/mysite
pythonpath = /var/www/mysite
module = mysite.wsgi:application
env = DJANGO_SETTINGS_MODULE=mysite.settings
processes = 4
threads = 1
stats = 127.0.0.1:9191
vacuum = true
master = true
py-autoreload = 1
daemonize = /tmp/uwsgi.log
processes/threads 分别表示进程、线程数。
配置好 pythonpath 确保能找到 mysite.settings
py-autoreload 这个可以在项目内源码变化的时候自动重启uwsgi
4. 启动测试
启动方式:进入ini配置文件所在目录:uwsgi mysite.ini
启动多个网站的话,uwsgi mysite2.ini
killall -9 uwsgi 杀死有uwsgi进程
uwsgi mysite.ini 开启uwsgi配置
service nginx restart 重启
service nginx reload 平滑重新加载
可以通过 netstat -lpnt 列出端口占用情况,查看对应的端口是否开启,就可以知道配置文件是否生效。
Debian7下初次尝试Nginx+Uwsgi部署Django开发环境的更多相关文章
- CentOS7 + Python3 + Django(rest_framework) + MySQL + nginx + uwsgi 部署 API 开发环境, 记坑篇
CentOS7 + Python3 + Django(rest_framework) + MySQL + nginx + uwsgi 部署 API 开发环境 CentOS7 + Python3 + D ...
- 填坑!!!virtualenv 中 nginx + uwsgi 部署 django
一.为什么会有这篇文章 第一次接触 uwsgi 和 nginx ,这个环境搭建,踩了太多坑,现在记录下来,让后来者少走弯路. 本来在 Ubuntu14.04 上 搭建好了环境,然后到 centos7. ...
- Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统
Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统 这个是写好的Django程序在本地机运行的情况,一个查询接口. 准备工作 1.首先购买一台阿里云的EC ...
- nginx + uwsgi 部署 Django+Vue项目
nginx + uwsgi 部署 Django+Vue项目 windows 本地 DNS 解析 文件路径 C:\Windows\System32\drivers\etc 单机本地测试运行方式,调用dj ...
- nginx + uwsgi 部署django项目
因项目需求,需要部署django项目,这里是基础的nginx配合uwsgi部署django,后续会采用docker部署的方式 环境: centos7 python3.5.4 django2.1.4 u ...
- 生产环境使用Nginx+uwsgi部署Django
在本地运行django应用相对来说还是挺方便的,使用自带的runserver启动即可.如果在生产环境部署django,就要多考虑一些问题了.比如静态文件处理,安全,效率等等 在网上找到了不错的部署的教 ...
- nginx+uwsgi部署django项目
1.django项目部署前需要生成admin的静态资源文件 (1)生成admin的静态资源文件 # 关闭debug模型 DEBUG = False # 允许所有域名访问 ALLOWED_HOSTS = ...
- Nginx + uWSGI 部署Django 项目,并实现负载均衡
一.uWSGI服务器 uWSGI是一个Web服务器,它实现了WSGI协议.uwsgi.http等协议.Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换. 要注意 WSGI ...
- 解决nginx+uWSGI部署Django时遇到的static文件404的问题
昨天是利用Django自带的runserver部署的服务器,但是由于runserver比较不稳定,因此决定采用uWSGI+nginx进行部署. 昨天已经安装好了uwsgi和nginx,使用该指令打开8 ...
随机推荐
- 【耐克】【空军一号 Nike Air Force 1】【软木塞】
[高帮 全白 36-45] [空军一号 低帮 36-46] [空军一号 36-45] [Nike Air Force 1 Flyknit 空军中帮飞线系列 全黑 36-44] [耐克空军一号 软木塞 ...
- EnumRemarkAttribute,获取属性值
首先自定义一个RemarkAttribute [html] view plain copy using System; using System.Collections.Generic; usin ...
- C#固定时间执行指定事件(观察者模式+异步委托)
最近有个项目需要每天固定的时间去执行指定的事件,发现网上关于这样的文章比较少,而且比较散.通过学习了几篇文章后终于实现了这个功能,在此也特别感谢这些文章的作者们,这也是我第一次在园子里面发文章,望多指 ...
- Fastboot模式和Recovery模式
http://blog.csdn.net/luoshengyang/article/details/29688041 在回答第一个问题之前,我们先来看看Android设备从硬件到系统的结构,如图1所示 ...
- U3V第三方软件驱动路径
NI驱动位置:C:\Program Files (x86)\National Instruments\NI-IMAQdx\Staging\NI USB3 VisionA&B驱动位置:D:\Pr ...
- git学习1:git安装和配置
Git是什么?世界上最先进的分布式版本控制系统,记录了一个文本文件的每次一修改信息,比如,一篇散文,从草稿到最终出版,经历过无数次修改,修改了标点符号形成一个版本,老师帮助修改形成一个版本,同学帮忙修 ...
- Python导入自定义包或模块
一般我们会将自己写的 Python 模块与 Python 自带的模块分开存放以达到便于维护的目的. Python 运行环境在查找模块时是对 sys.path 列表进行遍历,如果我们想在运行环境中添加自 ...
- WindowsForm的ComboBox初始化绑定并选中默认值
1.通过查询将默认值放到第一个,然后进行绑定 //绑定线别 private void LineBind() { SqlConnection myConnection = new SqlConnecti ...
- email
#region 邮件帮助类 //+-------------------------------------------------------------------+ //+ FileName: ...
- 【javascript杂谈】你所不知道的replace函数
前言 最近在做面试题的时候总会用到这个函数,这个函数总是和正则表达式联系到一起,并且效果很是不错,总能很简单出色的完成字符串的实际问题,大家肯定都会使用这个函数,像我一样的初学者可能对这个函数的了解还 ...