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進程的時候直接從磁碟載入進來,在它內部運行即可不需要啟動一個新的進程。