目录
前言
我的Django项目大致是使用 SQLite+Django+element UI 进行开发的,当开发完成后需要放到腾讯云的服务器上运行,这时候需要用到 uWSGI 、Nginx 进行部署。此篇文章是讲述本人部署Django服务器时的一些操作,仅供大家参考,如有说错的地方,请见谅~
具体步骤
- 将在本地开发时所用到的Python库安装到服务器上,如Django等。
// 在本地上将Python库的表单导出到 filename.txt
pip freeze > filename.txt
// 此命令是在本地上运行的,后续其余命令都在服务器上运行的
- 将导出Python库表单的文件放到服务器上后,开始安装
// 在服务器上一次性安装 filename.txt pip install -r filename.txt
- 安装 uwsgi,除下面安装方式外,还可以以其他的方式安装,在此就不在赘述啦
pip install uwsgi
- 安装完成后可以试一下输入“uwsgi”,若出现以下界面说明安装成功了
- 将Django项目放到服务器上
- 配置uwsgi.ini文件,文件内容如下:
[uwsgi]
# 套接字方式的IP地址:端口号(使用Nginx时,需改成此方式,而非HTTP的方式)
# socket=127.0.0.1:8000
# HTTP通信方式的IP地址:端口号
http=127.0.0.1:8000
# 项目当前工作目录
chdir=/zhang/graduate/fruit_web
# 项目中wsgi.py文件的目录,相对于当前工作目录
wsgi-file=fruit_web/wsgi.py
# 进程个数(一般为CPU个数)
process=2
# 每个进程的线程个数
threads=2
# 服务的pid记录文件
pidfile=uwsgi.pid
# 服务的日志文件位置
daemonize=uwsgi.log
注意:配置chdir、wsgi-file 时要注意不用打引号,否则在启动uwsgi.ini时会报下面的错误:
chdir(): '/zhang/graduate/fruit_web'
chdir(): No such file or directory [core/uwsgi.c line 2625]
- 修改Django项目中的settings.py
修改前 修改后 DEBUG = True DEBUG = False(非调试模式) ALLOWED_HOSTS = [] ALLOWED_HOSTS = ['*'] - 启动uwsgi
// 启动uwsgi.ini sudo uwsgi --ini 文件目录/uwsgi.ini
- 安装 Nginx
apt install nginx
- 修改 nginx 配置
修改/etc/nginx/sites-available下的default文件中的信息:
将:
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
注释掉,改成:
location /{
#重定向到127.0.0.1的8000端口(重定向到uwsgi)
uwsgi_pass 127.0.0.1:8000;
include /etc/nginx/uwsgi_params;
}
- 修改uwsgi.ini中的访问方式
[uwsgi] # 套接字方式的IP地址:端口号(使用Nginx时,需改成此方式,而非HTTP的方式) socket=127.0.0.1:8000 # HTTP通信方式的IP地址:端口号 # http=127.0.0.1:8000 # 项目当前工作目录 chdir=/zhang/graduate/fruit_web # 项目中wsgi.py文件的目录,相对于当前工作目录 wsgi-file=fruit_web/wsgi.py # 进程个数(一般为CPU个数) process=2 # 每个进程的线程个数 threads=2 # 服务的pid记录文件 pidfile=uwsgi.pid # 服务的日志文件位置 daemonize=uwsgi.log
- 重启uwsgi
// 先通过pid将uwsgi.ini开启的服务停掉
sudo uwsgi --stop 文件目录/uwsgi.pid
// 启动uwsgi.ini
sudo uwsgi --ini 文件目录/uwsgi.ini
- 重启nginx服务
// (start:启动|stop:停止|restart:重启|status:查看状态)
/etc/init.d/nginx start|stop|restart|status
- 浏览器访问网址:输入 服务器IP 即可
相关问题
当Django使用的是放在项目中static路径下的静态文件时,是访问不到的,故需要继续修改 nginx 配置,添加static的路径即可,如下:
在/etc/nginx/sites-available下的default文件中添加以下信息:
location /static{
# Django中static的存放路径
root /zhang/graduate/fruit_web;
}
当我们在此访问时就不会出现静态文件没有访问到的问题了
结语
以上就是我在使用 uWSGI+Nginx 部署Django项目的大致步骤啦,希望能都帮助到大家~