【Linux】LAMP架構之以模組方式讓php和httpd搭檔工作

來源:互聯網
上載者:User
LAMP就是:Linux,Apache,Mysql,PHP的首字母縮寫。


實驗環境

Linux :CentOS-3 2.6.32-431.el6.x86_64

Apache:httpd-2.4.16.tar.gz

Mysql :mysql-5.5.24.tar.gz

PHP :php-5.6.11.tar.bz2


安裝順序為:Apahce --> Mysql --> PHP


實驗步驟


方便實驗先關閉iptables和selinux

[root@CentOS-3 ~]# service iptables stop

[root@CentOS-3 ~]# setenforce 0


安裝以下編譯工具和依賴包

[root@CentOS-3 ~]# yum -y install gcc \

> gcc-c++ \

> make \

> cmake \

> pcre-devel


安裝apr和apr-util

apr是為了搭建apache的運行環境


建立apr和apr-util安裝目錄

[root@CentOS-3 ~]# mkdir /usr/local/apr

[root@CentOS-3 ~]# mkdir /usr/local/apr-util


將源碼包解壓

[root@CentOS-3 ~]# tar xf /mnt/apr-1.5.2.tar.gz -C /usr/local/src/

[root@CentOS-3 ~]# tar xf /mnt/apr-util-1.5.4.tar.gz -C /usr/local/src/

切換到源碼包所在路徑

[root@CentOS-3 ~]# cd /usr/local/src/apr-1.5.2/

配置apr指定安裝目錄

[root@CentOS-3 apr-1.5.2]# ./configure --prefix=/usr/local/apr

以上配置完成如果沒有報錯則執行編譯並安裝

[root@CentOS-3 apr-1.5.2]# make && make install

切換到apr-util源碼目錄下

[root@CentOS-3 ~]# cd /usr/local/src/apr-util-1.5.4/

配置apr-util安裝目錄並指定apr所在路徑

[root@CentOS-3 apr-util-1.5.4]# ./configure --prefix=/usr/local/apr-util/ --with-apr=/usr/local/apr

以上無報錯即可編譯並安裝

[root@CentOS-3 apr-util-1.5.4]# make && make install


編譯apache

建立apache根目錄

[root@CentOS-3 ~]# mkdir /usr/local/apache

解壓並切換至apache源碼包目錄下

[root@CentOS-3 ~]# tar xf /mnt/httpd-2.4.16.tar.gz -C /usr/local/src/

[root@CentOS-3 ~]# cd /usr/local/src/httpd-2.4.16/


定製httpd


[root@CentOS-3 httpd-2.4.16]# ./configure \

> --prefix=/usr/local/apache \ //指定安裝目錄

> --enable-so \

//支援動態共用模組,否則php無法以模組方式和apache結合工作

> --enable-rewirte \ //支援URL重寫

> --enable-cgi \ //支援CGI

> --enable-cgid \ //使用event或者worker的mpm模式要啟用cgid

> --enable-modules=most \

> --enable-mods-shared=most \ //啟動共用模組

> --enable-mpms-shared=all \ //支援所有mpm模組

> --with-apr=/usr/local/apr \ //支援所有mpm模組

> --with-apr-util=/usr/local/apr-util //指定apr-util位置

以上無報錯即可編譯並安裝

[root@CentOS-3 httpd-2.4.16]#make && make install


啟動httpd

[root@CentOS-3 ~]# /usr/local/apache/bin/apachectl start


測試看httpd是否工作正常

伺服器的IP地址為:192.168.10.250


安裝Mysql資料庫

安裝資料需要先安裝ncurses-devel

[root@CentOS-3 mysql-5.5.24]# yum -y install ncurses-devel

建立Mysql安裝目錄

[root@CentOS-3 ~]# mkdir /usr/local/mysql

建立mysql使用者,"-s"指定登入shell

[root@CentOS-3 ~]# useradd -s /sbin/nologin mysql

解壓Mysql並切換至源碼包所在目錄

[root@CentOS-3 ~]# tar xf /mnt/mysql-5.5.24.tar.gz -C /usr/local/src/

[root@CentOS-3 ~]# cd /usr/local/src/mysql-5.5.24/


使用cmake工具定義mysql

[root@CentOS-3 mysql-5.5.24]# cmake \

> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

指定安裝目錄

> -DMYSQL_DATADIR=/home/mysql \

資料檔案路徑,如果不指定就是安裝目錄下的data

> -DSYSCONFDIR=/etc \

設定檔路徑

> -DWITH_INNOBASE_STORAGE_ENGINE=1 \

安裝INNOBASE儲存引擎

> -DWITH_ARCHIVE_STORAGE_ENGINE=1 \

安裝ARCHIVE儲存引擎

> -DWITH_BLCAKHOLE_STORAGE_ENGINE=1 \

安裝BLACKHOLE儲存引擎

> -DWITH_READLINE=1 \

能夠使用loadinfile來大量匯入mysql資料

> -DWITH_SSL=system \

支援基於SSL的會話

> -DWITH_SSL=bundled

> -DWITH_ZLIB=system \

壓縮庫

> -DWITH_LIBWRAP=0 \

> -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \

預設通訊端檔案路徑

> -DEXTRA_CHARSETS=all \

支援所有字元集

> -DDEFAULT_CHARSET=utf8 \

預設的字元集

> -DDEFAULT_COLLATION=utf8_general_ci

字元集定序


以上如果沒有報錯則執行編譯並安裝資料庫

[root@CentOS-3 mysql-5.5.24]# make && make install


