Linux6下yum方式安裝配置LAMP平臺

leshami發表於2016-07-15

Linux下搭建LAMP是經典的不能再經典的中小企業站點構建平臺。它的全稱是Linux+Apache+Mysql+PHP,常用來搭建動態網站,本身都是各自獨立的程式,但是因為常被放在一起使用,擁有了越來越高的相容度,共同組成了一個強大的Web應用程式平臺。因此在網路上也有比叫有名的LAMP一鍵安裝解決方案。但是對於運維人員來講,有必要了解其完成的安裝過程。本文主要描述基於CentOS 6 下使用yum方式來快速構建LAMP平臺(Linux安裝忽略)。

一、準備yum源(本文使用了163映象)

# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# wget http://mirrors.163.com/.help/CentOS6-Base-163.repo -P /etc/yum.repos.d/
# yum clean all
# yum makecache

二、安裝apache httpd

詳細可以參考:Linux下安裝Apache httpd

###檢查是否已安裝httpd
# rpm -qa|grep httpd
        httpd-tools-2.2.15-45.el6.centos.x86_64
        httpd-2.2.15-45.el6.centos.x86_64

# yum -y install httpd   ###此時我們看到httpd的小版本從45變成了53
# rpm -qa|grep httpd
        httpd-tools-2.2.15-53.el6.centos.x86_64
        httpd-2.2.15-53.el6.centos.x86_64

###查詢生成的相關配置檔案
# rpm -qc httpd|grep conf
        /etc/httpd/conf.d/welcome.conf
        /etc/httpd/conf/httpd.conf
        /etc/httpd/conf/magic
        /etc/sysconfig/htcacheclean
        /etc/sysconfig/httpd

###啟動httpd
# /etc/init.d/httpd start
        Starting httpd:                                            [  OK  ]
# netstat -nltp|grep 80
        tcp        0      0 :::80          :::*      LISTEN      7621/httpd

###驗證web服務
# curl -I http://localhost
        HTTP/1.1 403 Forbidden
        Date: Tue, 12 Jul 2016 09:25:15 GMT
        Server: Apache/2.2.15 (CentOS)
        Accept-Ranges: bytes
        Content-Length: 4961
        Connection: close
        Content-Type: text/html; charset=UTF-8

###編寫一個php頁面測試
# echo "
> <html>
> <h1>This is a php test page.</h1>
> <?php
> phpinfo();
> ?>
> </html>">>/var/www/html/index.php  

###測試結果為phpinfo函式沒有被解釋
# curl http://localhost/index.php
        <html>
        <h1>This is a php test page.</h1>
        <?php
        phpinfo();
        ?>
        </html>

三、安裝php

###安裝php,同時會安裝依賴包
# yum install php
        Installing:
         php                      x86_64     5.3.3-47.el6      base     1.1 M
        Installing for dependencies:
         php-cli                  x86_64     5.3.3-47.el6      base     2.2 M
         php-common               x86_64     5.3.3-47.el6      base     530 k

###檢視php安裝清單 
# rpm -ql php
        /etc/httpd/conf.d/php.conf
        /usr/lib64/httpd/modules/libphp5.so
        /var/lib/php/session
        /var/www/icons/php.gif 

###檢視php的配置檔案 
# grep -vE "^#|^$" /etc/httpd/conf.d/php.conf 
        <IfModule prefork.c>
          LoadModule php5_module modules/libphp5.so
        </IfModule>
        <IfModule worker.c>
          LoadModule php5_module modules/libphp5-zts.so
        </IfModule>
        AddHandler php5-script .php
        AddType text/html .php
        DirectoryIndex index.php

###在上面的配置檔案中,由於php以模組化方式與httpd結合工作,根據httpd的mpm模式不同,
###其所需要的php模組格式有所不同;    prefork模式使用libphp5模組    worker和event模式則使用libphp5-zts模組

###重啟httpd已使得php模組生效
# /etc/init.d/httpd configtest
        Syntax OK

