使用uwsgi + nginx 部署Django项目到linux服务器

本文详细介绍了如何使用uWSGI和Nginx部署Django项目到腾讯云服务器的步骤,包括Python库迁移、uwsgi配置、Nginx设置及静态文件处理,旨在提供一个清晰的部署流程。

目录

前言

具体步骤

相关问题

结语

前言

我的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 = TrueDEBUG = 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项目的大致步骤啦,希望能都帮助到大家~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值