CentOS 6.5ワンタッチでDjangoをインストール


これまでUbuntu環境でDjango開発を行ってきたが、最近開発作業をCentOSに移行する過程で、Django開発環境の構築過程が非常に不順であることが判明した.
Python 2をアップグレード6.6 Python 2.7.9
CentOS 6のため.5付属のPythonバージョンは2.6.6で、Djangoはサポートされていないため、Pythonを2.7以上にアップグレードする必要があります.また、yumの最新のPythonバージョンも2.6.6であるため、Python 2をソースコードでインストールするしかない.7.9. Pythonバージョンの表示:
$ python -V Python 2.6.6
Pythonのコンパイルに必要なパッケージのインストール
注意:Pythonソースコードをコンパイルして、対応するパッケージをインストールしないで、先にすべてインストールしてから、後顧の心配がないようにすることができます.すべての取り付けをお勧めします.簡単で乱暴です.
$ yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel
Python 2をダウンロードします.7.9ソース
$ mkdir/opt/python2.7.9 $ cd/opt/python2.7.9 $ wget –no-check-certificate https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tar.xz $ tar xf Python-2.7.9.tar.xz
コンパイルインストール
$ cd/opt/python2.7.9/Python-2.7.9 $ ./configure –prefix=/usr/local $ make $ make install
新しいpythonソフトリンクの作成
$ ln -s/usr/local/bin/python2.7/usr/bin/python
Pythonバージョンの表示:
$ python -V Python 2.7.9
pythonソフトリンクはpython 2を指す.7バージョン以降、yumは正常に動作しません.yumで使用しているpythonを2.6に変更します.yumパスを表示するには:
$ which yum /usr/bin/yum
ファイル/usr/bin/yumの最初の行を次のように変更します.
#!/usr/bin/python2.6
pythonパッケージ管理ツールpipのインストール
$ yum install python-pip
次のような問題が発生する可能性があります.問題1,pipを実行してpkg_が見つからないresources:
$ pip Traceback (most recent call last): File “/usr/bin/pelican-quickstart”, line 5, in\< module> from pkg_resources import load_entry_point ImportError: No module named pkg_resources
解決方法:
$ yum install python-devel
問題2、pipエラーの実行:
[root@donkey site-packages]# pip Traceback (most recent call last): File “/usr/bin/pip”, line 7, in from pip import main ImportError: No module named pip
理由:yumはpython 2を使用しているからです.6 yum install python-pipを実行するとpipがpython 2にインストールされます.6のsite-packagesディレクトリにあります.pipコマンドを実行するにはpython 2が呼び出されます.7,python 2.7のデフォルトパッケージインポートパスにpython 2はありません.6のsite-packages.pythonパッケージのインポートパスを表示するには、次の手順に従います.
$ [root@donkey site-packages]# python Python 2.7.9 (default, Mar 8 2017, 08:47:48) [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux2 Type “help”, “copyright”, “credits” or “license” for more information. >>> import sys >>> sys.path [”, ‘/usr/local/lib/python27.zip’, ‘/usr/local/lib/python2.7’, ‘/usr/local/lib/python2.7/plat-linux2’, ‘/usr/local/lib/python2.7/lib-tk’, ‘/usr/local/lib/python2.7/lib-old’, ‘/usr/local/lib/python2.7/lib-dynload’, ‘/usr/local/lib/python2.7/site-packages’] >>>
解決方法:python 2.6のsite-packagesディレクトリがpipのパケットインポートパスに追加されます.ファイル/usr/bin/pipで、以下を追加します.
sys.path.append(‘/usr/lib/python2.6/site-packages’)
修正後の効果は次のとおりです.
[root@donkey site-packages]# cat/usr/bin/pip #!/usr/bin/python
# -- coding: utf-8 -- import re import sys sys.path.append(‘/usr/lib/python2.6/site-packages’) from pip import main
if __name__ == ‘__main__’: sys.argv[0] = re.sub(r’(-script.pyw|.exe)?$’, ”, sys.argv[0]) sys.exit(main()) [root@donkey site-packages]#
Djangoのインストール
Django 1.8バージョン、Django 1をインストールすることをお勧めします.8以降、多くのコマンドが変更されましたが、ネット上のほとんどのチュートリアルは1.8バージョンです.
$ pip install Django==1.8
インストール結果を検証し、Djangoバージョンを表示し、バージョンを正常に表示すると、Djangoのインストールが成功したことを証明します.
[root@donkey bin]# python Python 2.7.9 (default, Mar 8 2017, 11:08:26) [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux2 Type “help”, “copyright”, “credits” or “license” for more information. >>> import django >>> django.VERSION (1, 8, 0, ‘final’, 0) >>>
ワンタッチインストールスクリプト
このブログによると、CentOS 6.5のDjangoインストールは基本的に完了しますが、コマンドを順番に叩く必要があります.1つのコマンドが実行されてからもう1つを叩くのを待つ必要があります.時間と労力がかかり、効率が低いです.ここで、以上のインストール、構成手順をスクリプトに書きます.スクリプトが実行されると、他のことをすることができます.しばらくしてから、インストール結果を確認すればいいです.
スクリプトソース
#!/bin/sh
# File name: CentOS-Django-Install.sh
# This script is used to install Django 1.8 on CentOS 6.5 automatically.
# Author: Arvin([email protected]) twitter(@Messi_Arvin)
# Date:   Mar.09.2017
# Usage:  Save this file as CentOS-Django-Install.sh. 
#         $ chmod u+x CentOS-Django-Install.sh
#         $ su root
#         # ./CentOS-Django-Install.sh
# Check result:
# [root@donkey opt]# python
# Python 2.7.9 (default, Mar  9 2017, 10:20:35)
# [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux2
# Type "help", "copyright", "credits" or "license" for more information.
# >>> import django
# >>> django.VERSION
# (1, 8, 0, 'final', 0)
# >>>
#
DIR_PYTHON="/opt/python2.7.9"
CMD_PYTHON="/usr/bin/python"
echo -e "\e[1;33m[INFO]:\e[0m DIR_PYTHON: "$DIR_PYTHON""
echo -e "\e[1;33m[INFO]:\e[0m CMD_PYTHON: "$CMD_PYTHON""