# /etc/init.d/httpd restart
        Stopping httpd:                 [  OK  ]
        Starting httpd:                 [  OK  ]

###驗證php模組已經被載入
# httpd -M |grep php
        php5_module (shared)

###驗證php頁面 
# curl http://localhost/index.php|more
        <html>
        <h1>This is a php test page.</h1>
        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
        <html><head>
        <style type="text/css">
        body {background-color: #ffffff; color: #000000;}
              ...........

###切換為使用worker工作模式
# cp /etc/sysconfig/httpd /etc/sysconfig/httpd.bk
# sed -i "s@#HTTPD=/usr/sbin/httpd.worker@HTTPD=/usr/sbin/httpd.worker@g" /etc/sysconfig/httpd
# grep -vE "^#|^$" /etc/sysconfig/httpd
        HTTPD=/usr/sbin/httpd.worker

###從下面的提示中,我們需要使用php5zts模組
# /etc/init.d/httpd restart
        Stopping httpd:                                            [  OK  ]
        Starting httpd: httpd.worker: Syntax error on line 221 of /etc/httpd/conf/httpd.conf: 
        Syntax error on line 9 of /etc/httpd/conf.d/php.conf: Cannot load /etc/httpd/modules/libphp5-zts.so 
        into server: /etc/httpd/modules/libphp5-zts.so: cannot open shared object file: No such file or directory
                                                                   [FAILED]
###安裝php-zts模組
# yum -y install php-zts
# rpm -ql php-zts
        /usr/lib64/httpd/modules/libphp5-zts.so

# ps -ef|grep http   ###檢視httpd,已經切換為使用worker模式
        root      10339      1  0 04:35 ?        00:00:00 /usr/sbin/httpd.worker
        apache    10341  10339  0 04:35 ?        00:00:00 /usr/sbin/httpd.worker
        apache    10342  10339  0 04:35 ?        00:00:00 /usr/sbin/httpd.worker
        apache    10343  10339  0 04:35 ?        00:00:00 /usr/sbin/httpd.worker
        apache    10344  10339  0 04:35 ?        00:00:00 /usr/sbin/httpd.worker

四、安裝mysql

# rpm -qa|grep mysql
        mysql-libs-5.1.73-5.el6_6.x86_64

# yum install mysql-server  
# rpm -qa|grep mysql      
        mysql-5.1.73-7.el6.x86_64
        mysql-libs-5.1.73-7.el6.x86_64
        mysql-server-5.1.73-7.el6.x86_64

###檢視mysql安裝產生的檔案
# rpm -ql mysql-server
# rpm -ql mysql

# more /etc/my.cnf
        [mysqld]
        datadir=/var/lib/mysql
        socket=/var/lib/mysql/mysql.sock
        user=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

# /etc/init.d/mysqld start
# /usr/bin/mysqladmin -u root password `***`
# mysql -uroot -p
mysql> show variables like `port`;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 3306  |
+---------------+-------+

###安裝php連線mysql驅動
#   yum install php-mysql

###檢視安裝完畢後生產的檔案
# rpm -ql php-mysql
        /etc/php.d/mysql.ini      ### Author : Leshami
        /etc/php.d/mysqli.ini     ### Blog   : http://blog.csdn.net/leshami
        /etc/php.d/pdo_mysql.ini
        /usr/lib64/php/modules/mysql.so
        /usr/lib64/php/modules/mysqli.so
        /usr/lib64/php/modules/pdo_mysql.so

###測試到mysql的連線
#vim  /var/www/html/connmysql.php
<?php
    $conn = mysql_connect(`127.0.0.1`,`root`,`***`);
    if ($conn)
        echo "succ";
    else
        echo "failure";
    mysql_close();
?>

# curl http://localhost/connmysql.php
        succ

五、小結

1、apache httpd與php之間的銜接是通過模組化的方式來實現。
2、對於perfork模式使用libphp5模組,worker和event模式則使用libphp5-zts模組。
3、php與mysql則通過安裝php-mysql包來實現php到mysql的訪問。


相關文章