Ubuntu下PHP開発環境構築ガイドライン


  • Ubuntuに基づくPHP開発環境構築
  • インフラ
  • 依存パッケージインストール
  • Nginx取付
  • PostgreSQLデータベースインストール
  • PHP取付
  • Redisインストール手順
  • SSDBインストール手順
  • Phalconフレーム取付
  • Php追加Redis拡張
  • Php追加SSDB拡張
  • swooleインストール
  • Nginx関連構成
  • FAQおよび
  • の解決
  • 依存パッケージおよびプロファイルダウンロードアドレス
  • 結語



  • Ubuntuに基づくPHP開発環境構築
    1.インフラストラクチャ
    OSバージョン:Ubuntu 17.10では、すべての依存ライブラリが~/srcディレクトリの下に配置され、すべてのプロジェクトが~/projectディレクトリの下に配置され、私のホームディレクトリ"~"/home/yurisaです.
    取付前準備git,wget取付方式
    # -- install git
    $: sudo apt-get install git
    
    # -- install wget
    $: sudo apt-get install wget

    2.依存パッケージのインストール
  • 取付方式
    ローカルインストール
    
    # --  package(     )
    
    $: sudo dpkg -i package

    ソースからインストール
    $: sudo apt-get install package
    
    # --   ,                          
    
    
    # --     "libpng"    
    
    $: sudo apt-cache search libpng

    インストール前にgcc sudo apt-get install gcc g++をインストールする必要があります.Ubuntuはデフォルトでgcc 7をインストールしています.gcc -vを使用して確認すればいいです.

  • インストールが必要な依存パッケージのリスト
    imagemagick_6.9.7.4+dfsg-16ubuntu2_amd64.deb
    iptraf_1.1.4-6_all.deb
    libbison-dev_3.0.4.dfsg-1+b1_amd64.deb
    libcurl3_7.55.1-1ubuntu2_amd64.deb
    libcurl4-openssl-dev_7.55.1-1ubuntu2_amd64.deb
    libedit-dev_3.1-20170329-1_amd64.deb
    libevent-dev_2.1.8-stable-4_amd64.deb
    libfreetype6_2.6.3-3.2_amd64.deb
    libjpeg-dev_8c-2ubuntu8_amd64.deb
    libmcrypt-dev_2.5.8-3.3_amd64.deb
    libmhash-dev_0.9.9.9-7_amd64.deb
    libmhash2_0.9.9.9-7_amd64.deb
    libpng-dev_1.6.34-1_amd64.deb
    libreadline-dev_7.0-3_amd64.deb
    libxml2-dev_2.9.4+dfsg1-4ubuntu1_amd64.deb
    re2c_1.0.1-1_amd64.deb
    依存パッケージダウンロード(ローカルインストールダウンロードアドレスは後述)
    次に、上記の依存パッケージをインストールします.
    3.Nginxインストール
    インストール前に対応する依存パッケージをインストール
    依存パッケージ名
    バージョン番号
    用途
    gcc
    7.1
    C/C++コンパイラ
    zlib
    1.2.11
    Httpパッケージをgzip圧縮する
    pcre
    8.41
    正規表現ライブラリ
    openssl
    1.0.2n
    Httpsプロトコルのサポート
    nginx-stick
    nginx module
    PCreのインストール
    # --   pcre-8.41.tar.gz
    $: tar -zxf pcre-8.41.tar.gz
    
    # --     
    $: cd pcre-8.41.tar.gz
    
    # --   
    $: ./configure
    $: make
    $: sudo make install
    

    zlibのインストール
    # --   
    $: tar -zxf zlib-1.2.11.tar.gz
    
    # --     
    $: cd zlib-1.2.11
    
    # --   
    $: ./configure
    $: make
    $: sudo make install
    

    Opensslのインストール
    # --   
    $: tar -zxf openssl-1.0.2n.tar.gz
    
    # --     
    $: cd openssl-1.0.2n
    
    # --   
    $: ./config --prefix=/usr/local --openssldir=/usr/local/ssl
    $: make
    $: sudo make install
    $: ./config shared --prefix=/usr/local --openssldir=/usr/local/ssl
    $: make clean
    $: make && make
    

    Nginx Moduleの解凍
    # --   ("."      )
    $: unzip -o -d . nginx-goodies-nginx-stick-module-ng.zip
    

    インストールNginx私のホームディレクトリ~/home/yurisaです
    # --   
    $: tar -zxf nginx-1.13.tar.gz
    
    # --     
    $: cd nginx-1.13
    
    # --   
    $: ./configure \
    > --sbin-path=/usr/local/nginx/nginx \
    > --with-http_ssl_module \
    > --with-pcre=/home/yurisa/src/pcre-8.41 \
    > --with-zlib=/home/yurisa/src/zlib-1.2.11 \
    > --with-openssl=/home/yurisa/src/openssl-1.0.21 \
    > --add-module=/home/yurisa/src/nginx-sticky-moudle-ng
    
    $: make
    $: sudo make install
    
    # --  nginx   sbin   
    $: cp /usr/local/nginx/nginx /usr/local/sbin/
    
    # --  nginx      
    $: sudo vim ~/.profile
    
    # --  ".profile"     
    export PATH=/usr/local/sbin:$PATH
    
    # --   source    
    $: source ~/.profile
    
    # --   nginx
    $: sudo nginx -c /usr/local/nginx/conf/nginx.conf
    
    # --      ,      (127.0.0.1:80)
    
    # --   nginx
    $: sudo nginx -s stop
    
    # --   nginx
    $: sudo nginx -s reload
    

    nginxの構成については後述する
    4.PostgreSQLデータベースのインストール
    PostgreSQLを個別にインストールする前にインストールする必要がある依存ライブラリ
    依存パッケージ名
    zlib
    readline
    インストールの開始
        $ :cd ~/src
        # --          ,       wget  ,         "~/src"   
        $ :wget https://ftp.postgresql.org/pub/source/v9.3.5/postgresql-9.3.5.tar.gz
        $ :tar -zxf postgresql-9.3.5.tar.gz 
        $ :cd postgresql-9.3.5
        $ :./configure
        $ :make
        $ :sudo make install
        # --         
        # --       
        $ :vim ~/.profile
        # --  .profile     
        export PGDATA=/home/yurisa/postgresql/data
        export PATH=/usr/local/pgsql/bin:$PATH
        # -- PATH  
        $ :source ~/.profile
        # --       
        $ :initdb
        # --      
        $ :pg_ctl start
        # --        postgres
        $ :createuser postgres -s(        ,  mysql root)
        # --         
        $ :psql -U postgres
        # --        (    "\")
        $ :\l          #      (L  )
        $ :\c dataname #  dataname   
        $ :\q          #     
        $ :\d          #         
        $ :\d tablename#  tablename    
    

    5.PHP取付
    インストール前に依存パッケージをインストールする必要があります
    インストールの開始
    # --   "src"    
    $: cd ~/src
    # --   php   
    $: tar -zxf php-7.1.12.tar.gz
    # --   php  
    $: cd php-7.1.12
    # --   
    $: ./configure \
    > --with-pgsql \
    > --with-pdo-pgsql \
    > --with-openssl \
    > --with-mcrypt \
    > --enable-zip \
    > --enable-mbstring \
    > --enable-fpm \
    > --enable-opcache \
    > --with-curl \
    > --with-readline \
    > --enable-pcntl  \
    > --enable-sysvmsg \
    > --with-zlib \
    > --with-gd \
    > --with-jpeg-dir \
    > --with-png-dir \
    > --with-freetype-dir
    
    # --   
    $: make
    $: sudo make install
    

    PHP関連構成
    # --   php.ini   "/usr/local/lib"   
    $: sudo cp php.ini-production /usr/local/lib/php.ini
    
    # --   php.ini  
    # --   "timezone"  
    date.timezone = "Asia/Shanghai"
    always_populate_raw_post_data = -1
    
    # --   max_execution_time      
    max_execution_time = 300
    

    「fpm」(nginxはfpmでphpを管理する)をインストールします.次の変更が必要なファイルはすべて検索できるわけではありません.検索できない場合は、ファイルの一番下に直接追加すればいいです.
    # --       ("~/src/php-7.1.12")    
    $: sudo cp sapi/fpm/php-fpm.conf /usr/local/etc/
    $: sudo cp sapi/fpm/php-fpm /usr/local/bin/
    
    # --   fpm  
    
    $: sudo vim /usr/local/etc/php-fpm.conf
    
    # --         (    "whoami"  ,"yurisa"     )
    user = yurisa
    group = yurisa
    
    # --   "clear_env"  
    clear_env=no
    # --   "request_terminate_timeout"  
    request_terminate_timeout=300
    # --   PHP    ,  "catch_workers_output",  
    catch_worker_output=yes
    

    「/usr/local/sbin」フォルダの下に「fpm」というファイルを新規作成し、「fpm」でphp-fpmを管理します.
    # --    fpm
    $: touch fpm
    

    次のスクリプトを「fpm」ファイルにコピー
    #!/bin/bash
        USER=`whoami`
    
        PHP_CGI=/usr/local/sbin/php-fpm
        PHP_CGI_NAME=`basename $PHP_CGI`
        RETVAL=0
    
        start() {
              echo -n "Starting PHP FPM: "
              $PHP_CGI
              RETVAL=$?
              echo "$PHP_CGI_NAME."
        }
        stop() {
              echo -n "Stopping PHP FPM: "
              killall -QUIT  -u $USER php-fpm
              RETVAL=$?
              echo "$PHP_CGI_NAME."
        }
    
        case "$1" in
            start)
              start
          ;;
            stop)
              stop
          ;;
            restart)
              stop
              start
          ;;
            *)
              echo "Usage: fpm {start|stop|restart}"
              exit 1
          ;;
        esac
        exit $RETVA
    # --     
    $: chmod 777 fpm
    # --   fpm      ,  
    $: php -v
    # --                  , "nginx"  
    
    # --   fpm
    $: sudo fpm start
    # --   
    $: sudo fpm restart
    # --   
    $: sudo fpm stop
    
    

    環境変数の変更はfpmを再起動する必要があります.プロファイルは後述します.
    インストールパッケージの後のリンクにはすでに表示されており、自分でダウンロードしたり、wget/gitを使用してダウンロードしたりすることができます.インストールパッケージはsrcディレクトリの下に配置されます.
    6.Redisインストール手順
        $ :cd ~/src
        $ :wget http://download.redis.io/releases/redis-3.0.2.tar.gz
        $ :tar -zxf redis-3.0.2.tar.gz
        $ :cd redis-3.0.2
        $ :make
        $ :sudo make install
        # --redis  
        $ :cd ~
        $ :mkdir redis
        # -- ~/src/redis-3.0.2/redis.conf   ~/redis/
        $ :cp ~/src/redis-3.0.2/redis.conf ~/redis/
        # --  redis.conf,  daemonize yes
        # --    redis
        $ :redis-server redis.conf &
        # --  redis client
        $ :redis-cli -p 6379
    

    7.SSDBインストール手順
        $ :cd ~/src
        $ :wget --no-check-certificate https://github.com/ideawu/ssdb/archive/master.zip
        $ :unzip master
        $ :cd ssdb-master
        $ :make clean
        $ :make
        # --ssdb        (/usr/local/ssdb)
        $ :sudo make install
        # --      
        $ :vim ~/.bash_profile
        # -- ssdb      
        export PATH=/usr/local/ssdb:$PATH
        # --      
        $ :source ~/.profile
    
        # --ssdb    
        $ :cd ~
        $ :mkdir ssdb
        # --  ssdb.conf ~/ssdb/  
        $ :cp ~/src/ssdb-master ~/ssdb
        # -- ~/ssdb     var   
        $ :mkdir ~/ssdb/var
    
        # --ssdb    (   ssdb.conf       )
        # --start ssdb-server
        $ :ssdb-server -d ssdb.conf
        # --start ssdb-client
        $ :ssdb-cli -p 8888
        # --stop ssdb-server
        $ :ssdb-server ssdb.conf -s stop
    

    8.Phalconフレームワーク取付
        $ :cd ~/src
        $ :wget https://github.com/phalcon/cphalcon/archive/v3.1.2.tar.gz -O cphalcon-3.1.2.tar.gz
        $ :tar -zxvf cphalcon-3.1.2.tar.gz
        $ :cd cphalcon-3.1.2/build
        $ :sudo ./install
    
        # --php  phalcon  
        $ :vim /usr/local/lib/php.ini
        # --  
        extension=phalcon.so

    9.Php Redis拡張の追加
        $ :cd ~/src
        $ :git clone https://github.com/phpredis/phpredis.git
        $ :cd phpredis/
        $ :phpize  # --  php  
        $ :./configure
        $ :make
        $ :sudo make isntall
    
        # --  
        $ :vim /usr/local/lib/php.ini
        extension = redis.so
    

    10.Php SSDB拡張の追加
    
        $ :cd ~/src
        $ :git clone https://github.com/jonnywang/phpssdb.git
        # --    
        $ :git checkout php7
        $ :phpize
        $ :./configure
        $ :make
        $ :sudo make install
    
    
        # --  
        $ :vim /usr/local/lib/php.ini
        extension = ssdb.so
    
        # --  fpm
        $ :fpm restart
    

    11.swooleインストール
    # --     
    
    $: cd swoole
    $: phpize
    $: ./configure
    $: make 
    $: sudo make install
    
    # --   
    $ :vim /usr/local/lib/php.ini
    extension = swoole.so
    

    12.Nginx関連構成
    複数のサイトの管理を容易にするために、サイトファイルを「vhost」ディレクトリの下に統合します.
    /usr/local/nginx/confディレクトリの下にvhostフォルダを新規作成
    # --   vhost   
    $: cd /usr/local/nginx/conf
    $: mkdir vhost
    

    nginxを変更します.confの中のファイルの内容は(その他の余分な構成はサイトファイルに入れます)
    #user  nobody;
    worker_processes  1;
    
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    
    #pid        logs/nginx.pid;
    
    
    events {
        worker_connections  1024;
    }
    
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
        #                  '$status $body_bytes_sent "$http_referer" '
        #                  '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  logs/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  65;
    
        #gzip  on;
    
        #          
        include vhost/*.conf;
    }
    

    サイトファイルを新規作成com.conf」アクセスパスは、自分で対応するフォルダ構造を構築すればよい
    server {
        listen      80;         #   
        server_name hello.com;  #     
        index   index.html index.htm index.php;
        set $root_path '/home/yurisa/projects/Hello_Php/';  #     
        root $root_path;
        try_files $uri $uri @rewrite;
    
        client_max_body_size 50m;
    
        location @rewrite {
           rewrite ^/(.*)$ /index.php?_url=/$1;
        }
    
         location ~ \.php {
                    fastcgi_pass 127.0.0.1:9000; #fpm
            #fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
                    fastcgi_index index.php;
    
                    include fastcgi_params;
                    fastcgi_split_path_info       ^(.+\.php)(/.+)$;
                    fastcgi_param PATH_INFO       $fastcgi_path_info;
                    fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
                    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            }
    
            location ~* ^/(css|img|js|flv|swf|download)/(.+)$ {
                 root $root_path;
             }
    
            location ~ /\.ht {
                    deny all;
            }
    
    }
    

    サイトをhostファイルに追加してアクセス
    $: sudo vim /etc/hosts
    # --       
    127.0.0.1 hello.com

    構成が成功したかどうかをテスト
    # --       (/home/yurisa/projects/Hello_Php/),         "Test"  
    
    $: mkdir Test
    # --  Test         "index.php"
    $: touch index.php

    「index.phpファイルにphpスクリプトを追加してテストします
    
        echo "+++++------++++++";
    ?>

    プロファイルを変更した後、nginxを再起動する必要があります.
    ブラウザでのアクセス
    hello.com/Test/index.php

    新しいプロジェクトを開いて新しいサイトを構成する必要がある場合、新しいサイトの名前を「world.com"ファイルは"でなければなりません.confの末尾
    # -- 1.       "hello.com"
    $: cp hello.com.conf world.com.conf
    
    # --                     
    
    server_name world.com;  #     
    set $root_path '/home/yurisa/projects/World_Php/';  #     
    
    # --              
    
    # --  "World_Php"     "test.php"    
    
    $: touch test.php
    

    「test.php」ファイルにphpテストスクリプトを追加する
    
        echo "+++++------++++++";
    ?>

    サイトをhostファイルに追加してアクセス
    $: sudo vim /etc/hosts
    # --       
    127.0.0.1 world.com

    プロファイルの変更、nginxの再起動
    $: sudo nginx -s reload

    ブラウザでのアクセス
    world.com/test.php

    13.よくある問題と解決
    1.nginxの起動に失敗しました(プロファイルが質問されていない場合は権限の問題が多いです)
    # --   nginx    
    $: cd /usr/local/nginx/logs
    $: tail -f error.log

    fpm起動に失敗しました.起動権限とfpm起動でアクセスする可能性のあるディレクトリの権限に注意してください.sudo fpm start起動に失敗した場合は、エラーメッセージに注意してください.
    phpがインストールされている拡張子の表示
    $: php -m

    phpを表示します.iniの位置
    $: php -i | grep php.ini

    14.依存パッケージおよびプロファイルのダウンロードアドレス
    アップロードファイルが制限されているため、2つの圧縮パッケージに分かれています
    php_conf_1 php_conf_2
    15.結語
    不足があれば直ちに指摘してください.ありがとうございます.