美文网首页
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