美文网首页
django 部署 感觉一步步配置安装就好了

django 部署 感觉一步步配置安装就好了

作者: 天空蓝雨 | 来源:发表于2020-01-20 20:53 被阅读0次

    先列出推荐的教程:
    Django学习(一)网站部署流程
    Django快速部署简约版 v3.0 阿里云
    要想了解详细的 uwsgi 和nginx 的配置项,需要看下面的文档,很全面的
    使用uWSGI和nginx来设置Django和你的web服务器 uwsgi文档

    上传文件到服务器使用 winscp 工具比较方便:
    winscp 下载

    自己花了几个晚上部署好了,感觉也就是安装东西 有点费劲,配置文件多,其他的都还好

    • 首先用 winscp 把自己项目文件复制到服务器里面,然后解压(必须复制压缩文件,否则会很慢)

    这里以 .7z 为例
    解压
    先安装 7z 解压软件

    apt-get install p7zip
    

    参考链接
    https://blog.shiyunhong.com/3001.html
    (这里只是举个例子,其他格式,直接bd即可)

    • 安装 python 版本

    直接 apt-get python3 就好了

    • 然后安装依赖的 python 库

    在开发环境, pip freeze > req.txt 得到 req.txt 模块目录(包括版本号等)。
    1、Python3安装
    2、setuptools安装
    3、Pip3安装
    这三个都要安装,然后再 pip3 install -r req.txt

    • 安装mysql

    直接按照mysql 的官方文档,根据自己的版本一步步来,就好了
    (最后记得配置一下,mysql的登陆密码,和创建自己的数据库以后面备用)

    • 安装mongodb (不需要的可以略过)

    参考地址;
    https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/#install-mongodb-community-edition-on-ubuntu
    还是mongodb 的文档做的比较好。一步步来,都没出错
    (最后别忘了配置用户名,密码)

    • 安装redis

    参考地址
    https://redis.io/download#installation
    (同样提示最后别忘记配置用户名,密码)

    • 运行manage.py 测试
    进入项目根文件夹,运行
    python3 mange.py makemigrations  # 生成 迁移文件
    python3 mange.py migrate # 执行迁移文件
    ... 根据自己的需要执行其他命令 比如 collectstatic
    python3 manage.py runserver 0.0.0.0:80
    

    但是一旦我门退出 shell ,这个进程就挂了,一般我们会以后台进程方式运行这个命令:

    nohup python3 manage.py runserver 0.0.0.0:80 &
    

    通过 nohup 和 & 就可以后台进程运行了。关掉shell 网站依然 可以大开
    最后效果是这样的:


    image.png
    • 配置 nginx 服务器
    • 安装uWSGI:
    pip3 install uwsgi
    

    uwsgi 出错:

    image.png
    参考解决:
    https://blog.csdn.net/ShyLoneGirl/article/details/83030024
    安装 python-devel 即可
    apt-get install  python3-dev 
    
    

    安装uwsgi后,运行测试 第一个 my_django 是你项目所在文件夹的名字(django startproject xx 会创建一个叫 xx 的应用。,并且会在最外面生成 xx 的大目录(这个目录名,你可以改成你喜欢的,和项目无关
    参考creating-a-project 做了什么
    )第二个 my_django 是你项目的名字(就是有settings.py 的那个应用的名字)

    uwsgi --http :80 --chdir /home/my_django/ -w my_django.wsgi
    后台运行 用 nohup  .... & 哦
    
    可以看到 后台80 进程

    如果端口占用,kill 80 端口的 manage.py
    然后现在运行 uwsgi 后,就不需要 python manage.py runserver 了 网站也是可以访问的;

    image.png
    image.png
    • 安装 nginx
    apt-get install nginx
    vi /etc/nginx/sites-available/my_django
    输入
    server {
        
        listen 80;
        server_name *.sunrain.xyz;
    
        location /static/ {
            root /home/my_django;
            }
        location / {
            include         uwsgi_params;
            uwsgi_pass      127.0.0.1:8080 ;
    # unix:/home/my_django/my_django.sock; 不用文件形式配置了
            }
        }
    

    保存 执行

    ln -s /etc/nginx/sites-available/my_django/etc/nginx/sites-enabled/
    service nginx configtest
    提示失败
    
    image.png
    执行  nginx -t  查看拨错信息
    
    很明显,我配置写错了

    查了一下,原来是我 server name 格式错了 *.sunrain.xyz * 只能出现在 .的前后
    改成 *.sunrain.xyz 再次测试


    测试成功,但是依然nginx 启动报错

    原来是80 端口被占用了,找到80 进程 kill,后再次启动nginx

    service nginx restart
    

    启动成功


    大开网站测试,发现nginx 已经生效
    • 通过 uwsgi 链接 nginx 和django框架
    uwsgi /etc/uwsgi/my_django/my_django.ini -d /home/my_django/my_django.log
    

    配置成功后,页面一直显示 Welcome to nginx!
    参考:(这个还没有解决哦,明天看一下 nginx 的配置把。离成功只有一步了)
    https://blog.csdn.net/pcf1995/article/details/80973600

    嗯,我好想知道什么错误了。我的my_django.ini 里面的 socket :xxxx.sock这个配置项,的文件是空的,我没有配置
    直接写吧,就是 127.0.0.1:8080
    nginx :uwsgi_pass 127.0.0.1:8080; 这样应该就把nginx 和wsgi 连起来了。
    改了 配置文件,还是不行啊,太头疼了。
    最后我就想,怎么盖都是 welcome to nginx,肯定是配置文件没有起作用啊。于是想起来nginx 安装的时候在 sites-available 文件夹下,有个default 配置文件,于是想肯定nginx 每次都是默认 default 作为配置文件来运行的。所以我就把自己的配置文件,改成default ,把原来的删除了。然后别忘了
    ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/
    重启 nginx服务。

    image.png
    终于不是 默认的欢迎页面了。心里想成功了90% 了。检查看看为什么图片样式没有加载。
    image.png
    看到403 立马,高兴了,因为这个问题,肯定不是大问题。也就是用户权限问题。网上随便搜搜。找到答案
    image.png
    nginx.conf user 配置改成 root 重启 nginx 。成功显示网站全貌
    image.png
    (最后提醒一下,nginx 服务开启,后 uwsgi 也要运行哦)
    小插曲:网站运行成功后。上传文件 爆了 413 错误
    查 mdn 413有效负载过大.以前没出现这个错误,肯定是nginx 的配置问题。
    在 nginx.conf 配置夹 client_max_body_size 100m (这里限制 文件大小100m)重启搞定如图:
    image.png
    • 配置 域名

    买一个自己的域名,阿里云就可以。(如果你的服务器在国外,域名就不需要备案了)备案后添加dns 解析。大概一个小时内,就审核后,就可以通过 域名访问了。哈哈。


    image.png

    ps 最后附上我的 uwsgi 和nginx 的配置
    nginx:

    
    server {
      
        listen 80;
        server_name *.sunrain.xyz;
    
        location /static/ {
           alias  /home/my_django/static/;
            }
        location /media/ {
           alias /home/my_django/media/;
            }
        location / {
            include    uwsgi_params;
            uwsgi_pass   127.0.0.1:8080;
            }
    
    
    }
    
    

    uwsgi:

    
    [uwsgi]
    project = my_django
    base = /home
    
    chdir = %(base)/%(project)
    module = %(project).wsgi:application
    
    master = true
    processes = 5
    
    socket = 127.0.0.1:8080
    chmod-socket = 666
    vacuum = true
                       
    

    第一次独立,部署一个dj应用,还是很刺激的。有什么问题欢迎留言

    相关文章

      网友评论

          本文标题:django 部署 感觉一步步配置安装就好了

          本文链接:https://www.haomeiwen.com/subject/imvovctx.html