Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
具体环境:
ubuntu 14.04 python 2.7.6 django 1.7.1 virtualenv name:test nginx uwsgi
假设 项目文件夹位于 /data/www/ts 设置保存在 ./conf
virtualenv name = test
domain name = example.com
django+uwsgi的部署实在是太蛋疼了..网上已有的教程似乎有新版本的兼容问题。最后跑到uwsgi官网上找的教程终于跑通了..
不过官网的教程似乎有引导教学性质,部署的时候就显得很绕弯路,在这里记录下来精简内容
http://uwsgi-docs.readthedocs.org/en/latest/tutorials/django_and_nginx.html
首先,需要一个uwsgi_params文件,放在项目的conf文件夹里面。之后需要指向它。文件内容如下:
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;
创建一个叫做ts_nginx.conf 的文件,内容如下
# ts_nginx.conf
# the upstream component nginx needs to connect to
upstream django {
# server unix:///path/to/your/mysite/mysite.sock; # for a file socket
server 127.0.0.1:8001; # for a web port socket (we'll use this first)
}
# configuration of the server
server {
# the port your site will be served on
listen 80;
# the domain name it will serve for
server_name .example.com; # 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 /data/www/ts/media; # your django project's media files - amend as required
}
location /static {
alias /data/www/ts/static; # your django project's static files - amend as required
}
# finally, send all non-media requests to the django server.
location / {
uwsgi_pass django;
include /data/www/ts/conf/uwsgi_params; # the uwsgi_params file you installed
}
}
把这个conf文件连接到nginx的搜索目录里面。
sudo ln -s /data/www/ts/conf/ts_nginx.conf /etc/nginx/sites-enabled/
先决条件:这里要设置好django项目的settings里面static files
static_root = os.path.join(base_dir, "static/")
and then run
python manage.py collectstatic
之后:
service nginx restart
应该就可以看到
了(事先放进去一个静态文件)
之后的blabla步骤都是废话,跳到这里:
configuring uwsgi to run with a .ini file
ts_uwsgi.ini 在项目根目录
[uwsgi]
# django-related settings
# the base directory (full path)
chdir = /data/www/ts
# django's wsgi file
module = ts.wsgi
# the virtualenv (full path)
home = /root/.envs/test
# process-related settings
# master
master = true
# maximum number of worker processes
processes = 10
# the socket (use the full path to be safe
socket = 127.0.0.1:8001
# ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
vacuum = true
# set an environment variable
env = django_settings_module=conf.settings
uwsgi --ini mysite_uwsgi.ini # the --ini option is used to specify a file
这里环境变量设置env需要conf文件夹有init.py,否则conf不会被认为是module
(目前除了80端口,其他端口都可以通过地址:端口访问。已经测试8000,81.80测试不知道为什么不成。明天待续)
推荐阅读
-
Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
-
ubuntu系统下部署zabbix服务器监控的方法教程
-
Spire.Cloud 私有化部署教程(二)- Ubuntu 18.04 系统
-
Ubuntu Server 上使用Docker Compose 部署Nexus(图文教程)
-
在ubuntu机器上部署php测试环境,ubuntu机器部署php_PHP教程
-
Flask学习11:阿里云新手Flask + nginx + uwsgi + ubuntu的完整项目部署教程
-
阿里云Ubuntu服务器部署Django项目部分教程
-
在ubuntu机器上部署php测试环境,ubuntu机器部署php_PHP教程
-
Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
-
Spire.Cloud 私有化部署教程(二)- Ubuntu 18.04 系统