[LAMP]Linux(Centos)LAMP環境構築、LAMPソースコードインストール及びLAMPアーキテクチャ原理詳細


本章blogでは、[LAMP]Linux(Centos)LAMP環境構築、LAMPソースコードインストール、LAMPアーキテクチャの原理を詳しく説明し、phpとapacheの異なる組み合わせ方式のLAMPケースをそれぞれ配置した.
LAMP Server 
  • LAMP概要
  • LAMPウェブサイトのフレームワークは現在国際的に流行しているWebサービスアーキテクチャであり、このフレームワークはGNU/Linuxオペレーティングシステム、Apache HTTPサーバーを含む.MySQLクラス関係型データベース(RDBMS)およびPHPプログラミング言語.すべての構成製品はオープンソースクラスソフトウェアに属し、それ自体はそれぞれ独立したプログラムであるが、よく一緒に使用されるため、ますます高い互換性を持ち、動的なウェブサイトの構築やWebアプリケーションの開発に適しており、現在は国際的に流行しているフレームワークアーキテクチャとなっている.
    現在多くの流行の商業応用はすべてこのアーキテクチャを採用して、Java/J 2 EEアーキテクチャと比較して、LAMPはWeb資源が豊富で、軽量で、急速に開発するなどの特徴を持って、マイクロソフトのと.NETアーキテクチャに比べて、LAMPは汎用、プラットフォーム間、高性能、低価格の優位性を持っているため、LAMPは性能、品質、価格にかかわらず企業がウェブサイトを構築する第一選択プラットフォームである.
  • LAMPコンポーネント
  • GNU/Linuxオペレーティングシステム:
    LinuxはUnixのようなコンピュータオペレーティングシステムで、LinuxオペレーティングシステムにはRed Hat、SUSE、FreeBSD、Debian、CentOSなど、多くの異なるリリース版があります.
    Apache HTTPサーバー:
    LAMPのHTTPサーバの役割はApacheによって提供されるほか、nginxなどのWebサーバも含まれている.このうち、ApacheはPHPやcgiなどの動的言語の伝達を担当し、Nginxは負荷の均衡、逆解析、フォールトトレランス機能を提供し、互いに協力して使用し、HTTPサーバーの配置の第一選択モードとなっている.
    MySQLクラス関係型データベース(RDBMS):
    MySQLはLAMPの関係データベース管理システム(RDBMS)の元の役割として他のRDBMS(MariaDBなど)やNoSQLデータベースから(MongoDBのように)徐々に取って代わります.MariaDBはMySQLの創始者Michael Wideniusが主導して開発して、それはMySQLの1つの分岐に属して、主にオープンソースコミュニティが維持して、GPL授権許可を採用して、しかもMariaDBは完全にMySQLに互換します;MongoDBは1つのWeb規模のオープンソースNoSQLデータライブラリです.
    phpプログラミング言語:
    PHPはLAMPのアプリケーションプログラミング言語の元の役割として、他の言語から(PerlとPythonのように)共同で実行する.PHPはサーバー側のスクリプト言語であり、Web開発のために設計されている.PHPコードはwebサーバーが提供するPHPモジュールによってコンパイルされ、PHPコマンドをHTMLソースドキュメントに直接埋め込んで実行することをサポートし、実行効率はHTMLタグを完全に生成するCGIよりずっと高い.Perlは一連の高級、汎用、解釈の動的プログラミング言語である.PythonはPythonは、オブジェクト向け、コマンド、機能、プロセスのモデルなど、さまざまなプログラミング例をサポートしています.
    キャッシュまたはアクセラレータ:
    Apacheは独自のキャッシュモジュールを提供し、追加のSquidモジュールを使用してキャッシュすることもでき、いずれもApacheのアクセス応答能力を効果的に向上させることができます.PHPの加速はxcacheアクセラレータを使用し、phpダイナミックコンテンツを最適化し、キャッシュすることができ、PHPスクリプトのキャッシュ性能を向上させることができます.Memcachedは分散型メモリオブジェクトキャッシュシステムであり、通常、データベース負荷を軽減するために動的Webアプリケーションに使用される.
  • LAMPアーキテクチャ原理
  • クライアントはhttp request要求を送信し、サーバ(Apache)はweb要求を受け入れる.
    Apacheは、クライアント要求のリソースが静的要求であるかどうかを判断する.静的要求の場合、Apacheはクライアントが要求した静的リソース(.html,.html.html.shtmlなどのファイル)を、Http responseの形式でクライアントに直接転送する.
    php動的要求の場合、クライアントのphp要求はCGIプロトコルによってPHPプログラムに転送され、phpプログラムによってphp解析器が呼び出されてphp要求が実行される.
    PHPは、php要求を実行する際にmysqlデータベースに依存するか否かを判断する.mysqlデータベースに依存するなければ、php解析器によりphp関連スクリプトを直接実行し、解析後のスクリプトを再びCGIプロトコルによりApacheに返送する.サーバは、「静的リクエスト」のプロセスを実行します.
    mysqlデータベースに依存する場合、phpプログラムはphp-mysqlドライバを介してmysqlに関連付けられ、関連データを取得してphp解釈器に戻し、再び「mysqlデータベースに依存しない」プロセスを実行します.
  • apacheとphpの組み合わせ
  • Moduleメカニズム:phpは直接httpdのモジュール拡張で実行され、phpはhttpd機能の一部として機能します.httpプロセスを開始するとphp機能もオンになります.ここでpreforkモードはlibphp 5に依存する.soライブラリ、worker、eventモードはlibphp 5-ztsに依存する.soライブラリ
    CGIメカニズム:phpは独立したプロセスで動作し、php要求を解析する必要がある場合、httpdによってphpプロセスを起動します.複数のphpリクエストにより、複数のphpプロセスが開始され、リソースが消費され、全体的なパフォーマンスがmoduleメカニズムに及ばない
    Fast-CGIメカニズム:php-fpmサービスを生成し、phpプロセスをサービスphp-fpmによって管理する.ソケットに基づいてapacheと連絡し、apache workメカニズムと類似しており、親プロセス、サブプロセス、アイドルプロセスなどがあり、php処理能力を大幅に向上させた.
  • LAMPサーバ(server)実験構築
  • apacheとphpの組み合わせの違いに基づいて,LAMPコンパイル実装実験を実証する:実験1,phpはmoduleモードでアクセスし,実験2,apacheとfpm方式のphpを構成する.
    システム:Centos 6.6
    ソフトウェア:httpd-2.4.34 + mysql-5.5.61 + php-5.6.36 
    コンパイル環境:LAMP関連の依存環境をインストールし、「Server PlatForm Development」、「Development tools」、「selinuxとiptables機能をオフにする
    実験目的:インストールLAMPをコンパイルし、phpをmodeule方式でアクセスし、Fast-GIメカニズムで実行する.
    LAMPコンパイルインストール、phpをmoduleモードでアクセスするように構成
    一、コンパイル環境を構成し、「Server PlatForm Development」、「Development tools」をインストールし、selinuxとiptablesを閉じる
    [root@VM ~]# yum groupinstall "Development tools" -y    #         
    [root@VM ~]# yum groupinstall "Server Platform Development" -y    #           
    
    [root@VM ~]# vi /etc/selinux/config     #       ,  selinux  
    SELINUX=disabled    #    disabled
    #SELINUXTYPE=targeted  #     ,    #
    
    [root@VM ~]# chkconfig iptables off    #        iptables  
    [root@VM ~]# chkconfig ip6tables off
    
    [root@VM ~]# service iptables stop    #   iptables   
    [root@VM ~]# service ip6tables stop

         
    二、コンパイルインストールApache
  • コンパイルインストールapr(apr-1.6.3)
  • ダウンロード先:http://download.nextag.com/apache//apr/apr-1.6.3.tar.gz    
    [root@VM ~]# tar xf apr-1.6.3.tar.gz      
    [root@VM ~]# cd apr-1.6.3    
    [root@VM apr-1.6.3]# ./configure --prefix=/usr/local/apr
    [root@VM apr-1.6.3]# make && make install
  • コンパイルインストールapr-util(apr-util-1.6.1)
  • ダウンロード先:http://download.nextag.com/apache//apr/apr-util-1.6.1.tar.gz 
    [root@VM ~]# tar xf apr-util-1.6.1.tar.gz 
    [root@VM ~]# cd apr-util-1.6.1  
    [root@VM apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
    [root@VM apr-util-1.6.1]# make && make install
  • コンパイルインストールhttpd(httpd-2.4.34)
  • ダウンロード先:http://mirror.reverse.net/pub/apache//httpd/httpd-2.4.34.tar.gz 
    [root@VM  ~]#  yum install gcc gcc-c++ pcre pcre-devel  #       
    [root@VM ~]# cd httpd-2.4.34  #     httpd
    [root@VM httpd-2.4.34]# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable--ssl --enable-cgi --enable-rewrite --with-zlib\
    --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-modeles=most --enable-mpms-shared=all --with-mpm=event   
    [root@VM httpd-2.4.34]# make && make install
    
    [root@VM bin]# vi /etc/profile.d/http.sh    #       
    export PATH=/usr/local/apache/bin:$PATH
    [root@VM bin]# . /etc/profile.d/http.sh   #       
    
    [root@VM apache]# ln -sv /usr/local/apache/include/ /usr/include/httpd  #   httpd include   
    `/usr/include/httpd' -> `/usr/local/apache/include/'
    
    [root@VM apache]# vi /etc/man.config  #   httpd man    
    MANPATH /usr/local/apache/man
        :
    # ./configure --help :        ,              
        --prefix=PREFIX :        
        --sbindir=DIR:           
        --enable-so   :     DSO        ,             
        --enable--ssl  :SSL/TLS support (mod_ssl)
        --enable-cgi   :  CGI    
        --enable-rewrite :           ,     
        --with-zlib=DIR:  zlib 
        --with-pcre=DIR :     pcre lib 
        --with-apr=DIR :  apr    
        --with-apr-util=DIR :  apr-util     
        --enable-modules=most :    DSO       
        --with-mpm=prefork|worker|event :            MPM  
        --enable-mpms-shared=all  :      MPM        DSO         
        
    configure          ,        https://httpd.apache.org/docs/2.4/en/programs/configure.html
  • Apacheサービスを開始し、検証し、apacheのプロファイルを変更し、PidFileパスを設定します(デフォルトは/usr/local/apache/logs/http.pid)
  • .
    [root@VM ~]# vi /etc/httpd/httpd.conf 
    Pidfile "/var/run/httpd/httpd.pid"    #     , Pidfile  httpd.pid  
    
    [root@VM ~]# apachectl start    #   apache  
    [root@VM ~]# ss -tunl | grep 80
    tcp    LISTEN     0      128                   :::80                   :::*     
    
    [root@VM ~]# curl      #   apache  
    

    It works!


       
    三、コンパイルインストールMysql
  • ハードraidでlvmを作成することを推奨し、mysqlデータ格納ディレクトリとして独立したlvmディスクを使用し、mysqlデータ
  • のバックアップを容易にする
    [root@VM ~]# fdisk  /dev/sda    #       /dev/sda4 ,        8e(LVM)
    
    Command (m for help): n    #     
    Command action
       e   extended
       p   primary partition (1-4)
    
    Command (m for help): p    #      
    Selected partition 4
    First cylinder (10976-16709, default 10976): 
    Using default value 10976
    Last cylinder, +cylinders or +size{K,M,G} (10976-16709, default 16709): 
    Using default value 16709
    
    Command (m for help): t    #       
    Partition number (1-4): 4
    Hex code (type L to list codes): 8e
    Changed system type of partition 4 to 8e (Linux LVM)
    
    Command (m for help): p    #       ,  /dev/sda4 Linux LVM    
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sda1   *           1         256     2048000   83  Linux
    Partition 1 does not end on cylinder boundary.
    /dev/sda2             256       10454    81920000   8e  Linux LVM
    /dev/sda3           10454       10976     4194304   82  Linux swap / Solaris
    /dev/sda4           10976       16709    46051714+  8e  Linux LVM
    
    Command (m for help): w    #       
    The partition table has been altered!
    
    [root@VM ~]# partx -a /dev/sda    #         
    [root@VM ~]# kpartx -af /dev/sda
    
    [root@VM ~]# cat /proc/partitions     #          /dev/sda4  
    major minor  #blocks  name
    
       8        0  134217728 sda
       8        1    2048000 sda1
       8        2   81920000 sda2
       8        3    4194304 sda3
       8        4   46051714 sda4
    
    [root@VM ~]# mke2fs -t ext4 /dev/sda4    #      /dev/sda4
    
    [root@VM ~]# pvcreate /dev/sda4    #   pv
      Physical volume "/dev/sda4" successfully created
    
    [root@VM ~]# pvs    #   pv
    PV         VG   Fmt  Attr PSize  PFree 
    /dev/sda2  vg0  lvm2 a--u 78.12g  2.92g
    /dev/sda4       lvm2 ---- 43.92g 43.92g
    
    [root@VM ~]# vgextend vg0  /dev/sda4    #   vg0
      Volume group "vg0" successfully extended    
    [root@VM ~]# vgs    #   vg 
      VG   #PV #LV #SN Attr   VSize   VFree 
      vg0    2   4   0 wz--n- 122.03g 46.84g
      
    [root@VM ~]# lvcreate -n data -L 20G vg0    #   lvm  data 
      Logical volume "data" created.  
    
    [root@VM ~]# lvs
    LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
    data vg0  -wi-a----- 20.00g      
    
    [root@VM ~]# mke2fs -t ext4 /dev/mapper/vg0-data    #          
    
    [root@VM ~]# vi /etc/fstab 	#         /dev/mapper/vg0-data   
    /dev/mapper/vg0-data    /data                   ext4    defaults        0 0	
    
    [root@VM ~]# mount -a    #       
    [root@VM ~]# mount    #       
    /dev/mapper/vg0-data on /data type ext4 (rw)
  • コンパイルインストールmysql
  • ダウンロード先:https://mirrors.163.com/mysql/Downloads/MySQL-5.5/mysql-5.5.61.tar.gz 
    [root@VM ~]# tar xf mysql-5.5.61.tar.gz     #   mysql   
    
    [root@VM ~]# useradd -s /sbin/nologin -r mysql    #       mysql
    [root@VM ~]# id mysql
    uid=498(mysql) gid=498(mysql) groups=498(mysql)
    
    [root@VM ~]# cd /data/    #   mysql     /data/sqldata ,      
    [root@VM data]# mkdir sqldata
    [root@VM data]# chown root:mysql sqldata/
     
    [root@VM ~]# yum install ncurses-devel bison bison-devel   #   Epel yum ,  mysql    
    
    [root@VM ~]# cd mysql-5.5.61    #     mysql
    
    [root@VM mysql-5.5.61]# cmake . \
    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql  \
    -DMYSQL_DATADIR=/data/sqldata   \
    -DSYSCONFDIR=/etc \
    -DWITH_MYISAM_STORAGE_ENGINE=1 \
    -DWITH_INNOBASE_STORAGE_ENGINE=1 \
    -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
    -DWITH_MEMORY_STORAGE_ENGINE=1 \
    -DMYSQL_UNIX_ADDR=/var/run/mysql/mysql.sock \
    -DMYSQL_TCP_PORT=3306 \
    -DWITH_PARTITION_STORAGE_ENGINE=1  \
    -DEXTRA_CHARSETS=all \
    -DDEFAULT_CHARSET=utf8 \
    -DDEFAULT_COLLATION=utf8_general_ci \
    -DWITH_DEBUG=0 
    [root@VM mysql-5.5.61]# make && make install
    
    [root@VM mysql]# vi /etc/profile.d/mysql.sh    #   mysql    
    export PATH=/usr/local/mysql/bin:$PATH
    
    [root@VM mysql]# . /etc/profile.d/mysql.sh    #       
    
    [root@VM mysql]# ln -sv /usr/local/mysql/include/ /usr/include/mysql    #   mysql include   
    `/usr/include/mysql' -> `/usr/local/mysql/include/'
    
    [root@VM mysql]# vi /etc/man.config     #   mysql      
    MANPATH /usr/local/mysql/man
    
    [root@VM mysql]# vi /etc/ld.so.conf.d/mysql.conf    #   mysql lib ,     
    /usr/local/mysql/lib
    [root@VM lib]# ldconfig -v | grep mysql    #   lib 
    /usr/local/mysql/lib:
    	libmysqlclient.so.18 -> libmysqlclient_r.so.18.0.0
    /usr/lib64/mysql:
    	libmysqlclient_r.so.16 -> libmysqlclient_r.so.16.0.0
    	libmysqlclient.so.16 -> libmysqlclient.so.16.0.0
    #    
    # cmake . \
    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql    #  MySQL      
    -DMYSQL_DATADIR=/data/sqldata            # MySQL         
    -DSYSCONFDIR=/etc                        # MySQL            
    -DWITH_MYISAM_STORAGE_ENGINE=1            # MySQL      
    -DWITH_INNOBASE_STORAGE_ENGINE=1          # MySQL      
    -DWITH_ARCHIVE_STORAGE_ENGINE=1          # MySQL      
    -DWITH_MEMORY_STORAGE_ENGINE=1            # MySQL      
    -DMYSQL_UNIX_ADDR=/var/run/mysql/mysql.sock       # MySQL sock  
    -DMYSQL_TCP_PORT=3306     # MySQL     
    -DWITH_PARTITION_STORAGE_ENGINE=1  
    -DEXTRA_CHARSETS=all      #  MySQL         
    -DDEFAULT_CHARSET=utf8    #   MySQL       utf8
    -DDEFAULT_COLLATION=utf8_general_ci    #  MySQL       
    -DWITH_DEBUG=0         #       
    
                。
  • mysql初期化、サービス開始
  • [root@VM mysql]# chown -R root:mysql /usr/local/mysql    #   /usr/local/mysql     
    
    [root@VM mysql]# ./scripts/mysql_install_db --datadir=/data/sqldata/ --user=mysql    #    mysql  
    Installing MySQL system tables...
    180819 14:21:16 [Note] Ignoring --secure-file-priv value as server is running with --bootstrap.
    180819 14:21:16 [Note] ./bin/mysqld (mysqld 5.5.61) starting as process 65052 ...
    OK
    Filling help tables...
    180819 14:21:17 [Note] Ignoring --secure-file-priv value as server is running with --bootstrap.
    180819 14:21:17 [Note] ./bin/mysqld (mysqld 5.5.61) starting as process 65059 ...
    OK
    To start mysqld at boot time you have to copy
    support-files/mysql.server to the right place for your system
    
    [root@VM mysql]# ln -sv  /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld    #     
    `/etc/init.d/mysqld' -> `/usr/local/mysql/support-files/mysql.server'
    
    [root@VM run]# vi /etc/my.cnf     #   mysql       
    [mysqld]
    datadir=/data/sqldata    #   data  
    socket=/var/run/mysql/mysql.sock    #   sock  
    user=mysql    #       mysql
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    
    [mysqld_safe]
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid    #   pid  
    
    [root@VM run]# mkdir /var/run/mysql    #   /var/run/mysql   ,  pid sock    
    [root@VM run]# chown -R mysql.mysql /var/run/mysql    #       
    
    [root@VM run]# chkconfig --add mysqld    #   mysqld    
    [root@VM run]# chkconfig mysqld on
    
    [root@VM run]# service mysqld start    #   mysqld  
    Starting MySQL SUCCESS! 
    [root@VM run]# ss -tunl | grep 3306
    tcp    LISTEN     0      50                     *:3306                  *:*
  • mysqlデータベースの管理、匿名ユーザーの削除、パスワードの作成、testデータベースの削除などの操作
  • [root@VM mysql]# mysql    #  mysql    
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 1
    Server version: 5.5.61 Source distribution
    
    mysql> select version();
    +-----------+
    | version() |
    +-----------+
    | 5.5.61    |
    +-----------+
    1 row in set (0.00 sec)
    
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | test               |
    +--------------------+
    4 rows in set (0.00 sec)
    
    mysql> drop database test;
    Query OK, 0 rows affected (0.03 sec)
    
    mysql> show tables;
    +---------------------------+
    | Tables_in_mysql           |
    +---------------------------+
    | columns_priv              |
    | db                        |
    | event                     |
    | func                      |
    | user                      |
    +---------------------------+
    
    mysql> select user,host,password from user;
    +------+-----------+----------+
    | user | host      | password |
    +------+-----------+----------+
    | root | localhost |          |
    | root | vm        |          |
    | root | 127.0.0.1 |          |
    | root | ::1       |          |
    |      | localhost |          |
    |      | vm        |          |
    +------+-----------+----------+
    6 rows in set (0.00 sec)
    
    mysql> drop user root@'::1';    #       
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> drop user ''@'localhost';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> drop user ''@'vm';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> UPDATE user SET password=PASSWORD('Hello123abc.com') WHERE user='root';    #   root    
    Query OK, 4 rows affected (0.01 sec)
    Rows matched: 4  Changed: 4  Warnings: 0
    
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)
  • mysqlに対してユーザーとパスワード、ホストプロファイルを作成し、パスワードを使用せずに
  • にログインすることができる.
    [root@VM mysql]# vi /root/.my.cnf    #       ,          
    [mysql]
    user = root
    host = localhost
    password = Hello123abc.com
    
     :   MySQL   ,         my.cnf。
        :/etc/my.cnf -->$MYSQL_Base/my.cnf --> --defaults-extra-file=/path/to/some_my.cnf -->.my.cnf

    四、PHPのコンパイルインストール
  • php-5.6をコンパイルインストールする.36

  • ダウンロード先:http://at2.php.net/distributions/php-5.6.36.tar.gz 
    [root@VM ~]# yum -y install libxml2-devel openssl-devel openssl bzip2-devel libmcrypt libmcrypt-devel mcrypt   
    #   Epel yum ,      
    [root@VM  ~]# cd php-5.6.36
    
    [root@VM php-5.6.36]#  ./configure --prefix=/usr/local/php \
    --with-mysql=/usr/local/mysql  --with-openssl  \
    --with-mysqli=/usr/local/mysql/bin/mysql_config \
    --enable-mbstring --with-freetype-dir   \
    --with-jpeg-dir  --with-png-dir   \
    --with-zlib  --with-bz2   \
    --with-mcrypt  --with-libxml-dir=/usr \
    --enable-sockets  --with-apxs2=/usr/local/apache/bin/apxs \
    --with-config-file-path=/etc  --with-config-file-scan-dir=/etc/php.d \
    --enable-maintainer-zts  
    
    [root@VM php-5.6.36]# make && make install
    
    [root@VM php-5.6.36]# cp php.ini-production /etc/php.ini    #  php      
    
    [root@VM ~]# vi /etc/profile.d/php.sh     #      
    export PATH=/usr/local/php/bin:$PATH 
      
    [root@VM ~]# ln -sv /usr/local/php/include/ /usr/include/php    #   php    
    `/usr/include/php' -> `/usr/local/php/include/'
        ;
    --prefix=/usr/local/php  #   php     
    --with-mysql=/usr/local/mysql #   mysql     
    --with-mysqli=/usr/local/mysql/bin/mysql_config #    mysql php     
    --with-openssl   #  ssl  
    --enable-mbstring    #           
    --with-freetype-dir    #   freetype    ,        
    --with-jpeg-dir --with-png-dir #   jpep     ,  pnp    
    --with-zlib    #      
    --with-libxml-dir=/usr   #   xml    
    --enable-sockets    #           
    --with-mcrypt      #            
    --with-config-file-path=/etc    #   php       (/etc/php.ini)
    --with-config-file-scan-dir=/etc/php.d  #   php         (/etc/php.d/*.ini)
    --with-bz2  #  bz2    
    --enable-maintainer-zts   #             Apache   mpm  ,
  • php
  • をサポートするためにapacheを構成する
    [root@VM ~]# vi /etc/httpd/httpd.conf    #  httpd   php 
        <1>   php    
        LoadModule php5_module        modules/libphp5.so
        
        <2>      
       AddType application/x-httpd-php  .php
       AddType application/x-httpd-php-source  .phps
    
        <3>    DirectoryIndex index.html 
          :
        DirectoryIndex  index.php  index.html
    
    [root@VM ~]# apachectl stop    #   httpd  
    [root@VM ~]# apachectl start
  • php機能とapache、phpとmysql接続
  • を検証
    [root@VM ~]# vi /usr/local/apache/htdocs/index.php    #   apache   php       
    
    
    [root@VM ~]# vi /usr/local/apache/htdocs/mysql.php    #   php   mysql       
    

        
        
    五、php加速器xcacheを取り付ける
  • xcache
  • をインストール
    ダウンロード先:http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz 
    [root@VM ~]# tar xf xcache-3.2.0.tar.gz     
    [root@VM ~]# cd xcache-3.2.0
    
    [root@VM xcache-3.2.0]# phpize #   ,  yum install autoconfig   。
    Configuring for:
    PHP Api Version:         20131106
    Zend Module Api No:      20131226
    Zend Extension Api No:   220131226
    Cannot find autoconf. Please check your autoconf installation and the
    $PHP_AUTOCONF environment variable. Then, rerun this script.
    
    [root@VM xcache-3.2.0]# phpize     #   php  
    Configuring for:
    PHP Api Version:         20131106
    Zend Module Api No:      20131226
    Zend Extension Api No:   220131226
    
    [root@VM xcache-3.2.0]# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config  #     
    [root@VM xcache-3.2.0]# make && make install    #   ,         
    Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-zts-20131226/
    
    [root@VM ~]# cp xcache.ini /etc/php.d/
    [root@VM ~]# vi /etc/php.d/xcache.ini
    extension = /usr/local/php/lib/php/extensions/no-debug-zts-20131226/xcache.so    #     ,      
    
    [root@VM ~]# apachectl stop    #   httpd  
    [root@VM ~]# apachectl start
  • 検証xcacheインストール
  • 六、phpMyAdmin-4.8をインストールする.2,mysqlの管理
  • phpMyAdmin-4.8をインストールする.2,php 5をサポートする.5-php 7.2,mysql-5.5以上
  • ダウンロード先:https://files.phpmyadmin.net/phpMyAdmin/4.8.2/phpMyAdmin-4.8.2-all-languages.tar.xz 
    [root@VM ~]# tar xf phpMyAdmin-4.8.2-all-languages.tar.xz
    
    [root@VM ~]# mv phpMyAdmin-4.8.2-all-languages /usr/local/apache/htdocs/pmyadmin
  • phpMyadminログインhttp://192.168.4.160/pmyadmin検証
  •     
  • エラー障害解決
  •     
    1)             :
        :   config.default.php    108  $cfg[‘blowfish_secret’]   ,          32   。
    [root@VM pmyadmin]# vi libraries/config.default.php   #  phpMyAdmin   libraries    config.default.php
    $cfg['blowfish_secret'] = '[email protected]@blog.51cto.com/itwish';
    
    2)$cfg['TempDir'] (./tmp/)            , phpMyAdmin        .
        :   phpmyadmin      tmp  ,   777  
    [root@VM pmyadmin]# mkdir -m 777 tmp

    七、圧力テスト
  • abツールテスト
  • [root@VM pmyadmin]# ulimit -n 3000
    [root@VM pmyadmin]# ab -c 200 -n 2000 http://192.168.4.160/pmyadmin/index.php
    This is ApacheBench, Version 2.3 
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking 192.168.4.160 (be patient)
    
    
    Server Software:        Apache/2.4.34
    Server Hostname:        192.168.4.160
    Server Port:            80
    
    Document Path:          /pmyadmin/index.php
    Document Length:        14114 bytes
    
    Concurrency Level:      200
    Time taken for tests:   50.732 seconds
    Complete requests:      68
    Failed requests:        50
       (Connect: 0, Receive: 0, Length: 50, Exceptions: 0)
    Total transferred:      1237144 bytes
    HTML transferred:       1115484 bytes
    Requests per second:    1.34 [#/sec] (mean)
    Time per request:       149211.594 [ms] (mean)
    Time per request:       746.058 [ms] (mean, across all concurrent requests)
    Transfer rate:          23.81 [Kbytes/sec] received
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        0   42  10.0     45      48
    Processing:   303 3041 2912.9   2091   15081
    Waiting:       92 2496 2183.3   1949   13240
    Total:        303 3083 2914.7   2120   15127
    
    Percentage of the requests served within a certain time (ms)
      50%   2120
      66%   2458
      75%   3025
      80%   3069
      90%   5107
      95%   9875
      98%  13559
      99%  15127
     100%  15127 (longest request)
     
     
         ,  xcache      ,        

    LAMPコンパイルインストール、php-fpmモードを実現
    一、コンパイル環境を構成し、「Server PlatForm Development」、「Development tools」をインストールし、selinuxとiptablesを閉じる.
    二、コンパイルインストールApache、上記の構成と同じ
    三、コンパイルインストールMysql、上記の構成と同じ
    四、コンパイルインストールPHPはFast-Giをサポートする
  • php-5.6をコンパイルインストールする.36

  • ダウンロード先:http://at2.php.net/distributions/php-5.6.36.tar.gz 
    [root@VM ~]# yum -y install libxml2-devel openssl-devel openssl bzip2-devel libmcrypt libmcrypt-devel mcrypt   
    #   Epel yum ,      
    [root@VM ~]# cd php-5.6.36
    
    [root@VM php-5.6.36]#  ./configure --prefix=/usr/local/php \
    --with-mysql=/usr/local/mysql  --with-openssl  \
    --with-mysqli=/usr/local/mysql/bin/mysql_config \
    --enable-mbstring --with-freetype-dir   \
    --with-jpeg-dir  --with-png-dir   \
    --with-zlib  --with-bz2 \
    --with-mcrypt  --with-libxml-dir=/usr \
    --enable-sockets  --enable-fpm \
    --with-config-file-path=/etc  --with-config-file-scan-dir=/etc/php.d 
    
    [root@VM php-5.6.36]# make && make install
    
    
    [root@VM ~]# vi /etc/profile.d/php.sh     #      
    export PATH=/usr/local/php/bin:$PATH 
      
    [root@VM ~]# ln -sv /usr/local/php/include/ /usr/include/php    #   php    
    `/usr/include/php' -> `/usr/local/php/include/'
    #   , Module    ,    Fast-CGI   
       --enable-maintainer-zts,   php  httpd   。
       --with-apxs2=/usr/local/apache/bin/apxs  --enable-fpm
  • php-fpmサービス
  • を構成して起動する
    [root@VM ~]# cd php-5.6.36
    [root@VM php-5.6.36]# cp php.ini-production /etc/php.ini    #  php      
    
    [root@VM php-5.6.36]# cp sapi/fpm/init.d.php-fpm  /etc/init.d/php-fpm      #   php-fpm    
    
    [root@VM php-5.6.36]# chmod +x /etc/init.d/php-fpm    #         
    [root@VM php-5.6.36]# chkconfig --add php-fpm
    [root@VM php-5.6.36]# chkconfig php-fpm on
    
    [root@VM php-5.6.36]# cp /usr/local/php/etc/php-fpm.conf.default   /usr/local/php/etc/php-fpm.conf   #         
    
    [root@VM php-5.6.36]# vi /usr/local/php/etc/php-fpm.conf    #   php-fpm     
    pid = /var/run/php-fpm.pid    #      /usr/local/php/var/run/php-fpm.pid ,  pid  
    pm.max_children = 5    #           
    pm.start_servers = 2    #         
    pm.min_spare_servers = 1    #         
    pm.max_spare_servers = 3    #         
    pm.max_requests = 500    #         
    
    [root@VM php-5.6.36]# service php-fpm start
    [root@VM ~]# ss -tunl | grep 9000
    tcp    LISTEN     0      128            127.0.0.1:9000                  *:*
  • apacheはfast-CCI
  • をサポートするように構成されている.
    [root@VM ~]# vi /etc/httpd/httpd.conf    #  httpd   php 
        <1>   php    
        LoadModule proxy_module modules/mod_proxy.so
        LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
        
        <2>   apache   php  
         AddType application/x-httpd-php  .php
         AddType application/x-httpd-php-source  .phps
    
        <3>    DirectoryIndex index.html 
            :
        DirectoryIndex  index.php  index.html
        
        <4>   httpd  fast-CGI,      ,    
        DocumentRoot "/var/www/html"
                ProxyRequests off
                ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
            
        <5>   fast-CGI      ,      ,    
        
            ProxyRequests off
            ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
           
             
    [root@VM ~]# apachectl stop    #   httpd  
    [root@VM ~]# apachectl start
  • php機能とapache、phpとmysql接続
  • を検証
    [root@VM ~]# vi /usr/local/apache/htdocs/index.php    #   apache   php       
    

        
    五、php加速器xcacheを取り付け、上記の構成と同じ
    六、phpMyAdmin-4.8をインストールする.2、mysqlを管理し、上記の構成と同じ
    七、圧力テスト、上記の構成と同じ
    これでLAMPコンパイル実装実験を完了し,phpがmoduleモードでapacheとfpm方式のphpにアクセスし構成することをそれぞれ実現した.
    転載は出典を明記してください.https://blog.51cto.com/itwish/2161699      
    転載先:https://blog.51cto.com/itwish/2161699