本文采用linux的ubuntu,由于linux基本上自带python环境,因此进入terminal,分别输入python,python3从而测试基本环境
由于ubuntu默认采用国外的安装源,所有我们为了下载速度,优先切换国内的。
1.备份已有的$ cp /etc/apt/sources.list /etc/apt/sources.list.bak
2. 编辑并替换,最好采用阿里,中科大等科技教育机构的(具体的自己网上搜) vim /etc/apt/sources.list
安装mysql
分别在终端下输入以下命令
安装virtualenv
首先为什么要安装virtualenv???
在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.6.3。所有第三方的包都会被pip
安装到Python3的site-packages
目录下。如果我们要同时开发多个应用程序,那这些应用程序都会共用一个Python,就是安装在系统的Python 3。如果应用A需要python 2.7,而应用B需要python 2.6怎么办?这种情况下,每个应用可能需要各自拥有一套“独立”的Python运行环境。virtualenv就是用来为一个应用创建一套“隔离”的Python运行环境。
怎样安装呢?
可以使用"pip3 install virtualenv
"当然也可以使用"sudo apt-get install virtualenv"的方式,安装结束之后再次输入该命令,代表安装完成
如果提示没有pip3,那么使用sudo apt-get install python3-pip和sudo apt-get install python-pip分别安装python2.7和python3.6下的pip,然后可以使用"pip -V"和"pip3 -V"测试是否正常。
基本使用规则
uwsgi的官方文档给出了如下的代码:
可以看到在相应的env36/bin下有一个activate,使用"source env36/bin/activate"激活这个环境
测试python.python3基本上正常。
安装Django
依然官方文档:
1.pip install Django
2.django-admin.py startproject mysite
3.cd mysite
安装uwsgi
pip3 install uwsgi
等待安装完成
注册一个叫app01的应用
并使用vim miniweibo/settings.py修改以下部分如下:
再使用touch test.py或者vim test.py建立一个内容如下的内容
1 # test.py 2 def application(env, start_response): 3 start_response('200 OK', [('Content-Type','text/html')]) 4 return [b"Hello World"] # python3 5 #return ["Hello World"] # python2
使用并运行:uwsgi --http :8000 --wsgi-file test.py
得到以上内容,基本上宣布uwsgi成功
然后测试Django project
#python manage.py runserver 127.0.0.1:8000
如果成功则执行下面的,事实上两个都会得到同样的页面
#uwsgi --http :8000 --module miniweibo.wsgi
安装nginx
安装并使用
sudo apt-get install nginx sudo /etc/init.d/nginx start # start nginx
得到上面的页面则宣告正确;
接下来配置nginx
需要三个文件,文件的格式基本固定,需要修改的部分不多,分别为uwsgi_params,uwsgi.ini,nginx.conf
下载:点击此处
可以将其移动到该目录/var/pythonfile下,如下
使用sudo ln -s ~/path/to/your/mysite/mysite_nginx.conf /etc/nginx/sites-enabled/链接,比如我的就是:
sudo ln -s /var/pythonfile/nginx.conf /etc/nginx/sites-enabled
再次编辑miniweibo/settings.py
在最后加上 STATIC_ROOT = os.path.join(BASE_DIR, "static/")
然后使用 python manage.py collectstatic,得到类似于如下的东西。
重启nginx: sudo /etc/init.d/nginx restart
cd miniweibo
uwsgi --socket :8001 --wsgi-file test.py
再次访问127.0.0.1:8000得到hello,world!
修改nginx.conf如下
server unix:///path/to/your/mysite/mysite.sock; # for a file socket # server 127.0.0.1:8001; # for a web port socket (we'll use this first)
使用uwsgi --socket mysite.sock --wsgi-file test.py运行,发现127.0.0.1:8000无法访问
访问错误日志,发现是不被许可
则使用
uwsgi --socket mysite.sock --wsgi-file test.py --chmod-socket=666 # (more sensible)
重新访问127.0.0.1:8000得到
再次使用
uwsgi --socket mysite.sock --module mysite.wsgi --chmod-socket=666
这代表django被uwsgi和nginx同时支持
配置uwsgi.ini
运行 uwsgi --ini uwsgi.ini
即可进行访问。
如果出现encoding模块错误,则安装 pip install pypl进行解决。
最后
deactivate退出虚拟环境
sudo pip install uwsgi再次安装
uwsgi --ini mysite_uwsgi.ini再次尝试启动