vlambda博客
学习文章列表

详解django+Nginx+uwsgi 云服务器项目部署

详解django+Nginx+uwsgi 云服务器项目部署

干货、福利第一时间送达!


目录

安装nginx

项目运行测试

Nginx代理,配置Nginx

安装uwsgi并配置

安装

配置uwsgi

启动项目


详解django+Nginx+uwsgi 云服务器项目部署

安装nginx


详解django+Nginx+uwsgi 云服务器项目部署


sudo  apt-get install nginx


启动nginx

sudo  /etc/inin.d/nginx start


在浏览器访问,云服务器的公网IP

打开浏览器访问 xx.xx.xxx.xxx:80,其中xxxx是你的公网IP,80是Nginx默认监听的端口号

出现

详解django+Nginx+uwsgi 云服务器项目部署

这个表示Nginx已经成功安装并运行起来了


详解django+Nginx+uwsgi 云服务器项目部署

项目运行测试


详解django+Nginx+uwsgi 云服务器项目部署


我们需要保证自己写的项目能够在部署的服务器上能够运行起来


上传项目到服务器

如果不会上传请看

ubuntu 远程链接服务器,上传文件
https://mp.csdn.net/postedit/103743972


上传完成后,我们需要导入数据库的数据,

建议将之前的数据库导出,上传到服务器后再导入


做好数据导入后


安装项目依赖的库


首先导出需要安装的库

在项目依赖的环境下

pip freeze >requirements.txt

这个requirements.txt文件会在你执行这个命令的路径下。将文件上传到服务器

然后在服务器安装


cd 到你存放requirement.txt的目录, 运行(在自己创建的虚拟环境下)

pip install -r requirements.txt


等待依赖安装完成,cd到项目目录下,运行

python manage.py runserver 0.0.0.0:8000


项目正常运行~(如果settings.py文件中的DEBUG设置为False,会观察到静态资源无法加载)


因为DEBUG=True时,django会自动代理静态文件的处理,当改为False时,django认为你在生产环境就不会再帮你代理静态文件了,这里我们可以在url里面配置,让django继续代理,但我们不这么做,我们使用nginx代理静态文件



详解django+Nginx+uwsgi 云服务器项目部署

Nginx代理,配置Nginx


详解django+Nginx+uwsgi 云服务器项目部署



在项目中配置Nginx

在项目目录下添加一个config文件夹(这个你可以随意),后面的配置文件都统一放到该文件夹下

config文件下新建my_nginx.conf文件,内容如下# my_nginx.conf

upstream django {
server 127.0.0.1:8000; # for a web port socket (we'll use this first)}
# configuration of the serverserver { # the port your site will be served on listen 80; # the domain name it will serve for server_name xx.xx.xxx.xxx; # 公网IP或者IP绑定的域名,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 /media; # your Django media }
location /static {
alias /homm/work/Blog/static; # your Django project's static files }
# Finally, send all non-media requests to the Django server. location / { uwsgi_pass django; include uwsgi_params; # the uwsgi_params file you installed }}



建立文件链接

sudo ln -s  my_nginx.conf  /etc/nginx/site-enabled/


部署静态文件

在运行Nginx之前,需要将django项目中的所有静态文件放入static文件夹,


运行下面的代码,django会自动将所有的文件放到static

(前提是你在settin.py 中设置了 STATICFILES_DIR)

python manage.py collectstatic


启动(重启)Nginx

sudo /etc/init.d/nginx start
sudo /etc/init.d/nginx restart


如果启动失败

nginx -t


查看具体的错误


简单测试

往服务器项目的media/image文件夹里放一个图片(这里以login.jpg为例)
访问

xx.xx.xxx.xxx:8000/media/image/login.jpg


详解django+Nginx+uwsgi 云服务器项目部署


正常显示了,就说明配置成功了


详解django+Nginx+uwsgi 云服务器项目部署

安装uwsgi并配置


详解django+Nginx+uwsgi 云服务器项目部署


安装

pip install uwsgi


安装完成后会自动启动

通过下面命令查看是否启动

ps aux|grep uwsgi

详解django+Nginx+uwsgi 云服务器项目部署


已经启动

测试一下uwsgi

在项目根目录下

uwsgi --http :8000 --module myproject.wsgi


myproject替换成自己的项目名称

启动后访问xx.xx.xxx.xxx:8000

如果浏览器出现Internal Server Error

  1. 检查命令提示符是否输入正确,(注意空格)

  2. 检查是否项目根目录下运行

  3. 其他情况,查看命令行输出或者log


配置uwsgi#uwsgi.ini file[uwsgi]
#项目路径chdir = /homm/work/Blog# Django's wsgi 所在位置module = Blog.wsgi#或者#module = Blog.wsgi:application

# process-related settings# mastermaster = true# maximum number of worker processesprocesses = 10# the socket (use the full path to be safesocket = 1270.0.0.1:8000 #这里需要和nginx配置的端口一致# ... with appropriate permissions - may be neededchmod-socket = 666# clear environment on exitvacuum = true
#日志存放目录logto = %(chdir)/config/Blog.logstats = %(chdir)/config/uwsgi.status
pidfile = %(chdir)/config/uwsgi.pid


详解django+Nginx+uwsgi 云服务器项目部署

启动项目


详解django+Nginx+uwsgi 云服务器项目部署


用自己的路径替换其中对应的配置~

保存后,运行(在uwsgi.ini目录下)

uwsgi --ini uwsgi.ini

打开浏览器访问xx.xx.xxx.xxx:80

因为浏览器会默认访问80端口

你也可以

xx.xx.xxx.xxx

如果不出问题,项目就能够运行起来了。


至此,项目部署完成





扫描二维码
关注python学习专栏
掌握更多python知识