Python 搭建 Web 环境(pyenv + django + uwsgi + nginx)
安装虚拟环境pyenv
使用虚拟环境逐渐成了 python 项目开发中的一种主流方式。pyenv 可以帮我们生成多个 python 的虚拟环境,这样我可以在同一台机器上使用 python2 或者 python3 或者 python3 的不同版本,避免不同项目因为依赖模块版本问题发生冲突。只要使用时,切换到那个具体的版本环境即可。
安装
pyenv-virtualenv
git clone https://github.com/pyenv/pyenv.git ~/.pyenv git clone https://github.com/pyenv/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
将
pyenv
加入到环境变量export PATH=~/.pyenv/bin:$PATH eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
使环境变量生效
source ~/.bashrc
查看pyenv的版本
pyenv version
查看 pyenv 已经托管了哪些 python 版本
pyenv versions
安装依赖
apt install libsqlite3-dev apt install -y bzip2 apt install libbz2-dev -y apt install libreadline-dev
安装某个版本的python
pyenv install <version> # 例如: pyenv install 2.7.18
建立一个虚拟环境,python 版本选择 2.7.18
pyenv virtualenv 2.7.18 env-2.7.18
激活该虚拟环境
pyenv activate env-2.7.18
查看该环境下python版本
python -V
创建django
项目
进入虚拟环境
pyenv activate env-2.7.18
安装 django 2.2 版本
pip install django
使用
django-admin
命令创建项目django-admin startproject ipdata cd ipdata
创建第一个应用
django-admin startapp first
在
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', } }
同样在 ipdata/settings.py 中,找到
ALLOWED_HOSTS
变量的赋值语句,修改访问权限为允许所有ALLOWED_HOSTS = ['*']
安装依赖
pip install mysqlclient
最后,我们可以使用命令行启动该 django 服务了,首先要生成 django 系统给我们准备好的一些数据表
python manage.py migrate
创建后台账号 [email protected] admin Ov68oE88ZInEfA
python manage.py createsuperuser
交互式启动django服务
python manage.py runserver 0.0.0.0:8000
基于 Nginx 完成 Django 工程的部署 (如果您使用nginx 反向代理
,那么下面的内容可以忽略
了)
python web 服务必须通过uwsgi 协议才能进行访问,因此需要安装 uwsgi 服务来转发 python 的 http 请求。因此,第一步我们要安装 uwsgi 服务
安装
uwsgi
服务pip install uwsgi
使用 uwsgi 启动 django 服务
cd /var/www/html/ipdata mkdir uwsgi
编辑
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
启动 uwsgi 服务, 使用
-d
参数可以放到后台运行uwsgi -d --ini uwsgi.ini
配置 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; # 设置请求超时时间 } }
重新加载 nginx
service nginx reload
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
评论已关闭