Nginx与django+uwsgi成功勾搭的始末(上)

简介:

先说明一下本人的环境:

Uwsgi版本:2.0.14(yum install安装)

django版本:1.10.6(pip install安装)

python版本:2.7.5(阿里云 centos 7自带)

nginx版本:1.10.2(yum install安装)

django目录:/django/logan (project就叫logan,这个目录不是mkdir!而是django-admin生成的)


本文阅读之前,我们已经实现了uwsgi的成功安装和uwsgi可以启动django,有需要看细节的朋友请查看一下:http://chenx1242.blog.51cto.com/10430133/1906056 和 http://chenx1242.blog.51cto.com/10430133/1904804 


现在我们通过yum下载了nginx,然后直接启动nginx,在浏览器输入外网网址就能看到nginx启动成功的界面,如下:

wKiom1jKX6CxvQFHAACo3F-cMp0509.png

然后我们#cp /etc/nginx/uwsgi_params /django/logan,这样目的是把uwsgi_params复制到我们的project文件夹里。然后在project里,我们创建一个nginx的配置文件,起名叫:mysite_nginx.conf,同时给这个conf文件755的权限,整个mysite_nginx.conf的内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
events {
   worker_connections  1024;   ## Default: 1024
}
http{
upstream django {
     server 127.0.0.1:8001;     #用uwsgi启动的django是在8001端口
}
server {
     listen      8000;
     server_name 这里填写你的外网地址或者域名;
     charset     utf-8;
     client_max_body_size 75M;
     location  /media   {
         alias  /django/logan/media ;     #设定mrdia的资源路径
     }
     location  /static  {
         alias  /django/logan/static ;     #设定static的资源路径
     }
     location / {
         uwsgi_pass  django;
         include      /django/logan/uwsgi_params ;     #我们刚写的uwsgi_params的地址
     }
}
}


在/etc/nginx/sites-enabled目录下创建该文件的符号连接,使nginx能够使用它:#ln -s /home/www-data/www/mysite/mysite_nginx.conf /etc/nginx/sites-enabled/


这个时候,我们下载一个图片,我们选择的图片就是金刚狼3的宣传海报,但是我们加上一点自己的记号,于是这个图片就是这样,我们在右上角加上了红色小字(如有侵权,我会删除图片):

wKioL1jLWLSjEPccAAQgUXNy8dY931.jpg-wh_50


然后返回到服务器,在/django/logan下面mkdir 一个文件夹叫media,把这个加工过的电影海报上传到这个media文件夹里,起名叫logan.jpg。


然后我们#vim /django/logan/logan/settings.py,在这个py文件末尾加上这么一句话:

STATIC_ROOT = os.path.join(BASE_DIR, "static/")

然后运行一下#python manage.py collectstatic,就会出现

1
2
3
4
5
6
You have requested to collect static files at the destination
location as specified  in  your settings:
     /home/www-data/www/mysite/static
This will overwrite existing files!
Are you sure you want to  do  this?
Type  'yes'  to  continue , or  'no'  to cancel:

这里我们输入yes,就会出现很多copying,这个过程的意思是:Django框架在创建项目时,默认提供了admin等接口,这会将Django框架中这些接口用到的一些静态文件,js,css等文件,拷贝到项目的static目录下。


然后我们就要测试一下nginx是否与django+uwsgi勾搭成功,首先我们先测试一下我们的mysite_nginx.conf的语法问题,使用命令:#nginx -c -t /etc/nginx/sites-enabled/mysite_nginx.conf,得到效果如下:

wKioL1jLWpeB6p3TAAA_XCIn8LA036.png


那么我们就#nginx -c /etc/nginx/sites-enabled/mysite_nginx.conf,通过ps -ef查看nginx进程已经启动了。然后我们#uwsgi --plugin python --http-socket :8001 --chdir /django/logan/ --wsgi-file /django/logan/logan/wsgi.py 启动django。


确定nginx和django都进程存在了之后,在浏览器的地址栏里,输入“http://外网地址:8000/media/logan.jpg”,看一下效果吧!

wKiom1jLW5aCWqeCABVma0E1FMw120.png-wh_50


OK!!!至此确定media文件已经可以正常访问。




参考资料:http://uwsgi-docs.readthedocs.io/en/latest/tutorials/Django_and_nginx.html




 本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1907430

相关文章
|
7月前
|
负载均衡 应用服务中间件 nginx
Django通过Nginx和uWSGI实现负载均衡
Django通过Nginx和uWSGI实现负载均衡
|
5月前
|
前端开发 应用服务中间件 Shell
django(三)django配置支持nginx访问
我正在参加「掘金·启航计划」 VUE3.0版本发布,按照之前的计划,博客前端的页面打算使用VUE3.0重新编写。目前后端使用的是PHP的web框架thinkphp5.0,新版的博客后端打算使用python的web框架django。 目前我的服务器使用的环境是lnmp(centos+nginx+mariadb+php),因此运行django框架的时候,我选择使用nginx + uwsgi 我的服务器使用的是阿里云的centos7.8 运行原理如下图所示: 一:技术扩展WSGI WSGI 是 Web Server Gateway Interface 的缩写。以层的角度来看,WSGI 所在层的位置低
35 0
|
5月前
|
应用服务中间件 nginx Docker
将 react-typescript + django 部署到 nginx 容器(docker)
将 react-typescript + django 部署到 nginx 容器(docker)
71 0
|
5月前
|
小程序 前端开发 应用服务中间件
nginx,uwsgi get方法请求参数过长怎么办
nginx,uwsgi get方法请求参数过长怎么办
60 0
|
5月前
|
XML 应用服务中间件 nginx
关于nginx部署Django 后台样式丢失
关于nginx部署Django 后台样式丢失
64 0
|
5月前
|
XML 应用服务中间件 数据库
django2.2.4项目 部署 centos7.3 环境, tomcat与nginx相互切换
django2.2.4项目 部署 centos7.3 环境, tomcat与nginx相互切换
49 0
|
9月前
|
负载均衡 应用服务中间件 Linux
CentOS7下python3+Flask+uWSGI+Nginx+Supervisor环境搭建
在生产环境中通常用uwsgi作为Flask的web服务网关,通过nginx反向代理进行负载均衡,通过supervior进行服务进行的管理。这一套搭下来还是有一些坑要踩,本文通过一个简单的Flask web应用记录了CentOS7下python3+Flask+uWSGI+Nginx+Supervisor环境搭建的全过程,以及一些注意事项,以免遗忘。
197 0
|
12月前
|
负载均衡 Unix 应用服务中间件
知其所以然:flask + uwsgi不要nginx,应该怎么写配置文件?
知其所以然:flask + uwsgi不要nginx,应该怎么写配置文件?
143 0
|
应用服务中间件 nginx Python
【Django部署】Nginx+uWsgi部署Django项目
最近需要部署一个Django项目但是不能用宝塔面板!呜呜呜 不能懒人式一键部署了 那就学习一下黑框框部署吧
616 0
【Django部署】Nginx+uWsgi部署Django项目
|
Ubuntu Unix 应用服务中间件
详细拆分如何在ubuntu 上使用 nginx + uwsgi socket方式部署 Django 项目
详细拆分如何在ubuntu 上使用 nginx + uwsgi socket方式部署 Django 项目
179 0