环境为阿里云服务器,系统版本为centos6.5
默认python版本为2.6
去python官网下载python2.7.11的源码包https://www.python.org/downloads/release/python-2711/。
在安装python2.7之前,我们需要安装一些之后需要的依赖库,不然的话,之后还需要的时候还需要重新编译安装python。
这里我们用yum安装上zlib, ssl:
安装zlib:
yum install zlib zlib-devel
安装openssl:
yum install openssl openssl-devel
之后安装python。解压我们之前下载的python2.7的包,进入目录后,指定安装目录方便之后寻找相关文件。然后make , makeinstall.
./configure --prefex=/usr/local/python27 make make install
make install成功后,需要覆盖/usr/bin/python
cp /usr/bin/python /usr/bin/python26.old ln -s /usr/local/python27/bin/python /usr/bin/python
这样,python2.7我们已经安装好了,我们可以在命令行下敲击python -V 查看python版本是否成功为2.7
安装好python2.7后,我们需要重新制定下yum的python版本
vi /usr/bin/yum
将文件头改为:
#!/usr/bin/python2.6 ...
pip是python的库管理工具,可以很方便的管理python的库文件。因为pip依赖于setup_tools,所以先下载setup_tools 和pip源码tar包。从pypi上下载:
setup_tools:https://pypi.python.org/pypi/setuptools
pip: https://pypi.python.org/pypi/pip/7.1.2
下载好之后,解压出来,依次是用python setup.py install 安装setup_tools 和pip。安装过程中如果之前没有安装库文件,则需要yum安装所需要的库, 重新编译安装python。
安装好pip后,我们可以直接用pip安装django
pip install django
博文创建时间,安装的是django1.9,安装好后,是用命令查看Django版本
python -c "import django; print django.get_version()"
如果输出对应的版本号,则安装成功。
接下来安装nginx, 可以直接用yum install nginx , 或者下载nginx源码包编译安装。这里用yum安装nginx
安装好后,是用nginx -v 查看nginx版本,
yum库不够新,安装的nginx版本挺低,但现在不影响使用,如果需要更新版本,可以下载tar包自己编译安装。
接下来安装uwsgi,我们使用pip install uwsgi安装。安装成功后,在python27的bin目录下面生成uwsgi可执行文件。
我们将他移到/usr/bin/下面。
编写一个运行脚本内容如下:
#!/bin/sh /usr/bin/uwsgi -s /tmp/uwsgi.sock --uid www -C -M -p 10 -t 10 -R 10000 -d /tmp/uwsgi.log --pidfile /tmp/uwsgi.pid --vhost echo "[started]"
我们使用的是www用户,所以需要增加一个www用户
useradd www
启动后,我们可以ps查看进程是否正常启动
启动了10个工作进程。监听的是/tmp/uwsgi.sock ,log日志文件在/tmp/uwsgi.log
centos6.5上yum库默认的是mysql5.1.73,所以我们需要更新下yum库,添加yum源
rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm
然后查看下mysql相关的库
需要安装如下:mysql55w-libs, mysql55w-server, mysql55w-devel, mysql55w, MySQL-python.
安装成功后,使用命令service mysqld start 启动即可,然后设置mysql的root用户密码
命令:mysqladmin -uroot -p password mypassword,回车后,会提示输入密码,因为初始没有,所以直接回车即可。
然后安装python的MySQLdb
pip install mysql-python 或者 http://sourceforge.net/projects/mysql-python/
在项目目录下创建django项目
/usr/local/python27/bin/django-admin.py startproject mytest
在项目目录下新增wsgi文件:django_wsgi.py
import os import django.core.handlers.wsgi os.environ['DJANGO_SETTINGS_MODULE'] = 'mytest.settings' from django.core.wsgi import get_wsgi_application application = get_wsgi_application()
如果需要配置数据库,则python manager.py migrate创建相关表结构。
接下来配置nginx.conf
nginx.conf 配置文件在/etc/nginx/nginx.conf
在nginx.conf 中的http段里面添加一个server
server { listen youserverport; server_name youservername; location / { include uwsgi_params; uwsgi_pass unix:///tmp/uwsgi.sock; uwsgi_param UWSGI_CHDIR /home/data/mytest; uwsgi_param UWSGI_SCRIPT django_wsgi; } location /static { root /home/data/mytest; } }
server_name 和listen根据自己的需要配置,location / 里面用uwsge_pass将请求代理给uwsge,即uwsgi进程监听的/tmp/uwsgi.sock, uwsgi_param参数CHDIR为项目地址,SCRIPT为我们在项目中创建的django_wsgi.py文件名(不包含后缀名)
最后再配置了个static静态目录,减轻uwsgi和django的压力。
然后重启nginx,重启uwsgi,到这里服务的环境已经部署完毕,可以访问对应的域名或者ip去尝试访问了。
因为没有配置uwsgi根据代码文件修改后自动重启,所以之后如果修改了项目下的python文件,则需要手动重启uwsgi。