VMware+CentOS+Apache+php+python+Django+gunicorn構成

16118 ワード

ターゲット:win 7にvmwareをインストールし、2つの仮想マシン、centos 6を新規作成します.6/7.0、仮想マシンでpythonサイトとphpサイトを1つのapacheに同時に構成する.1.vmwareをインストールし、CentOS 6を使用する2つの仮想マシンを新規作成します.6およびCentOS 7.0.インストールが完了すると、centos 6とcentos 7とそれぞれ命名する.
注意:仮想マシンのネットワーク接続はブリッジモードに設定されています
  • 一部の操作にはsuperuser権限が必要であるため、便宜上suが権限を取得する.以下のすべての操作にsuperuser権限があります.
  • は、win 7とcentosが連通し、centosがインターネットに直接アクセスできるように仮想マシンのネットワークを構成する.centos 6は特別な設定を必要としないでよい.centos 7がネットワークに接続できない場合は、まず端末にifconfigを入力し、ネットワークカードの名前を見つけます.私のはeno 16777736です.次に、NICの構成vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
  • を変更する.
    HWADDR=00:0C:29:2D:A6:8F
    TYPE=Ethernet
    BOOTPROTO=dhcp
    DEFROUTE=yes
    PEERDNS=yes
    PEERROUTES=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_PEERDNS=yes
    IPV6_PEERROUTES=yes
    IPV6_FAILURE_FATAL=no
    NAME=eno16777736
    UUID=eff0f28b-5583-431e-9748-308bbc3241fe
    ONBOOT=no

    最後の行のONBOOT=noをONBOOT=yesに変更してネットワークを再起動
    systemctl restart network
    systemctl restart NetworkManger

    これでcentos 7はネットワークに接続できます.
  • centosその他の設定.便利のために、私は直接仮想機の中で操作するのではありません(マウスを切るのは面倒で、私はvmware toolsをインストールしていないで、sftpを使ってファイルを転送します)、xshellとsshを使って仮想機に接続して、だからcentosはGUIインタフェースをオフにすることができて、ただ命令の行の境界面で、システムの資源を節約します.centos 6:vim /etc/inittab id:5:initdefaultのうちの5を3 centos 7:コマンドsystemctl set-default multi-user.targetを使用するcentosを再起動すると、デフォルトでは文字インタフェースに入り、xshellまたはsecurecCRTまたは他のツールで接続して使用する.
  • 必要な開発ツールセットとphpをインストールする.使用コマンド:
  • yum groupinstall "Development tools"
    yum install php php-devel
  • 次はpythonのインストールです.この手順は複雑だ.pythonの公式サイトにはwindowsの下のpythonインストールパッケージがあります.linuxではソースコードでしかコンパイルできません.linuxリリース版のソフトウェアウェアハウスには、コンパイルとパッケージ化されたインストールパッケージがあります.しかし、バージョンが低く、これらのインストールパッケージを使用するインストールはlinuxが持参したpythonを上書きします.多くの問題を引き起こす.ほとんどのlinuxリリース版にはpython(バージョンが低い)が付属しており、yum、rpm、apt-getなどのlinuxコマンドはpythonに依存している.ソフトウェアウェアハウスのインストールパッケージを直接使用すると、既存のpythonが上書きされ、システムコマンドが無効になります.ここではソースコードのコンパイルインストールを採用する.まずpython 2をダウンロードします.7.11. コンパイルする前に、依存パッケージをインストールします:
  • yum install zlib-devel
    yum install bzip2-devel
    yum install openssl-devel
    yum install ncurses-devel
    yum install sqlite-devel

    まずpython libを格納するディレクトリを作成し、その後mkdir /usr/local/python/libを使用してソースパッケージを解凍し、コンパイルします.
    ./configure --enable-shared --prefix=/usr/local/python LDFLAGS="-Wl,-rpath /usr/local/python/lib"
    make && make install

    次に、新しくインストールされたpythonに新しいソフト接続を確立します(古いpythonを上書きしないでください.新しい名前を付けてください).ここではpython 2711 ln -s /usr/local/python/bin/python /usr/bin/python2711を使って、インストールが成功したかどうかを検証します.端末にpythonとpython 2711をそれぞれ入力すると、pythonのインタラクティブなインタフェースに入り、pythonバージョンが表示されます.pythonが古いバージョンを指し、python 2711が新しいバージョンを指すと正しいです.exit()を入力して車に戻ると終了する.
  • pythonサードパーティライブラリをインストールします.linuxはpythonを持参し、yumなどのコマンドは持参pythonを使用するため、yumコマンドでインストールpython-pip、supervisor、gunicornなどのライブラリは古いpythonにインストールされている.yumを使用するpythonライブラリをインストールすることはできません(supervisorはどのpythonを使用するかは関係ありません).python 2711を使用してsetuptoolsとpipをインストール、pipを使用してpythonライブラリをインストールするには、まずpythonを使用します.comはsetuptoolsとpipソースパッケージをダウンロードし、setuptoolsをインストールしてからpipをインストールします.pythonソースコードからサードパーティ製ライブラリをインストールする方法は、ソースパッケージを解凍し、ディレクトリに入り、python setupを実行する.py installがpipをインストールした後、pythonインストールディレクトリのbinディレクトリにpipコマンドがあります.pipのためにソフト接続を確立して便利に使用できます.システムに付属するpythonと区別するために、pip 2711で名前を付けます.ln -s /usr/local/python/bin/pip /usr/bin/pip2711、pipを使用してpythonサードパーティライブラリをインストールします.
  • pip2711 install django==1.8.4
    pip2711 install gunicorn==18
  • djangoでウェブサイトを作ります./home/qiuディレクトリ(自分のディレクトリ)の下に新しいディレクトリworkspaceを作成し、workspaceで/usr/local/python/bin/django-admin startproject p1を実行すると、p 1を使用してp 1というプロジェクトが構築され、p 1ディレクトリ構造は以下の通りです.
  • p1
    -- db.sqlite3
    -- manage.py
    -- p1
        -- __init__.py
        -- url.py
        -- settings.py
        -- wsgi.py
    
  • phpでウェブサイトを作ります.簡単なphpページを作ります.
  • cd /home/qiu
    mkdir php
    cd php
    vim 1.php

    次のように入力します.
    
    <html>
        <body>
            
                echo "My first PHP script!";
            ?>
        body>
    html>
  • apacheをインストールする.次のコマンドを実行します:
  • yum install httpd  # centos6  httpd,    
    yum install httpd-devel  # centos6/7     

    注意しなければならないのはcentos 6がapache 2を持っていることです.2,centosがyumでインストールしたapacheは2.4バージョンで、いくつかの構成に違いがありますが、後で説明します.以下に、いくつかの有用なコマンドを示します.
    rpm -qa | grep httpd  #   apache  
    httpd -l  #   apache   c  
    httpd -M  #   apache     
    lsof -i tcp:80  #   80      
    netstat -ntlp  #       
  • 構成centos 6のapache:サーバNameをlocalhost:80に設定し、その他の設定を必要に応じて変更し(サーバAdminメールボックスなど)、下部に
  • を追加します.
    #   php  
    
        #      
        ServerAdmin [email protected] 
        # php                                  
        DocumentRoot "/home/qiu/php"                      
        #   
        ServerName php.test.com                               
        #         
        ErrorLog "logs/ce.err"
        CustomLog "logs/ce.access" common
         #       
        
            Options FollowSymLinks
            AllowOverride All
            Order deny,allow
            Allow from all
        
    
    #       ,python     
    
        ServerAdmin [email protected]
        ServerName gunicorn.test.com
        ProxyRequests Off
        
            Order deny,allow
            Allow from all
        
            #  /static/   url   ,apache    (img,css,js    )
        ProxyPass /static/ !
            #       8888  
        ProxyPass / http://127.0.0.1:8888/
        ProxyPassReverse / http://127.0.0.1:8888/
            #               
        Alias /static/  /usr/local/python/lib/python2.7/site-packages/django/contrib/admin/static/ 
        
            Order allow,deny
            Options Indexes
            Allow from all
            IndexOptions FancyIndexing
        
    
  • 構成centos 7のapache構成、構成ファイルの下部に
  • を追加
    NAMEVirtualHost *:80
    # php   
    
        DocumentRoot /home/qiu/php
        ServerName php.test2.com
    
    # apache     ,python 
    
        ServerName gunicorn.test2.com
        ProxyRequests Off
        
            Order deny,allow
            Allow from all
        
        ProxyPass / http://127.0.0.1:8888/
        ProxyPassReverse / http://127.0.0.1:8888/
    
  • centosはデフォルトでファイアウォールとSELinuxを開き、まず一時的に閉じます.そうしないと、サイトが導入されてからアクセスできません.phpとpythonプログラムを格納ディレクトリの権限を読み取り可能に変更する.次のコマンドは、
  • を参照してください.
    chmod 777 /home/qiu/workspace/p1
    chmod 777 /home/qiu/php
    /usr/sbin/sestatus -v | grep SEL  #   SELinux  ,  SELinuxstatus   enable      
    setenforce 0  #   SELinux
    # centos6       :
    service stop iptables  #      
    chkconfig iptables off  #      
    # centos7       :
    systemctl stop firewalld.service  #      
    systemctl disable firewalld.service  #      
  • win 7上のHOSTSファイルを修正する.私の構成は以下の通りです:
  • 192.168.248.61 php.test.com
    192.168.248.61 gunicorn.test.com
    192.168.248.55 php.test2.com
    192.168.248.55 gunicorn.test2.com

    自分の仮想マシンのIP構成によると、WIN 7のブラウザでこれらのドメイン名にアクセスすることは、実際には仮想マシンのウェブサイトにアクセスすることになる.
  • 現在phpサイトはすでにアクセス可能であり、apacheも逆エージェントを行い、一部の要求を8888ポートに転送し、gunicornでpythonプログラムを起動し、8888ポートを傍受すればよい.cdから/home/qiu/workspace/p1のディレクトリの下で、実行:/usr/bin/python/bin/gunicorn p1.wsgi:application -b 127.0.0.1:8888 wsgiはp 1/p 1/wsgiを指す.pyファイルこの起動方式はgunicornが持参したsyncサーバをデフォルトで使用し、性能が悪く、gevent、eventlet、meinheldなどの他のサーバを使用することができる.pipでインストールする必要があります:
  • pip2711 install greenlet  #  3       greenlet,      
    pip2711 install gevent
    pip2711 install eventlet
    pip2711 install meinheld

    meinheldを使用する場合は、/usr/bin/python/bin/gunicorn -k egg:meinheld#gunicorn_worker p1.wsgi:application -b 127.0.0.1:8888 geventまたはeventletを使用する場合は、/usr/bin/python/bin/gunicorn -k gevent p1.wsgi:application -b 127.0.0.1:8888 /usr/bin/python/bin/gunicorn -k eventlet p1.wsgi:application -b 127.0.0.1:8888と書くことができます.
  • これで完成です.WIN 7ブラウザにそれぞれ
  • と入力
    php.test.com
    gunicorn.test.com
    php.test2.com
    gunicorn.test2.com

    効果が見えます