function Django_Install_Func(){
    #Install python packages compiling python source code.
    yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel

    if [ ! -d $DIR_PYTHON ]; then
      mkdir $DIR_PYTHON
      echo -e "\e[1;33m[INFO]:\e[0m Directory "$DIR_PYTHON" is created!"
    else
      echo -e "\e[1;31m[ERROR]:\e[0m Directory "$DIR_PYTHON" existed! Please define a new directory to save python2.7.9 source code."
      exit 1
    fi

    echo -e "\e[1;33m[INFO]:\e[0m Start to upgrade Python!"
    cd $DIR_PYTHON
    wget --no-check-certificate https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tar.xz
    tar xf Python-2.7.9.tar.xz

    cd $DIR_PYTHON/Python-2.7.9
    ./configure --prefix=/usr/local
    make && make install

    if [ -f $CMD_PYTHON ]; then
      rm $CMD_PYTHON
    fi
    ln -s /usr/local/bin/python2.7 $CMD_PYTHON

    echo -e "\e[1;33m[INFO]:\e[0m Start to modify yum!"
    CMD_YUM=`which yum`
    echo -e "\e[1;33m[INFO]:\e[0m CMD_YUM: "$CMD_YUM""
    LINE_YUM=`awk '/#!\/usr\/bin\/python/{print NR}'  /usr/bin/yum`
    sed -i "$LINE_YUM c #!/usr/bin/python2.6" $CMD_YUM           

    yum install python-devel
    yum install python-pip

    echo -e "\e[1;33m[INFO]:\e[0m Start to modify pip!"
    CMD_PIP=`which pip`
    echo -e "\e[1;33m[INFO]:\e[0m CMD_PIP: "$CMD_PIP""
    LINE_PIP=`awk '/python2.6\/site-packages/{print NR}'  "$CMD_PIP"`
    if [ ! $LINE_PIP ]; then
      sed -i "/import sys/a\sys.path.append('/usr/lib/python2.6/site-packages')" $CMD_PIP
      echo -e "\e[1;33m[INFO]:\e[0m Append python2.6/site-packages!"
    else
      echo -e "\e[1;33m[INFO]:\e[0m python2.6/site-packages existed!"
    fi

    echo -e "\e[1;33m[INFO]:\e[0m Start to install Django!"
    pip install Django==1.8
    echo -e "\e[1;33m[INFO]:\e[0m Django is installed!"
}

PYTHON_VERSION=$(python -V 2>&1 >/dev/null)
echo -e "\e[1;33m[INFO]:\e[0m PYTHON_VERSION: "$PYTHON_VERSION""

if [[ "Python 2.6.6" == $PYTHON_VERSION ]]; then
  Django_Install_Func
else
  echo -e "\e[1;31m[ERROR]:\e[0m Current python version is: $PYTHON_VERSION, please modify this script."
fi

github: CentOS-Django-Install.sh
使用方法
以上のコードをコピーし、CentOS-Django-Installとして保存する.sh実行権限を与える:
$ chmod u+x CentOS-Django-Install.sh
rootユーザーを使用して実行:
$ su root # ./CentOS-Django-Install.sh
説明:このスクリプトは現在のpythonバージョン2.6.6にのみ適用され、2.7.9にアップグレードしようとしています.他のバージョンの場合は、スクリプトの内容を自分で変更する必要があります.