阿里云部署Django + Nginx + uWSGI

╄→尐↘猪︶ㄣ 提交于 2020-01-31 00:50:06

实验环境

操作系统:Ubuntu 16.04.6

python: 3.7.6

Django: 2.2

Nginx: 1.10.3

uWSGI: 2.0.18

安装

  这部分一般没什么问题,网上教程也很多,nginx 和 uWSGI 我是用 apt-get installpip3 安装的,虽然安装的版本可能有点旧,但是省了麻烦

配置

  Nginx 的配置确实头疼,每个人的项目、系统、版本都不同,导致每个人配置的结果也是各不相同。直接套用博客基本很难成功

  所以我这里的配置过程也主要是自己记录一下,确保自己下次配置更加顺利

配置Django

  使用Xftp将整个Django项目文件拖到 /home 目录下

修改settings.py

  • DEBUG=False
  • ALLOWED_HOSTS = [’*’,](也可以改的更详细,不过这样省心)

确保有一个静态文件目录和一个媒体文件目录

MEDIA_ROOT = os.path.join(BASE_DIR, 'uploads')
MEDIA_URL = '/media/'

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

将静态文件拷贝到目录下

  按照Django的方式,一般每个应用下都有一个静态文件目录,此时需要将它们全部拷贝到创建好的这个目录下,使用Django自带的命令完成拷贝

python manage.py collectstatic

配置 Nginx

​  首先写配置文件,在项目目录下创建一个 .conf 文件,作为该项目的配置文件

upstream django {
    # 端口号可以改
	server 127.0.0.1:8083;
}

server {
    # 监听端口
	listen		8080;
    # 这里我看博客里说可以写域名,但是还要配置dns,我这里直接写的IP地址
	server_name	***.***.***.***;
	charset		utf-8;
	client_max_body_size 75M;
	
	location /media {
        # 这里写前面创建的资源文件目录地址
		alias /home/MyBlog/uploads;
	}

	location /static {
        # 这里写前面创建的静态文件目录地址
		alias /home/MyBlog/static;
	}

	location / {
		uwsgi_pass django;
        # 从 /etc/nginx/ 目录拷贝来的
		include /home/MyBlog/uwsgi_params;
	}
}

  此时Nginx还不知道使用此文件作为配置文件

​ Nginx 的配置,通过修改 /etc/nginx/nginx.conf 文件实现,在文件中 http 配置部分包含着这么一行

include /etc/nginx/sites-enabled/*;

  所以在该目录下创建一个刚写的配置文件的软链接

ln -s /home/<项目目录名>/***.conf /etc/nginx/sites-enabled/***.conf

  这里一定要用绝对路径,第一次用相对路径,然后查看端口监听情况发现8080端口没有被nginx监听,找了半天问题发现是用了相对路径根本没有链接到

  链接好后,依次使用以下命令应用配置文件(Nginx服务已经开启)

nginx -t
nginx -s reload

​  一切顺利,Nginx已经使用配置文件重启了服务,可以使用 netstat -tnlp 查看端口监听情况

配置uWSGI

  创建 .ini 文件作为uWSGI 启动的参数

[uwsgi]
# 项目目录
chdir=/home/MyBlog
# 导入项目的wsgi模块
module=MyBlog.wsgi:application
wsgi-file=MyBlog/wsgi.py
master=True
pidfile=/tmp/project-master.pid
vacuum=True
max-requests=500
# 刚刚在nginx配置文件中反向代理的端口号
socket=:8083
uid=root
gid=www-data
daemonsize= /var/log/uwsgi/MyBlog.log
log-maxsize=50000000
disable-logging=true

  里面有些参数不是必要的,因为配置的时候也是一知半解,看有的博客里有就写上了

  接下来启动uWSGI

sudo uwsgi --ini <刚写的.ini文件>

运行

  一切顺利后,在pc浏览器中输入IP和端口号,就能看见Django项目了

调试

  Nginx日志文件地址 /var/log/nginx/error.log

  查看监听情况 netstat -tnlp

参考资料

Nginx+uWSGI+Django部署web服务器

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!