之前一直都用的是新浪的SAE,但是由于各种限制,各种不爽,终于下定决心开始折腾VPS,于是在搬瓦工上买了个年付VPS,开始折腾之旅。

由于对Linux一窍不通,所以不知道如何在Linux上部署开发环境,因此事先查询了好多的资料,找到几篇可以参考的文章,由于系统版本,Nginx版本,Python版本不同,配置的情况可能也略有不同,所以先照着别人的折腾看看。

debian一般默认就安装有python,所以省略这一步,不过有些系统python版本太低,需要先升级Python到需要的版本,怎么升级就不介绍了。

建议先安装Lnmp,这样自动配置好mysql的环境并安装phpmyadmin方便管理.

1. 首先安装必须的软件

  1. apt-get update
  2. apt-get upgrade
  3. apt-get install build-essential psmisc
  4. apt-get install python-dev libxml2 libxml2-dev
  5.  
  6. apt-get install python-pip
  7. pip install uwsgi

安装Nginx 和 Mysql(如果安装了Lnmp就不用这一步了)

  1. apt-get install mysql-server
  2. apt-get install nginx

安装django 和 mysql库

  1. pip install MySQL-python
  2. pip install Django==1.6.2

如果安装失败,出现EnvironmentError: mysql_config not found,需要先执行这个命令再安装mysqldb组件:

  1. apt-get install libmysqlclient-dev
  1. pip install MySQL-python

到这里基本上安装部分就介绍完了,下面讲解配置部分,首先建立web项目的文件夹,比如说我放在/var/www下,然后通过下面的命令创建名为mysite的Django项目:

  1. cd /home/user/www
  2. django-admin.py startproject mysite

  此时的目录结构为:

  1. mysite/
  2. ├── mysite/
  3. ├── __init__.py
  4. ├── settings.py
  5. ├── urls.py
  6. ├── wsgi.py
  7. └── manage.py

2. 配置Nginx

