D

Django项目上线爬坑路书

xuanbei 2019-07-07

这是什么

本文是作者上线Django项目的笔记,仅供参考。

注意:欢迎转载,保留链接
注意:本文参考了知了课堂的笔记

总体流程

  1. 安装Python
  2. 安装Nginx
  3. 安装Uwsgi

大概的思路就是配置好静态文件通过Nginx访问,动态文件通过Uwsgi来解析。相比PHP,确实是又复杂又LOW(轻喷)

安装Python

你拿到的服务器大概率是centos或者ubuntu的发行版,一般是有python的。我们可以在shell中输入python,能弹出东西就算成。

Python 2.7.5 (default, Jun 20 2019, 20:27:34) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

弹出来的东西可能长这样,这是2.X版本的Python,今天我们写的Django项目大概率已经不支持2.X的版本了,所以我们要安装3.x版本的Python

Python得自己编译…

  1. 安装依赖包

    这一步如果省略,可能会让之后的编译无法进行

    yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel

  2. 下载安装包

    wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz

  3. 解压安装包

    tar -zxvf Python-3.7.0.tgz

  4. 建立一个空文件夹,用于存放python3程序

    mkdir /usr/local/python3

  5. 执行配置文件

    ./configure --prefix=/usr/local/python3

  6. 安装

    make
    make install
  7. 建立软连接

    ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3
    ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3

然后,我们需要安装virtualenv以及virutalenvwrapper。并创建虚拟环境。

pip3 install virtualenv
pip3 install virtualenvwrapper

vim ~/.bashrc 进入文件中,填入以下两行代码:

export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

然后执行

source ~/.bashrc

  1. 接着创建虚拟环境

    mkvirtualenv course 

  2. 使用当前虚拟环境

    workon course

  3. 然后执行

    pip install -r 1.txt (1.txt就是包含了需求库的文件,相信这里不用多解释)

截止到这里,Python和Django的环境就算搭建好了

安装Nginx

yum install -y nginx

没错,一句话就好了。

这里可能由于我使用的是阿里云服务器的关系,所以已经配置好了yum源。

其实这里有个问题可以交流一下,解决问题是一个爬坑的过程。从学习的角度上来说,是应该尝试以最困难的方式来完成,这样可以学到更多东西。可是用学习学习(你没有看错,我也没有打错),学习讲究的应该是先建立体系,再补充细节。搭建Django项目的过程中,体系就指的是完成整个流程,Nginx属于细节的部分。现在有办法能快速的完成安装,有什么不好的呢。

  • Nginx的一些其他常用配置目录

    以下是Nginx的默认路径:
    (1) Nginx配置路径:/etc/nginx/
    (2) PID目录:/var/run/nginx.pid (https://www.centos.bz/tag/nginx-pid/)
    (3) 错误日志:/var/log/nginx/error (https://www.centos.bz/tag/error/).log
    (4) 访问日志:/var/log/nginx/access.log
    (5) 默认站点目录:/usr/share/nginx/html
    事实上,只需知道Nginx配置路径,其他路径均可在/etc/nginx/nginx.conf 以
    及/etc/nginx/conf.d/default.conf 中查询到。
  • 常用命令

    常用命令
    (1) 启动:
    nginx
    (2) 测试Nginx配置是否正确:
    nginx -t
    (3) 优雅重启:
    nginx -s reload
    (4) 查看nginx的进程号:
    ps -ef |grep nginx
    (5)nginx服务停止
    nginx -s stop
    kill -9 pid

安装Uwsgi

pip3 install uwsgi

注意,uwsgi必须安装在系统级环境下, 不能是虚拟路径

我们可以使用命令用uwsgi启动项目,如果能够在浏览器中访问到这个页面,说明uwsgi可以加载项目了。

uwsgi --http :8000 --module modname.wsgi --virtualenv=/root/.virtualenvs/django-env-py2

其中modname指的是项目的名字,/root/.virtualenvs/django-env-py2指的是虚拟环境的安装路径

配置uwsgi配置文件
[uwsgi]
#文件名 :zhiliaoketang_uwsgi.ini
# Django相关的配置
# 必须全部为绝对路径
# 项目的路径
chdir           = /srv/zhiliaoketang
# Django的wsgi文件(项目的名字.wsgi,这个文件其实不存在,是动态创建的)
module          = zhiliaoketang.wsgi
# Python虚拟环境的路径
home            = /root/.virtualenvs/django-env-py2

# 进程相关的设置
# 主进程
master          = true
# 最大数量的工作进程
processes       = 10
# socket文件路径,绝对路径
socket          = /srv/zhiliaoketang/zhiliaoketang.sock
# 设置socket的权限
chmod-socket    = 666
# 退出的时候是否清理环境
vacuum          = true

通过以下命令来检测启动是否顺利

uwsgi --http :85 --ini zhiliaoketang.ini

配置Nginx

/etc/nginx/conf.d目录下,新建一个文件,叫做zhiliaoketang.conf,然后将以下代码粘贴进去:

# 这个文件就是你项目绝对路径下的 项目名.sock 文件
# 这个文件是不存在的,是个socket通信地址,写就好
upstream zhiliaoketang {
    server unix:///srv/zhiliaoketang/zhiliaoketang.sock; 
}

# 配置服务器
server {
    # 监听的端口号
    listen      80;
    # 域名
    server_name 192.168.0.101; 
    charset     utf-8;

    # 最大的文件上传尺寸
    client_max_body_size 75M;  

    # 静态文件访问的url
    location /static {
        # 静态文件地址,就是你文件中的静态地址,记得把上面那个static也改了
        alias /srv/zhiliaoketang/static_dist; 
    }

    # 最后,发送所有非静态文件请求到django服务器
    location / {
        uwsgi_pass  zhiliaoketang;
        # uwsgi_params文件地址
        include     /etc/nginx/uwsgi_params; 
    }
}

每次修改完了配置文件,都要记得重启。

然后先启动Nginx,在启用Uwsgi,项目的上线就算成了。

PREV
小米手环NFC模拟加密IC卡
NEXT
那些VIM的坑

评论(0)

发布评论