安装虚拟环境pyenv

使用虚拟环境逐渐成了 python 项目开发中的一种主流方式。pyenv 可以帮我们生成多个 python 的虚拟环境,这样我可以在同一台机器上使用 python2 或者 python3 或者 python3 的不同版本,避免不同项目因为依赖模块版本问题发生冲突。只要使用时,切换到那个具体的版本环境即可。
  1. 安装pyenv-virtualenv

    git clone https://github.com/pyenv/pyenv.git ~/.pyenv
    git clone https://github.com/pyenv/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
    
  2. pyenv加入到环境变量

    export PATH=~/.pyenv/bin:$PATH
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"
    
  3. 使环境变量生效

    source ~/.bashrc
    
  4. 查看pyenv的版本

    pyenv version
    
  5. 查看 pyenv 已经托管了哪些 python 版本

    pyenv versions
    
  6. 安装依赖

    apt install libsqlite3-dev
    apt install -y bzip2
    apt install libbz2-dev -y
    apt install libreadline-dev
    
  7. 安装某个版本的python

    pyenv install <version> # 例如: pyenv install 2.7.18
    
  8. 建立一个虚拟环境,python 版本选择 2.7.18

    pyenv virtualenv 2.7.18 env-2.7.18
    
  9. 激活该虚拟环境

    pyenv activate env-2.7.18
    
  10. 查看该环境下python版本

    python -V
    

创建django项目

  1. 进入虚拟环境

    pyenv activate env-2.7.18
    
  2. 安装 django 2.2 版本

    pip install django
    
  3. 使用django-admin命令创建项目

    django-admin startproject ipdata
    cd ipdata
    
  4. 创建第一个应用

    django-admin startapp first
    
  5. ipdata/settings.py中,找到DATABASES变量的赋值语句,并修改成数据库相关配置,改为使用 mysql 提供数据库服务

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'DB_NAME',
            'USER': 'DB_USER',
            'PASSWORD': 'DB_PASSWORD',
            'HOST': '127.0.0.1',
            'PORT': '3306',
        }
    }
    
    
  6. 同样在 ipdata/settings.py 中,找到ALLOWED_HOSTS变量的赋值语句,修改访问权限为允许所有

    ALLOWED_HOSTS = ['*']
    
  7. 安装依赖

    pip install mysqlclient
    
  8. 最后,我们可以使用命令行启动该 django 服务了,首先要生成 django 系统给我们准备好的一些数据表

    python manage.py migrate
    
  9. 创建后台账号 [email protected] admin Ov68oE88ZInEfA

    python manage.py createsuperuser
    
  10. 交互式启动django服务

    python manage.py runserver 0.0.0.0:8000
    

基于 Nginx 完成 Django 工程的部署 (如果您使用nginx 反向代理,那么下面的内容可以忽略了)

python web 服务必须通过uwsgi 协议才能进行访问,因此需要安装 uwsgi 服务来转发 python 的 http 请求。因此,第一步我们要安装 uwsgi 服务
  1. 安装uwsgi服务

    pip install uwsgi
    
  2. 使用 uwsgi 启动 django 服务

    cd /var/www/html/ipdata
    mkdir uwsgi
    
  3. 编辑uwsgi.ini

    [uwsgi]
    
    # 指定监听端口
    socket = :8000
    
    # 重要配置
    chdir = /var/www/html/ipdata   
    
    # 重要,要有wsgi.py文件              
    module = ipdata.wsgi                
    
    master = true
    
    # 启动进程数
    processes = 5
    threads = 5
    vacuum = true
    stats=%(chdir)/uwsgi/uwsgi.status
    pidfile=%(chdir)/uwsgi/uwsgi.pid
    
  4. 启动 uwsgi 服务, 使用-d参数可以放到后台运行

    uwsgi -d --ini uwsgi.ini
    
  5. 配置 nginx ,将请求转发到 uwsgi 服务处理

    ...
    server {
       listen         80;
       server_name    ipdata.com
       access_log     /var/log/nginx/web_access.log;
       error_log      /var/log/nginx/web_error.log;
    
       # 最重要的部分
       location / {
           include uwsgi_params;          # 通过uwsgi转发请求
           uwsgi_pass 127.0.0.1:8000;     # 和前面配置django服务的socket端口保持一致
           uwsgi_read_timeout 15;         # 设置请求超时时间
       }
    }
    
  6. 重新加载 nginx

    service nginx reload