Django+Nginx+Uwsgi 在云服务器上的布署

Django + nginx + uwsgi 在云服务器上的布署


1.安装django

pip3 install django

创建app请参考文档

https://docs.djangoproject.com/zh-hans/3.1/intro/tutorial01/


2.安装uwsgi

pip3 install uwsgi

  • 测试uwsgi
  • 创建文件test.py(vim test.py) 在项目同目录下创建
#test.py
def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"Hello World"]
  • 执行命令 uwsgi --http :8000 --wsgi-file test.py
  • 访问网页 http://x.x.x.x:8000 (填入云服务器的ip地址)
  • 若出现Hello World则uwsgi安装成功
  • 配置uwsgi.ini来启动uwsgi,与manage.py同一目录即可
[uwsgi]
#服务端口
http = :8000

#指定与Nginx通信的方式,不影响uwsgi本身运行。如果配置了需要到nginx中进行相关配置-才能通过nginx访问Django
socket = 127.0.0.1:8077

# 启动一个master进程,来管理其余的子进程
master = True
processes = 4
threads = 2

#python虚拟环境目录绝对路径。如果有的话,home是虚拟环境根目录,PYTHNONHOME是虚拟环境下的bin目录(放置了Python执行文件)
#home = /env
#PYTHONHOME = /env/bin

#django项目目录,与manager.py同级
chdir = /root/app/

#主应用中的wsgi,下面这种配法是在Django根目录下运行uwsgi有效,主APP名为有settings.py的那个目录名。如果是其他目录运行,下面建议写成绝对路径。
wsgi-file = /root/app/app/wsgi.py

#服务停止时自动移除unix Socket和pid文件
vacuum = true

#设置每个工作进程处理请求的上限,达到上限时,将回收(重启)进程,可以预防内存泄漏
max-requests=5000

#设置后台运行保存日志。只要配置了daemonize就会让uwsgi后台运行,同时将日志输出到指定目录
daemonize= /root/app/uwsgierror.log

#保存主进程的pid,用来控制uwsgi服务
pidfile= uwsgi.pid
#uwsgi --stop/reload xxx.pid 停止/重启uwsgi命令

#静态文件映射
#static-map = /static=Django下static目录的绝对路径
~
~

3.安装nginx
  • sudo apt-get install nginx
  • 查看nginx版本
    -v 显示 nginx 的版本:nginx -v
    -V 显示 nginx 的版本,编译器版本和配置参数:nginx -V
  • 启动Nginx
    /etc/init.d/nginx start #启动
    /etc/init.d/nginx stop #关闭
    /etc/init.d/nginx restart #重启
    启动nginx后,在浏览器中访问自己的主机IP:http://x.x.x.x 或 http://x.x.x.x:80 即可看到安装成功界面
  • 配置nginx
    我们假设你将会把Nginx程序日志放到你的目录 /var/log/nginx 下,请确保该目录存在。
    我们假设你的Django的static目录是 /home/ubuntu/mysite/static
    media目录是 /home/ubuntu/mysite/media
    请确保这些目录存在。
    我们假设你的IP是 x.x.x.x (在调试时你可以设置成你的机器IP)
    我们假设你的域名端口是 80(在调试时你可以设置一些特殊端口如 8070)
    基于上面的假设,我们为 /etc/nginx/nginx.conf 添加以下配置:
    vim /etc/nginx/nginx.conf
    在http{…}中的最后一行添加:
server {

        listen   8000;
        server_name x.x.x.x;
        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
         include             /etc/nginx/uwsgi_params;
         uwsgi_pass     127.0.0.1:8077;  #需要与uwsgi.ini socket一致
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        location /static/ {
            alias  /home/ubuntu/mysite/static/;
            index  index.html index.htm;
        }

        location /media/ {
            alias  /home/ubuntu/mysite/media/;
        }

    location /templates/ {
            alias  /home/ubuntu/mysite/templates/;
        }

    }

4.测试
  • 重启Nginx服务器,以使Nginx的配置生效。
    nginx -s reload (root权限执行)
    重启后检查Nginx日志是否有异常。
    vim /var/log/nginx/error.log
    查看 error.log 文件内容是否有异常信息
  • 注意,若nginx -reload 命令启动失败,则可能误删除了pid文件(进程),则运行 nginx -c /etc/nginx/nginx.conf,然后运行 nginx -reload即可
  • 启动uWSGI服务器
    cd /home/ubuntu/mysite
    uwsgi uwsgi.ini 启动uwsgi
    (启动后会生成uwsgi.pid,可以通过pid启动uwsgi)
    检查日志 uwsgi.log 是否有异常发现。
    uwsgierror.log 日志文件生成在项目目录下,所以进入项目目录执行 vim uwsgierror.log 查看
  • 访问服务
    访问 http://x.x.x.x:8000
  • 关闭服务
    sudo killall -9 uwsgi
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在Linux系统上部署Django + nginx + uWSGI的步骤如下: 1. 安装必要的软件 在Linux系统上安装必要的软件包,包括Python、pip、nginxuWSGI等。 2. 创建Django项目 使用Django创建一个新项目或使用现有的Django项目。 3. 配置uWSGIDjango项目的根目录下创建一个uwsgi.ini文件,用于配置uWSGI。示例配置如下: ``` [uwsgi] # 指定运行模式为WSGI http = :8000 # 指定Django应用的wsgi模块 wsgi-file = myproject.wsgi # 指定进程数 processes = 4 # 指定线程数 threads = 2 # 指定静态文件路径 static-map = /static=/path/to/static # 指定日志路径 logto = /path/to/logfile ``` 其中,http参数指定了监听的端口号,wsgi-file参数指定了Django应用的wsgi模块,processes参数指定了进程数,threads参数指定了线程数,static-map参数指定了静态文件的路径,logto参数指定了日志文件的路径。 4. 配置nginxnginx的配置文件中添加以下内容: ``` server { listen 80; server_name example.com; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location / { uwsgi_pass 127.0.0.1:8000; include uwsgi_params; } location /static { alias /path/to/static; } } ``` 其中,server_name指定了域名,access_log和error_log指定了日志文件的路径,uwsgi_pass指定了uWSGI的地址和端口号,include指定了uWSGI的参数。 5. 启动uWSGI服务 使用以下命令启动uWSGI服务: ``` uwsgi --ini uwsgi.ini ``` 6. 启动nginx服务 使用以下命令启动nginx服务: ``` sudo service nginx start ``` 这样就完成了Django + nginx + uWSGI的部署。可以通过访问该网站的域名来验证是否部署成功。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值