详解django+Nginx+uwsgi 云服务器项目部署
Posted python学习专栏
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了详解django+Nginx+uwsgi 云服务器项目部署相关的知识,希望对你有一定的参考价值。
干货、福利第一时间送达!
目录
安装nginx
项目运行测试
Nginx代理,配置Nginx
安装uwsgi并配置
安装
配置uwsgi
启动项目
安装nginx
sudo apt-get install nginx
启动nginx
sudo /etc/inin.d/nginx start
在浏览器访问,云服务器的公网IP
打开浏览器访问 xx.xx.xxx.xxx:80,其中xxxx是你的公网IP,80是Nginx默认监听的端口号
出现
这个表示Nginx已经成功安装并运行起来了
项目运行测试
我们需要保证自己写的项目能够在部署的服务器上能够运行起来
上传项目到服务器
如果不会上传请看
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代理静态文件
Nginx代理,配置Nginx
在项目中配置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 server
server {
# 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
正常显示了,就说明配置成功了
安装uwsgi并配置
安装
pip install uwsgi
安装完成后会自动启动
通过下面命令查看是否启动
ps aux|grep uwsgi
已经启动
测试一下uwsgi
在项目根目录下
uwsgi --http :8000 --module myproject.wsgi
myproject
替换成自己的项目名称
启动后访问xx.xx.xxx.xxx:8000
如果浏览器出现Internal Server Error
检查命令提示符是否输入正确,(注意空格)
检查是否项目根目录下运行
其他情况,查看命令行输出或者log
配置uwsgi#uwsgi.ini file
[uwsgi]
#项目路径
chdir = /homm/work/Blog
# Django's wsgi 所在位置
module = Blog.wsgi
#或者
#module = Blog.wsgi:application
# process-related settings
# master
master = true
# maximum number of worker processes
processes = 10
# the socket (use the full path to be safe
socket = 1270.0.0.1:8000 #这里需要和nginx配置的端口一致
# ... with appropriate permissions - may be needed
chmod-socket = 666
# clear environment on exit
vacuum = true
#日志存放目录
logto = %(chdir)/config/Blog.log
stats = %(chdir)/config/uwsgi.status
pidfile = %(chdir)/config/uwsgi.pid
启动项目
用自己的路径替换其中对应的配置~
保存后,运行(在uwsgi.ini目录下)
uwsgi --ini uwsgi.ini
打开浏览器访问xx.xx.xxx.xxx:80
因为浏览器会默认访问80端口
你也可以
xx.xx.xxx.xxx
如果不出问题,项目就能够运行起来了。
至此,项目部署完成
关注python学习专栏
掌握更多python知识
以上是关于详解django+Nginx+uwsgi 云服务器项目部署的主要内容,如果未能解决你的问题,请参考以下文章
在阿里云服务器使用nginx+uwsgi+venv部署Django项目
ubuntu12上部署Django1.8.4+uwsgi+nginx超级详细流程配置到云服务器
阿里云 centos7 django + uWSGI+Nginx + python3 部署攻略
Django 2021年最新版教程30django项目部署到华为云(nginx uWSGI mysql方式)