由于Nginx默认配置文件中包含了" /etc/nginx/sites-enabled/* "目录下的所有配置文件,所以只需要在此目录新建配置文件即可,新建 websites.conf

  1. server {
  2. listen 80;
  3. server_name mydomain.com www.mydomain.com;
  4. charset utf-8;
  1. if ($host = 'www.mydomain.com'){rewrite ^/(.*)$ http://mydomain.com/$1 permanent;}
  1. location / {
  2. root /var/www/mysite;
  3. uwsgi_pass 127.0.0.1:3031;
  4. include /etc/nginx/uwsgi_params;
  5. }
  6.  
  7. location /static/ {
  8. alias /var/www/mysite/static/;
  9. autoindex off;
  10. }
  11.  
  12. }

  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的安装目录内。

  1. [uwsgi]
  2. socket = 127.0.0.1:3031
  3. chdir = /var/www/mysite/mysite
  4. pythonpath = /var/www/mysite
  5. module = mysite.wsgi:application
  6. env = DJANGO_SETTINGS_MODULE=mysite.settings
  7. processes = 4
  8. threads = 1
  9. stats = 127.0.0.1:9191
  10. vacuum = true
  11. master = true
  12. py-autoreload = 1
  13. daemonize = /tmp/uwsgi.log

  processes/threads 分别表示进程、线程数。

  配置好 pythonpath 确保能找到 mysite.settings

  py-autoreload 这个可以在项目内源码变化的时候自动重启uwsgi

4. 启动测试

启动方式:进入ini配置文件所在目录:uwsgi mysite.ini

启动多个网站的话,uwsgi mysite2.ini

  1. killall -9 uwsgi 杀死有uwsgi进程
  2. uwsgi mysite.ini 开启uwsgi配置
  3. service nginx restart 重启
  4. service nginx reload 平滑重新加载

可以通过 netstat -lpnt   列出端口占用情况,查看对应的端口是否开启,就可以知道配置文件是否生效。

Debian7下初次尝试Nginx+Uwsgi部署Django开发环境的更多相关文章

  1. CentOS7 + Python3 + Django(rest_framework) + MySQL + nginx + uwsgi 部署 API 开发环境, 记坑篇

    CentOS7 + Python3 + Django(rest_framework) + MySQL + nginx + uwsgi 部署 API 开发环境 CentOS7 + Python3 + D ...

  2. 填坑!!!virtualenv 中 nginx + uwsgi 部署 django

    一.为什么会有这篇文章 第一次接触 uwsgi 和 nginx ,这个环境搭建,踩了太多坑,现在记录下来,让后来者少走弯路. 本来在 Ubuntu14.04 上 搭建好了环境,然后到 centos7. ...

  3. Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统

    Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统 这个是写好的Django程序在本地机运行的情况,一个查询接口. 准备工作 1.首先购买一台阿里云的EC ...

  4. nginx + uwsgi 部署 Django+Vue项目

    nginx + uwsgi 部署 Django+Vue项目 windows 本地 DNS 解析 文件路径 C:\Windows\System32\drivers\etc 单机本地测试运行方式,调用dj ...

  5. nginx + uwsgi 部署django项目

    因项目需求,需要部署django项目,这里是基础的nginx配合uwsgi部署django,后续会采用docker部署的方式 环境: centos7 python3.5.4 django2.1.4 u ...

  6. 生产环境使用Nginx+uwsgi部署Django

    在本地运行django应用相对来说还是挺方便的,使用自带的runserver启动即可.如果在生产环境部署django,就要多考虑一些问题了.比如静态文件处理,安全,效率等等 在网上找到了不错的部署的教 ...

  7. nginx+uwsgi部署django项目

    1.django项目部署前需要生成admin的静态资源文件 (1)生成admin的静态资源文件 # 关闭debug模型 DEBUG = False # 允许所有域名访问 ALLOWED_HOSTS = ...

  8. Nginx + uWSGI 部署Django 项目,并实现负载均衡

    一.uWSGI服务器 uWSGI是一个Web服务器,它实现了WSGI协议.uwsgi.http等协议.Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换. 要注意 WSGI ...

  9. 解决nginx+uWSGI部署Django时遇到的static文件404的问题

    昨天是利用Django自带的runserver部署的服务器,但是由于runserver比较不稳定,因此决定采用uWSGI+nginx进行部署. 昨天已经安装好了uwsgi和nginx,使用该指令打开8 ...

随机推荐

  1. [原创]cocos2d-x研习录-第三阶 多分辨率适配器

    在移动终端(智能手机)平台下开发游戏一般都会涉及到屏幕多分辨率适配问题,原因是手机款式多种多样,不同的款式存在有不同的尺寸,即使尺寸相同又可能存在不同的分辨率. 手机屏幕尺寸:指手机屏幕对角线长度. ...

  2. git代理,windows命令行代理,linux命令行代理

    下载不动设置代理:git config --global http.proxy http://127.0.0.1:1080git config --global https.proxy https:/ ...

  3. jdbc/DAO模式

    DAO设计模式: 1.DAO:      DAO设计模式是属于J2EE数据层的操作,使用DAO设计模式可以简化大量代码,增强程序的可移植性. 2.DAO各部分详解:DAO设计模式包括以下4个主要部分: ...

  4. 0.AutoMapper核心

    AutoMapper是基于约定的对象 - 对象映射器.AutoMapper使用流畅的配置API来定义对象 - 对象映射策略.AutoMapper使用基于约定的匹配算法来匹配源到目标值.AutoMapp ...

  5. Who is using Asio?

    https://think-async.com/Asio/WhoIsUsingAsio

  6. winform中button点击后再点击其他控件致使button失去焦点,此时button出现黑色边线,去掉黑色边线的方法

    winform中button点击后再点击其他控件致使button失去焦点,此时button出现黑色边线,去掉黑色边线的方法 button的FlatAppearence属性下,设置BorderSize= ...

  7. JMeter Http测试计划

    一.新建Http测试计划 二.添加线程组 设定5个线程,循环2次 三.添加Http请求 以百度为例: 四.添加监听:察看结果树 五.执行测试 5个用户,循环2次,共发了10个请求.

  8. Java内存区域

    1.运行时数据区域 java虚拟机在执行java程序的过程中会将它管理的内存区域分为若干个不同的数据区域.这些区域有各自的服务对象,创建以及销毁时间,有的内存区域随着虚拟机的启动和关闭而创建和销毁,有 ...

  9. createjs easal.js制作了一个很简单的链路图

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  10. TCP 常用总结

    SO_RCVBUF SO_SNDBUF TCP socket在内核中都有一个发送缓冲区和一个接收缓冲区,不管进程是否读取socket,对端发来的数据都会经由内核接收并且缓存到socket的内核接收缓冲 ...