為了系統安全將mysql目錄下屬組改為mysql

[root@CentOS-3 ~]# chown :mysql /usr/local/mysql/


初始化資料庫

[root@CentOS-3 mysql-5.5.24]# /usr/local/mysql/scripts/mysql_install_db \

> --user=mysql \

> --ldata=/var/lib/mysql \

> --basedir=/usr/local/mysql \

> --datadir=/home/mysql


建立設定檔

[root@CentOS-3 mysql-5.5.24]# cp support-files/my-large.cnf /etc/my.cnf


建立啟動指令碼,加入到service管理

[root@CentOS-3 mysql-5.5.24]# cp support-files/mysql.server /etc/init.d/mysqld


配置開機啟動

[root@CentOS-3 mysql-5.5.24]# chkconfig --add mysqld

[root@CentOS-3 mysql-5.5.24]# chkconfig mysqld on

添加執行許可權

[root@CentOS-3 mysql-5.5.24]# chmod 755 /etc/init.d/mysqld


將mysql添加到$PATH環境變數中

[root@CentOS-3 mysql-5.5.24]# vim /etc/profile.d/mysql.sh

輸入以下內容

export PATH=$PATH:/usr/local/mysql/bin

運行指令碼使其立即生效

[root@CentOS-3 mysql-5.5.24]# . /etc/profile.d/mysql.sh


啟動mysql

[root@CentOS-3 mysql-5.5.24]# service mysqld start


為了後面測試方便授權一個帳號

進入mysql資料庫

[root@CentOS-3 ~]# mysql -u root

授權tom使用者所有許可權

mysql> GRANT all ON *.* TO 'tom'@'192.168.10.250' IDENTIFIED BY '123456';

重新整理授權資訊

mysql> flush privileges;




安裝PHP

預設apache只能支援靜態網站要想支援動態網站需要與PHP搭配工作

php與httpd工作有三種方式分別為:CGI、Modules、FastCGI


下面以Modules方式安裝PHP


建立安裝目錄

[root@CentOS-3 ~]# mkdir /usr/local/php

解壓PHP並切換至PHP源碼包所在目錄

[root@CentOS-3 ~]# tar xf /mnt/php-5.6.11.tar.bz2 -C /usr/local/src

[root@CentOS-3 ~]# cd /usr/local/src/php-5.6.11/


安裝GD庫以及關聯程式

[root@CentOS-3 php-5.6.11]# yum -y install \

> libjpeg-devel \

> libpng-devel \

> freetype-devel \

> zlib-devel \

> gettext-devel \

> libXpm-devel \

> libxml2-devel \

> fontconfig-devel \

> openssl-devel \

> bzip2-devel



配置PHP

[root@CentOS-3 php-5.6.11]# ./configure \

> --prefix=/usr/local/php \

指定安裝路徑

> --with-mysql=/usr/local/mysql \

指定mysql位置

> --with-openssl \

開啟openssl功能

> --with-mysqli=/usr/local/mysql/bin/mysql_config \

另一種mysql提供者

> --enable-mbstring \

> --with-freetype-dir \

載入freetype字型庫

> --with-jpeg-dir \

支援圖片

> --with-png-dir \

> --with-zlib \

讓資料檔案先壓縮在傳送

> --with-libxml-dir=/usr \

指定xml庫目錄

> --enable-xml \

開啟xml支援

> --enable-sockets \

讓PHP支援通訊端

> --with-apxs2=/usr/local/apache/bin/apxs \

將mysql編譯成apache模組

> --with-config-file-path=/etc \

PHP設定檔位置

> --with-config-file-scan-dir=/etc/php.d \

> --with-bz2 \

> --enable-maintainer-zts

如果apache的mpm使用的是event或worker時要加,不是不用


以上如果不報錯即可編譯並安裝

[root@CentOS-3 php-5.6.11]# make && make install


建立設定檔

[root@CentOS-3 php-5.6.11]# cp php.ini-production /etc/php.ini



編輯httpd設定檔,搜尋“/AddType”添加如下內容讓apache支援php格式頁面

[root@CentOS-3 ~]# vim /usr/local/apache/conf/httpd.conf

AddType application/x-httpd-php .php

AddType application/x-httpd-php-source .phps



繼續搜尋“/DirectoryIndex”在此處添加一下內容以支援php首頁面

LoadModule php5_module modules/libphp5.so

DirectoryIndex index.php index.html


將httpd的預設首頁修改為“.php”,並輸入以下代碼進行測試

切換至網頁檔案目錄

[root@CentOS-3 ~]# cd /usr/local/apache/htdocs/

改為index.php

[root@CentOS-3 htdocs]# mv index.html index.php

編輯檔案刪除原有內容,添加如下內容

phpinfo();

?>


重啟httpd服務

[root@CentOS-3 htdocs]# /usr/local/apache/bin/apachectl restart


訪問伺服器測試

出現以上介面說明php與httpd搭檔成功


關聯資料庫測試


編輯網頁檔案刪除原有內容輸入以下代碼

[root@CentOS-3 htdocs]# vim index.php

$conn=mysql_connect('192.168.10.250','tom','123456');

if($conn)

echo "資料庫連接成功!!";

else

echo "資料庫連接失敗!!";

?>


訪問伺服器測試

以上就是lamp架構的內容了

以模組方式使php和httpd搭檔工作,把PHP編譯成httpd的模組,不能獨立執行。當httpd需要用到php進程的時候直接從磁碟載入進來,在它內部運行即可不需要啟動一個新的進程。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.