ubuntu下配置nginx+uwsgi+django
服务器配置是Ubuntu14.04 64位OS
ubuntu14.04默认是安装好了python2.7版本不用自己安装了。
先更新下源
sudo apt-get update
第一步先安装pip
sudo apt-get install -y python-pip
有些时候安装pip前需要安装几个相关包
sudo apt-get install -y python-dev
sudo apt-get install -y libevent-dev
安装完pip后我们开始安装django
sudo pip install Django==1.7.1
安装后输入Python进入交互环境输入django.VERSION查看版本
开始装uwsgi
下面这几个可能是相关包
sudo apt-get install -y build-essential
sudo apt-get install -y zliblg-dev
sudo apt-get install -y libsqlite3-dev
sudo apt-get install -y libreadline6-dev
sudo apt-get install -y libgdbm-dev
sudo apt-get install -y libbz2-dev
sudo apt-get install -y tk-dev
sudo apt-get install -y uwsgi-plugin-python
安装uwsgi
sudo pip install uwsgi
可以写个test.py
# test.py
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"] # python3
#return ["Hello World"] # python2
输入uwsgi --http :8000 --wsgi-file test.py
浏览器输入http://example.com:8000看是否显示helloworld
再安装git
sudo apt-get install -y git
克隆项目
用uwsgi启动项目
uwsgi --ini ${current_path}${sep}/$uwsgi_name
安装nginx
sudo apt-get install -y nginx
修改nginx配置文件,删掉原先包里的东西,加上软链接
ln -s ${current_path}${sep}${p_name}${sep}${conf_name} /etc/nginx/sites-enabled/
(
sudo ln -s /data/www/ts/conf/ts_nginx.conf /etc/nginx/sites-enabled/
sudo ln -s /data/www/ts/conf/ts_nginx.conf /etc/nginx/sites-available/
)
service nginx restart
输入网址就可以了。
另外你需要
python manage.py collectstatic
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
STATIC_ROOT = os.path.join(BASE_DIR, 'static2', ).replace('\\', '/')
STATIC_URL = '/static/'
然后将静态文件从static2移动到static目录下
输入网址就可以了。
几个配置文件:
nginx.conf:
# the upstream component nginx needs to connect to
upstream django {
server unix:/etc/nginx/django/daowang/Wangdao.sock; # for a file socket
} # configuration of the server
server {
# the port your site will be served on
listen 80;
# the domain name it will serve for
server_name http://114.215.157.15/; # substitute your machine's IP address or FQDN
charset utf-8; # max upload size
client_max_body_size 75M; # adjust to taste # Django media
location /media {
alias /etc/nginx/django/daowang/static/media; # your Django project's media files - amend as required
} location /static {
alias /etc/nginx/django/daowang/static; # your Django project's static files - amend as required
} location /FingerHire{
proxy_pass http://127.0.0.1:8080;
} # Finally, send all non-media requests to the Django server.
location / {
uwsgi_pass django;
include /etc/nginx/django/daowang/uwsgi_params; # the uwsgi_params file you installed
}
}
uwsgi.ini
[uwsgi] # Django-related settings
# the base directory (full path)
chdir = /etc/nginx/django/daowang
# Django's wsgi file
module = Wangdao.wsgi
# master
master = true
# maximum number of worker processes
processes = 32
max-requests = 1000
# the socket (use the full path to be safe
socket = /etc/nginx/django/daowang/Wangdao.sock
# ... with appropriate permissions - may be needed
chmod-socket = 666
#chown-socket = www-data:www-data
# clear environment on exit
vacuum = true
daemonize = /var/log/uwsgi/Wangdao.log
pidfile = /tmp/project-master.pid
# added 2014-09-17
reload-on-as = 126
reload-on-rss = 126
enable-threads = true
pythonpath = /etc/nginx/django/daowang
uwsgi_params
uwsgi_param QUERY_STRING $query_string;
uwsgi_param REQUEST_METHOD $request_method;
uwsgi_param CONTENT_TYPE $content_type;
uwsgi_param CONTENT_LENGTH $content_length; uwsgi_param REQUEST_URI $request_uri;
uwsgi_param PATH_INFO $document_uri;
uwsgi_param DOCUMENT_ROOT $document_root;
uwsgi_param SERVER_PROTOCOL $server_protocol;
uwsgi_param HTTPS $https if_not_empty; uwsgi_param REMOTE_ADDR $remote_addr;
uwsgi_param REMOTE_PORT $remote_port;
uwsgi_param SERVER_PORT $server_port;
uwsgi_param SERVER_NAME $server_name;
配置下根目录下的wsgi.py
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Wangdao.settings") from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
常用命令:
1.查看端口占用情况:
netstat -lpnt
2.杀死所有uwsgi进程
killall -9 uwsgi
3.uwsgi启动命令
uwsgi --ini /etc/nginx/django/lovep2c/lovep2c_uwsgi.ini
4.关闭uwsgi命令
uwsgi --stop /tmp/project-master.pid
5.重启uwsgi命令
uwsgi --reload /tmp/project-master.pid
nginx错误日志:
tail /var/log/nginx/error.log
uwsgi日志:
tail /var/log/uwsgi/lovep2c.log
项目错误日志:
tail /etc/nginx/django/debug.log
tail /etc/nginx/django/error.log
参考网址:https://uwsgi.readthedocs.org/en/latest/tutorials/Django_and_nginx.html
ubuntu下配置nginx+uwsgi+django的更多相关文章
- virtualenv下配置nginx uwsgi Django
1.安装virtualenv,创建虚拟环境django15 sudo apt-get install virtualenv virtualenv env source bin/active pip i ...
- Ubuntu下配置Nginx HTTPS
HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即HTTP下加入S ...
- Ubuntu下使用Nginx+uWSGI+Flask(初体验)
Ubuntu 18.04,Nginx 1.14.0, uWSGI 2.0.17.1,Flask, 前言 Windows不支持uWSGI!为了上线自己的项目,只能选择Linux. 自己前面开发了一个Fl ...
- flask部署:Ubuntu下使用nginx+uwsgi+supervisor部署flask应用
之前一直用的Centos或者Red hat,自从使用Ubuntu后,发现Ubuntu使用起来更方便,自此爱上Ubuntu. 一.从github上下载flask应用 1.我已经成功将自己编写好的应用上传 ...
- Ubuntu下配置Nginx+PHP
1.安装Nginxapt-get install nginx 2.启动Nginxservice nginx start 3.访问服务器IP 如果看到“Welcome to nginx!”说明安装好了. ...
- 阿里云云服务器ubuntu配置nginx+uwsgi+django记录文档
1 安装ssh 1 sudo apt-get update 2 sudo apt-get install openssh-server 3 sudo ps -e |grep ssh 有sshd ...
- ubuntu下配置Apache+mod_wsgi+Django项目(个人测试)
经过了一个星期的摸索,查找资料以及实验,我搭建的环境基本能用(还有就是Django后台的静态文件加载的问题) 这里面只是介绍一下我的过程,因为对应Apache还不是很熟练,特别是配置文件.只能供大家参 ...
- 阿里云上,Ubuntu下配置Nginx,在tomcat中加了https协议就不可以了
问题 阿里云上,Ubuntu服务器,本来部署的是tomcat,并且使用了https 协议.后来为了静态资源分离集成了 nginx,nginx代理跳转到 tomcat.刚开始直接访问http 网址发现, ...
- Ubuntu Nginx uwsgi django 初试
/************************************************************************************** * Ubuntu Ngi ...
随机推荐
- JavaFx初探
由于项目的须要,实在是没有办法了,试了非常多种方案(RCP,SWT,Flex,Smartinvoke...),终于还是决定開始研究JavaFx...为了给用户更好地体验我们的"智能家居&qu ...
- 【c语言】推断一个数是不是2的n次方
// 推断一个数是不是2的n次方 #include <stdio.h> void judge_n(int a) { int b = a - 1; if ((a & b) == 0) ...
- Android应用开发基础篇(14)-----自定义标题栏
一.概述 每一个应用程序默认的标题栏(注意与状态栏的区别)只有一行文字(新建工程时的名字),而且颜色.大小等都是固定的,给人的感觉比较单调.但当程序需要美化的时候,那么修改标题栏是就是其中一项内容,虽 ...
- 在unity 脚本中获取客户端的IP地址
需要using System.Net.NetworkInformation;原理就是获取网卡的信息. //下面这段代码是我在百度贴吧找来的,经检验是正确的 string userIp = " ...
- 未能加载文件或程序集“**, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。试图加载格式不正确的程序。
未能加载文件或程序集“Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项.试图加载格式不正确的程序. 原来, ...
- ELK(ElasticSearch, Logstash, Log4j)系统日志搭建
1.elk平台介绍 Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等. Logsta ...
- jsp中的两种跳转方式分别是?有什么区别?
在JSP中跳转有两种方式 forward跳转:<jsp:forward page ="跳转页面地址"> response跳转:response.sendRedirect ...
- [Jobdu] 题目1520:树的子结构
题目描述: 输入两颗二叉树A,B,判断B是不是A的子结构.注:B为空树时不为任何树的子树 typedef struct BTNode{ int key; struct BTNode *rchild; ...
- PHP中类的继承关系
在PHP中,我时常会写一个类,类写了一个共用方法,然后让子类去继承就能得到相应的功能.假设大致有这么一个父类: 1 <?php 2 class Father{ 3 4 public functi ...
- Linux串口编程详解(转)
串口本身,标准和硬件 † 串口是计算机上的串行通讯的物理接口.计算机历史上,串口曾经被广泛用于连接计算机和终端设备和各种外部设备.虽然以太网接口和USB接口也是以一个串行流进行数据传送的,但是串口连接 ...