最近用python开发了一个web项目,在本地开发完成后需要部署到线上,当然第一步是需要在线上搭建相关的环境。首先是向公司申请了一台PC主机,并且在上面装好了linux(centos6.4)系统。之后就开始了部署环境,我自己第一次搞这个所以还是走了很多的弯路,现在将完整的环境搭建流程记录一下,仅供大家参考。
1、安装gcc,由于刚装好的系统,centos版没有自带,所以需要我们收到安装。当然也很简单,一个命令搞定。
yum install gcc
2、安装python
由于centos会自带一个python,但是版本可能不是主流的。我这里自带的是2.6,但是我开发用的是2.7。于是就需要对python进行升级。升级流程如下:
1)下载nux 的release文件
wget http://li.nux.ro/download/nux/dextop/el6/i386/nux-dextop-release-0-2.el6.nux.noarch.rpm
rpm -ivh nux-dextop-release-0-2.el6.nux.noarch.rpm
yum -y install python27
yum -y install python27-devel
2)升级python
此时Centos默认还是使用python2.6.*,需要用python2.7的文件覆盖python文件。
cd /usr/bin/
rm -rf python
cp python2.7 python
3) 测试
在命令行里输入python --version,如果输出的结果显示的是这样就正确了:
[root@linuxidc script]# python --version
Python 2.7.3
4)由于yum没有兼容python2.7所以yum中默认的python要改成老版本python2.6
执行 vi /usr/bin/yum 命令,把其中的 #!/usr/bin/python 修改为: #!/usr/bin/python2.6
5) 安装setuptools工具,方便自动升级
wget https://enterprise-storage-os.googlecode.com/files/setuptools-0.6c11.tar.gz
tar xzvf setuptools-0.6c11.tar.gz
cd setuptools-0.6c11
python setup.py install
6) 至此python升级已经完成。
3、安装python的以系列依赖模块
1)安装mysql
yum install mysql
2)安装mysql_python插件
wget http://10.down.119g.com/10/74004C6E4B8B372DEA444B403E1C6967C52A8530/MySQL-python-1.2.4b4.tar.gz
tar xvzf MySQL-python-1.2.4b4
cd MySQL-python-1.2.4b4
vi site.cfg
把 mysql_config = /usr/local/mysql/bin/mysql_config 这一行前的#去掉,并且把mysql_config的路径设置正确。(可用whereis mysql_config命令查找路径)
python setup.py build
python setup.py install
3)安装xlwt,xlrd,Unipath,django等插件
下载好相关的安装包,解压后,切换到对应目录,执行 python setup.py install 命令即可
4、安装nginx
1)安装pcre库
wget http://sourceforge.net/projects/pcre/files/pcre/8.21/pcre-8.21.tar.gz (下载这一步,如果下不了可以去网页下载后拷贝到/usr/local/下)
tar -zxvf pcre-8.21.tar.gz
cd pcre-8.21
./configure
make
make install
2)安装zlib库
wget http://zlib.net/zlib-1.2.8.tar.gz
tar -zxvf zlib-1.2.8.tar.gz cd zlib-1.2.8
./configure
make
make install
3)安装ssl
wget http://www.openssl.org/source/openssl-1.0.1c.tar.gz (下载这一步,如果下不了可以点击链接下载后拷贝到/usr/local/下)
tar -zxvf openssl-1.0.1c.tar.gz
./config
make
make install
4)安装nginx
wget http://nginx.org/download/nginx-1.2.8.tar.gz
tar -zxvf nginx-1.2.8.tar.gz
cd nginx-1.2.8
./configure --prefix=/usr/local/nginx
make
make install
5、安装uwsgi
1)安装
wget http://projects.unbit.it/downloads/uwsgi-latest.tar.gz
tar zxvf uwsgi-latest.tar.gz
cd uwsgi-2.0.11.2
make
2)安装libxml
先下载安装包libxml2-2.9.1.tar.gz
tar zxvf libxml2-2.9.1.tar.gz
./configure
make
make install
6、最后,我们要将相关的防火墙端口打开,避免我们的项目部署好了不能外部访问。
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 30003 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8089 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
至此,我们的nginx+uwsgi+Django部署就完成了。其中涉及到nginx的配置和django项目的相关配置在这里就不贴出,想了解的可以去google一下。