安装软件包
我的Linux是Ubuntu,需要安装Python3,如果你需要安装其他版本替换即可
sudo apt-get install mysql-server python3 python-dev python3-pip virtualenv
配置Virtualenv及Python环境
首先,这个Virtualenv并不是必须的,他的作用就是创建一个“隔离”的Python运行环境。
我想大家都碰到过在一台电脑上同时开发多个应用程序,如果应用A需要Python 2.7,而应用B需要Python 2.6怎么办?有时还会碰到不只是Python版本的不一致,比如Django等软件包版本。
这种情况下,每个应用可能需要各自拥有一套“独立”的Python运行环境。
1、新建独立运行环境,命名为pyblog_env
virtualenv pyblog_env --python=python3.5 --no-site-packages
–python指定Python版本 –no-site-packages不复制系统已安装Python包
2、进入pyblog_env环境
source pyblog_env/bin/activate
这时会发现命令提示符前面多了一个(pyblog_env),变成(pyblog_env)user@hostname:~$ 这种形式,这表示我们已经进入到刚刚创建的虚拟环境。 然后再通过pip安装包,都会安装到这个环境下,不会对系统环境造成影响。 退出虚拟环境命令:deactivate
3、安装项目依赖
pip3 install django PyMySQL mysqlclient Pillow
#如果有需求文件,比如requirements.txt,则执行
pip3 install -r requirements.txt
Django项目配置
1、上传Django项目,我的项目在GitHub。
git clone https://github.com/zytx/pyblog.git
2、配置项目的数据库信息
3、数据迁移
python manage.py makemigrations
python manage.py migrate
4、建立超级用户:
python manage.py createsuperuser
5、收集静态文件:
python manage.py collectstatic
6、测试项目 运行开发服务器看项目能否正常运行
python manage.py runserver 0.0.0.0:8000
访问ip:8000看是否出错
uWSGI 配置
退出刚才进入的虚拟环境,使用命令:deactivate
1、安装uWSGI
pip3 install uwsgi
2、运行测试:
uwsgi --http :8000 --home /home/zytx/pyblog_env/ --chdir /home/zytx/pyblog_env/pyblog -w pyblog.wsgi
–home Virtualenv的虚拟环境目录 –chdir Django项目目录
如果访问IP:8000可以看到项目,就说明Python环境和uWSGI是没有问题的
3、创建配置文件 接下来在项目里新建一个配置文件uwsgi.ini
[uwsgi]
# 项目根目录路径(full path)
chdir = /home/zytx/pyblog_env/pyblog/
# Django的 wsgi 文件
module = pyblog.wsgi:application
# virtualenv目录 (full path)
home = /home/zytx/pyblog_env/
master = true
# 最大工作进程数(CPU密集型建议设为CPU核心数,IO密集型建议设为CPU核心数的两倍)
processes = 2
# unix套接字文
socket = /home/zytx/pyblog_env/pyblog.sock
# socket文件权限
chmod-socket = 777
# 退出时清空环境
vacuum = true
4、后台启动uWSGI
uwsgi /home/zytx/pyblog_env/pyblog/uwsgi.ini&
Nginx 配置
1、创建配置文件
sudo vi /etc/nginx/sites-available/pyblog
加入如下内容:
server {
listen 80;
server_name www.immrz.com;
root /home/zytx/pyblog_env/pyblog/;
location /media/ {
#如果你的media目录不在root里,可以配置 alias /path/to/your/mysite/media;
}
location /static/ {
#如果你的static目录不在root里,可以配置 alias /path/to/your/mysite/static;
}
location / {
uwsgi_pass unix:///home/zytx/pyblog_env/pyblog.sock;
include uwsgi_params; # the uwsgi_params file you installed
}
}
软连接到sites-enabled
sudo ln -s /etc/nginx/sites-available/pyblog /etc/nginx/sites
enabled/
2、重新加载Nginx配置
sudo service nginx reload
如果配置无误我们就可以让uWSGI开机运行
#编辑/etc/rc.local,在exit0之前加入
/usr/local/bin/uwsgi --ini /home/zytx/pyblog_env/pyblog/pyblog.uwsgi.ini&