Linux 下 将使用Python-Django开发的web应用布置到服务器上(亲测有效)
写在前面:
Django是一个卓越的新一代Web框架,相信使用Python的人对此并不陌生,但将我们完成的web应用布置到到服务器上并不是一件容易的事情。
Django详细的教程可以参考http://python.usyiyi.cn/django/index.html。
Django有自己的一个调试服务器,通过在项目文件夹下执行:
python manage.py runserver 8080(参数8080是设置的端口号,指明该服务器使用端口号为8080)
但是此语句也仅限在自己的机器上进行调试自己的项目,并不能将其布置在服务器上,供其他用户使用。
所以此处,我将介绍一种详细的布置过程(亲测有效),有问题欢迎大家评论探讨。
使用Nginx和uWSGI部署Python Web站点的方法。OS:Ubuntu Server 14.04 LTS
基础环境配置
sudo apt-get install python-setuptools
安装Nginx
什么是Nginx?
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.
首先需要添加Nginx库到apt-get source中:
sudo add-apt-repository ppa:nginx/stable
# 如果报错 sudo: add-apt-repository: command not found,请先安装software-properties-common包
# 安装software-properties-common包
sudo apt-get install software-properties-common
升级已有的包,并确保系统上有uWSGI所需的编译器和工具:
sudo apt-get update && sudo apt-get upgrade
sudo apt-get install build-essential python-dev
安装:
sudo apt-get install nginx
sudo /etc/init.d/nginx start
以上步骤完毕,就可以在浏览器访问127.0.0.1并见到页面:welcome nginx
安装uWSGI
Nginx是一个提供静态文件访问的web服务,然而,它不能直接执行托管Python应用程序,而uWSGI解决了这个问题。
WSGI是一种Web服务器网关接口。它是一个Web服务器(如nginx)与应用服务器(如uWSGI服务器)通信的一种规范。
sudo pip install uwsgi
配置Nginx
我们不需要对Nginx默认配置文件(/etc/nginx/sites-enabled/default)做任何改变,只需要在相应的Web应用里单独配置即可。这样做的好处就是:各项目配置隔离,不干扰其他项目。
以下为例子,首先我们编辑配置文件,找到include项的位置,增加需要部署项目的nginx配置文件。
sudo vim /etc/nginx/nginx.conf
# 增加以下行 (所有Web应用都放在一个文件夹,方便以后reload Nginx)
include /data/www/*/conf/nginx.conf;×(放在http第一行即可)
# reload (如果使用了restart,配置文件错误导致所有全挂)
sudo /etc/init.d/nginx reload
# 也可以先检查配置文件是否正确
sudo nginx -t
出现以下代表检查全部通过
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# 更多帮助
sudo nginx -h
Demo for nginx.conf
(只包括以下代码即可,记得修改路径)
server {
listen 8080;
server_name home;
index index.html index.htm;
access_log /home/tom/www/mysite/logs/access.log;
error_log /home/tom/www/mysite/logs/error.log;
location /favicon.ico {
alias /home/tom/www/favicon.ico;
}
location / {
include uwsgi_params;
uwsgi_pass unix:/tmp/mysite.sock;
}
location /static {
alias /home/tom/www/static;
}
location /media {
alias /home/tom/www/media;
}
}
此时,访问8010端口不再是404而应该是502页面。如下图所示:

这是正常的,Nginx和uWSGI是通过socket文件连接的。由于我们并没有配置uWSGI,这个文件并不存在。
配置uWSGI
首先确定uwsgi是可以正常启动并服务的,由于我们使用的是虚拟环境,所以使用以下命令:
uwsgi --http :8000 --chdir path/conf --home path/env/ --wsgi-file path/conf/wsgi.py
如果在浏览器可以通过ip:8000访问,表示OK。
检查通过后,开始使用文件配置:(以下面为例子)
[uwsgi]
#permissions for the socket file
chmod-socket = 666
# variables
projectname = mysite
projectdomain = /home/tom/www
base = /home/tom/www/mysite
LC_ALL = zh_CN.UTF-8
# plugins
protocol = uwsgi
plugins = python
# the base directory(full path)
chdir = %(base)/mysite
# django wsgi.py
module = wsgi
socket = /tmp/mysite.sock
buffer-size = 32768
threads = 10
master = true
----------------------------------
修改:
wsgi.py中的“setting”
setting 中的 “urls”
(有待详细说明)
--------------------------------
执行uWSGI,用新创建的配置文件作为参数:
uwsgi --ini path/conf/uwsgi.ini
可能发生的错误: !!! UNABLE to load uWSGI plugin: ./python_plugin.so: cannot open shared object file: No such file or directory !!!
首先安装:
sudo apt-get install uwsgi-plugin-python
以上不能解决,请先检查uwsgi版本和配置。使用:
/usr/bin/uwsgi --ini path/conf/uwsgi.ini
可能发生权限问题执行以下语句:
sudo chmod -R 777 ./调节权限
------------------------------------------------------
一次安装成功后,若修改文件内容只需重复执行以下语句
sudo /etc/init.d/nginx reload
uwsgi --ini conf/uwsgi.ini
-----------欢迎评论讨论---------------------
申明:此文章由The_Third_Wave发表于:http://www.ttwshell.com/ ,转载需带上此声明和本文链接。
Linux 下 将使用Python-Django开发的web应用布置到服务器上(亲测有效)的更多相关文章
- [原创]win7环境下搭建eclipse+python+django开发环境
一)工具下载 a)eclipse(最新版4.3.1)官网下载地址 http://www.eclipse.org/downloads/ b)python (2.X版本)官网下载地址 http://pyt ...
- linux下连接到远程主机,用图像界面(想在远程服务器上用cmake)
1. 需要通过SSH -X username@ip登陆服务器后,再用图形界面,比如用cmake 2.直接用 SSH username@ip命令登陆服务器后,不能用cmake
- windows/Linux下设置ASP.Net Core开发环境并部署应用
10分钟学会在windows/Linux下设置ASP.Net Core开发环境并部署应用 创建和开发ASP.NET Core应用可以有二种方式:最简单的方式是通过Visual Studio 2017 ...
- [转]linux下编译boost.python
转自:http://blog.csdn.net/gong_xucheng/article/details/25045407 linux下编译boost.python 最近项目使用c++操作python ...
- 10分钟学会在windows/Linux下设置ASP.Net Core开发环境并部署应用
创建和开发ASP.NET Core应用可以有二种方式:最简单的方式是通过Visual Studio 2017 来创建,其优点是简单方便,但需要安装最新版本Visual Studio 2017 prev ...
- 使用 Visual Studio Code(VSCode)搭建简单的 Python + Django 开发环境
写在前面的话 作为有个 Python 菜逼,之前一直用的 Pycharm,但是在主题这一块怎么调整都感觉要么太骚,看起来不舒服,要么就是简直不能看.似乎用大 JB 公司 IDE 的人似乎都不怎么重视主 ...
- Linux下安装OpenCV+Python支持
以下说明在Linux下Python和OpenCV结合安装的过程,Python要使用OpenCV模块,则必须导入OpenCV提供的包,所以要提供Python支持,首先在安装OpenCV前安装必要的组件, ...
- Linux编程环境介绍(3) -- linux下的c/c++程序开发
目录: 1. 编辑器( Vi ) [vi 与 vim] vi(visual interface)是linux系统最重要的文本编辑器, 所有的 Unix-Like 系统都会内置vi文本编辑器. vim ...
- 中标麒麟(linux)下Qt调用python
转自:https://blog.csdn.net/lwlgzy/article/details/83857297 http://www.cnblogs.com/jiaping/p/6321859.ht ...
随机推荐
- 《University Calculus》-chaper13-向量场中的积分-线积分
线积分: 基于二重积分和三重积分的引入,我们对于线积分的引入过程将会轻车熟路. 对于一根不均匀密度的铜丝,我们如何求其总质量?如下图. 类似二重积分和三重积分的引入,我们首先基于实际问题给出黎曼和的形 ...
- 怎么调试EXC_BAD_ACCESS错误
当你遇到了一个EXC_BAD_ACCESS错误,我通常会给开发者几个建议: 1.在可执行选项中设置NSZombieEnabled参数,这有时会帮缩小问题的范围: 2.运行apple的内存检测工具,如 ...
- php微信支付接口开发程序(一)
阅读对象 本文阅读对象:商户系统(在线购物平台.人工收银系统.自动化智能收银系统或其他)集成微信支付涉及的技术架构师,研发工程师,测试工程师,系统运维工程师. 支付模式 1. 刷卡支付 刷卡支付是用户 ...
- uva12118
一开始以为直接算联通块个数就行了 后来发现还得分联通块里的奇点... 还要注意m = 0的情况... #include<iostream> #include<algorithm> ...
- 谈"http get和post的区别"
--以下内容如有各种问题,烦请指出,谢谢各位^_^-- 最基本的Java程序员面试题都有这个题 --http get和post的区别? 不少人大学还没毕业就知道,就算不知道也会去搜,我记得我快毕业那会 ...
- C primer plus 读书笔记第十章
这一章的标题是数组和指针.指针是C语言的精髓所在,而数组的概念和指针又息息相关,所以放在一起讲. 1.数组 主要内容有:1.1.数组初始化.1.2.指定初始化.1.3.数组赋值.1.4.数组边界.1. ...
- 诡异的TNS-12541:TNS:nolistener
诡异的TNS-12541:TNS:nolistener OS:Microsoft Windows 2003 Ent ...
- Linux磁盘管理:LVM逻辑卷的拉伸及缩减
①查看当前VG的信息,保证VG中有足够的空闲空间 通过 vgdisplay 或者 vgs 命令 [root@rusky ~]# vgs rusky-vg VG #PV #LV #SN Attr VSi ...
- 【转】Java 读写Properties配置文件
[转]Java 读写Properties配置文件 1.Properties类与Properties配置文件 Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形 ...
- 关于开发C#中的asp.net中gridview控件的使用
原文网址:http://blog.sina.com.cn/s/blog_67f1b4b201017663.html 1.GridView无代码分页排序: 效果图: 1.AllowSorting设为Tr ...