編譯安裝LAMP所需要及其所使用的源碼版本:
httpd version:httpd-2.4.16
apr version:apr-1.5.2
pcre version:pcre-8.37
apr-util version:apr-util-1.5.4
mysql version:mysql-5.6.26
php version:php-5.6.13
1 安裝之前注意事項
1.1 LAMP源碼編譯的基礎環境
[root@xuegod1 ~]# cat /proc/version
Linux version 2.6.32-642.el6.x86_64 ([email protected]) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC) ) #1 SMP Tue May 10 17:27:01 UTC 2016
[root@xuegod1 ~]# uname -a
Linux xuegod1.cn 2.6.32-642.el6.x86_64 #1 SMP Tue May 10 17:27:01 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
6系列64位系統
1.2 確定系統的幹淨的系統,不要和現在源碼編譯安裝的軟體沖突
不要在一個系統上同時存在 RPM-Apache+源碼-Apache
建議在編譯之前,把開發包組安裝:
"Development Tools"和 "Development Libraries"
[root@xuegod1 ~]# yum groupinstall "Development Tools" "Development Libraries" [root@xuegod1 ~]# yum install gcc gcc-c++ openssl-devel -y
所有軟體
[root@xuegod1 ~]# ls
apr-1.5.2.tar.gz httpd-2.4.16.tar.bz2 pcre-8.37.tar.bz2
apr-util-1.5.4.tar.bz2 mysql-5.6.26.tar.gz php-5.6.13.tar.bz2
1.3 apr和apr-util依賴
apr和apr-util獨立編譯
[root@xuegod1 ~]# tar xf apr-1.5.2.tar.gz -C /usr/local/src/ && tar xf apr-util-1.5.4.tar.bz2 -C /usr/local/src/
[root@xuegod1 ~]# cd /usr/local/src/apr-1.5.2/ && ./configure --prefix=/usr/local/apr && make -j 4 && make install
[root@xuegod1 apr-util-1.5.4]# cd ../apr-util-1.5.4/ && ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && make -j 4 && make install
[root@xuegod1 ~]# cd && tar xf pcre-8.37.tar.bz2 -C /usr/local/src/
[root@xuegod1 ~]# cd /usr/local/src/pcre-8.37/ && ./configure --prefix=/usr/local/pcre && make -j 4 && make install && cd
2 Apache源碼編譯
2.1 依賴環境安裝完成,開始編譯安裝apache
[root@xuegod1 ~]# tar xvf httpd-2.4.16.tar.bz2 -C /usr/local/src/ && cd /usr/local/src/http-2.4.16
[root@xuegod1 httpd-2.4.16]# ./configure --prefix=/usr/local/apache2.4 --enable-so --enable-rewrite --enable-ssl --with-pcre=/usr/local/pcre/ --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=event && make -j 4 && make install
--prefix=/usr/local/apache2.4 #安裝路徑
--enable-so #支援動态加載子產品
--enable-rewrite #支援網站位址重寫
--enable-ssl #支援SSL加密
--with-pcre=/usr/local/pcre #pcre路徑
--with-apr=/usr/local/apr #apr路徑
--with-apr-util=/usr/local/apr-util #apr-util路徑
一共有三種穩定的MPM(Multi-Processing Module,多程序處理子產品)模式。它們分别是prefork,worker和event,它們同時也代表這Apache的演變和發展。
2.2 配置Apache的啟動腳本
[root@xuegod1 ~]# cp /usr/local/apache2.4/bin/apachectl /etc/init.d/apache2.4
若是你按照我們實驗環境安裝了桌面,那麼需要停掉httpd服務,若不是,則不需要
[root@xuegod1 ~]# /etc/init.d/httpd stop
[root@xuegod1 ~]# chkconfig httpd off
編輯啟動腳本檔案
[root@xuegod1 ~]# vim /etc/init.d/apache2.4
#!/bin/sh
# chkconfig: 2345 64 36
#這個是啟動級别的服務,2345是指那些級别啟動,64是開啟順序,應該在network服務的後面,36是關閉順序,應該在network的前
面,這裡并不是注釋
#預設network的是:2345 10 90
# description: Apache2.4.16 start script #描述字段,有了這兩個字段,就可以用chkconfig指令控制
[root@xuegod1 ~]# service apache2.4 start
[root@xuegod1 ~]# chkconfig apache2.4 on
2.3 Apache安裝完成需要注意的地方
[root@xuegod1 ~]# ps -aux|grep apache //源碼編譯apache,運作使用者為deamon
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root 56746 0.0 0.0 72236 2220 ? Ss 20:10 0:00 /usr/local/apache2.4/bin/httpd -k start
daemon 56747 0.0 0.0 416496 4108 ? Sl 20:10 0:00 /usr/local/apache2.4/bin/httpd -k start
daemon 56748 0.0 0.0 416496 4112 ? Sl 20:10 0:00 /usr/local/apache2.4/bin/httpd -k start
daemon 56749 0.0 0.0 416496 4116 ? Sl 20:10 0:00 /usr/local/apache2.4/bin/httpd -k start
root 56836 2.0 0.0 103316 840 pts/0 S+ 20:11 0:00 grep apache
[root@xuegod1 ~]# id daemon //編譯安裝運作使用者身份是daemon
uid=2(daemon) gid=2(daemon) groups=2(daemon),1(bin),4(adm),7(lp)
[root@xuegod1 ~]# useradd -M -s /sbin/nologin apache //建立一個使用者用來運作apache
[root@xuegod1 ~]# vim /usr/local/apache2.4/conf/httpd.conf //修改配置檔案改變apache運作身份
User apache #運作使用者
Group apache #運作組,建立apache的時候已經即時建立了apache這個組
[root@xuegod1 ~]# id apache
uid=500(apache) gid=500(apache) groups=500(apache)
更改目錄權限
[root@xuegod1 ~]# chown -R apache:apache /usr/local/apache2.4/ //預設是root,改為apache
3 MYSQL源碼編譯
Mysql 5.5.15 以後,使用了新的 cmake 編譯方式,是以先安裝 cmake。 以前的版本直接 configure然後make ,make install ,對于5.5.16的後續版
本,将需要先使用cmake之後再make,然後make install
CMake 是一個跨平台的安裝(編譯)工具,可以用簡單的語句來描述所有平台的安裝(編譯過程)。他能夠輸出各種各樣的 makefile 或者 project 檔案,能
測試編譯器所支援的 C++特性,類似 UNIX 下的automake。 隻是 CMake 的建構檔取名為 CmakeLists.txt。Cmake 并不直接建構出最終的軟體,而是産生标
準的建構檔(如 Unix 的 Makefile 或Windows Visual C++ 的 projects/workspaces),然後再依一般的建構方式使用。這使得熟悉某個內建開發環境
(IDE)的開發者可以用标準的方式建構他的軟體,這種可以使用各平台的原生建構系統的能力是 CMake 和 SCons 等其他類似系統的差別之處。
3.1 解決依賴
[root@xuegod1 ~]# yum install -y cmake ncurses-devel //gcc等相關在編譯apache已安裝
3.2 編譯安裝mysql
安裝之前使用 yum remove mysql 確定沒有安裝MySQL
[root@xuegod1 ~]# yum remove mysql* -y
[root@xuegod1 ~]# yum remove -y mysql
[root@xuegod1 ~]# rpm -qa|grep mysql
mysql-libs-5.1.73-7.el6.x86_64
[root@xuegod1 ~]# rpm -e --nodeps mysql-libs-5.1.73-7.el6.x86_64
[root@xuegod1 ~]#
[root@xuegod1 ~]# tar xf mysql-5.6.26.tar.gz -C /usr/local/src/ ; cd /usr/local/src/mysql-5.6.26
[root@xuegod1 mysql-5.6.26]# useradd -M -s /sbin/nologin mysql //建立mysql運作使用者
[root@XueGod63 mysql-5.6.26]# cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_MYISAM_STORAGE_ENGINE=1\
-DWITH_INNOBASE_STORAGE_ENGINE=1\
-DWITH_MEMORY_STORAGE_ENGINE=1\
-DWITH_READLINE=1\
-DENABLED_LOCAL_INFILE=1\
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL-USER=mysql
***********************************參數解釋******************************************************************************
DCMAKE_INSTALL_PREFIX #制定mysql的安裝根目錄,目錄在安裝的時候會自動建立,這個值也可以在伺服器
啟動時,用--basedir來設定
DMYSQL_UNIX_ADDR #伺服器與本地用戶端進行通信的Unix套接字檔案,必須是絕對路徑,預設位
置/tmp/mysql.sock,可以在伺服器啟動時,用--socket改變
DDEFAULT_CHARSET #mysql預設使用的字元集,不指定将預設使用Latin1西歐字元集
DDEFAULT_COLLATION #預設字元校對
DWITH_EXTRA_CHARSETS #制定mysql拓展字元集,預設值也是all支援所有的字元集
DWITH_MYISAM_STORAGE_ENGINE
DWITH_INNOBASE_STORAGE_ENGINE
DWITH_MEMORY_STORAGE_ENGINE
#靜态編譯MYISAM,INNOBASE,MEMORY存儲引擎到MYSQL服務 器,這樣MYSQL就支援這三種存儲引擎
DWITH_READLINE #支援readline庫
DENABLED_LOCAL_INFILE #允許本地倒入資料,啟用加載本地資料
DMYSQL_DATADIR #mysql資料庫存放路徑
DMYSQL-USER #運作mysql的使用者
[root@xuegod1 mysql-5.6.26]# make -j 4 && make install
這些編譯參數的幫助尋找方法:
http://www.mysql.com→→Documentation→→選擇對應的版本(5.6)→→HTML Online→→View→→Installation &
Upgrades→→Installing MySQL from Source →→MySQL Source-Configuration Options→→http://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html
3.3 配置mysql
[root@xuegod1 mysql-5.6.26]# cd &&
chown -R mysql:mysql /usr/local/mysql/ //屬主屬組更改
[root@xuegod1 ~]# cp
/usr/local/mysql/support-files/my-default.cnf
/etc/my.cnf //覆寫原配置檔案
/usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld //啟動腳本
[root@xuegod1 ~]# vim /etc/init.d/mysqld //更改啟動腳本中指定mysql位置
basedir=
datadir=
#修改為
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
[root@xuegod1 ~]# chkconfig mysqld on //開機啟動
3.4 初始化資料庫
[root@XueGod63
~]# /usr/local/mysql/scripts/mysql_install_db \
--defaults-file=/etc/my.cnf
\
--basedir=/usr/local/mysql/\
--datadir=/usr/local/mysql/data/\
--user=mysql
#類似于在rpm安裝的時候啟動資料庫彈出的初始化消息
等同于這樣:
/usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/
--datadir=/usr/local/mysql/data/ --user=mysql
出現兩個OK表示安裝成功
[root@xuegod1 ~]# ls /usr/local/mysql/data/ //初始化看這個下面有無mysql和test等資料庫
ibdata1
ib_logfile0 ib_logfile1 mysql
performance_schema test
[root@xuegod1 ~]# ln -s
/usr/local/mysql/bin/* /bin/ //這個裡面是部分指令,讓系統直接調用
[root@xuegod1 ~]# service mysqld start //啟動資料庫
Starting MySQL..... SUCCESS!
[root@xuegod1 ~]# mysql_secure_installation //初始安全設定(設定root密碼,123456)
[root@xuegod1 ~]# mysql -uroot -p123456 //測試登入(OK)
4 編譯安裝配置PHP
PHP原始為Personal Home Page的縮寫,已經正式更名為 "PHP:
Hypertext Preprocessor"。
Apache對于php的解析,就是通過衆多Module中的php Module來完成的,把php最終內建到Apache系統中,還需要對Apache進行一些必要的設定!
4.1 解決依賴
[root@xuegod1 ~]# yum install -y
libxml2-devel
[root@xuegod1 ~]# tar xf php-5.6.13.tar.bz2
-C /usr/local/src/ ; cd /usr/local/src/php-5.6.13
4.2 正式安裝
[root@xuegod1 php-5.6.13]# ./configure
--prefix=/usr/local/php --with-mysql=/usr/local/mysql/
--with-apxs2=/usr/local/apache2.4/bin/apxs
--with-config-file-path=/usr/local/php
--prefix #指定安裝路徑
--with-apxs2 #用apache的apxs工具将php編譯成apache的一個子產品
--with-mysql #與mysql結合,如果不跟路徑,編譯出來的版本将是低版本
--with-config-file-path
#php的主配置檔案php.ini路徑
看到下面一段内容,表示configure成功
Thank you for using PHP.
config.status: creating php5.spec
config.status: creating main/build-defs.h
config.status: creating scripts/phpize
config.status: creating scripts/man1/phpize.1
config.status: creating scripts/php-config
config.status: creating scripts/man1/php-config.1
config.status: creating sapi/cli/php.1
config.status: creating sapi/cgi/php-cgi.1
config.status: creating ext/phar/phar.1
config.status: creating ext/phar/phar.phar.1
config.status: creating main/php_config.h
config.status:
executing default commands
[root@xuegod1 php-5.6.13]# make -j 4 ; make
install ; cd /usr/local/src/php-5.6.13
[root@xuegod1 php-5.6.13]# cp
php.ini-production /usr/local/php/php.ini ; cd
//php配置檔案
4.3 檢測編譯安裝結果
隻有有下面這兩個檔案(子產品),代表我們的apache就可以支援php了
[root@xuegod1 ~]# ll
/usr/local/apache2.4/modules/httpd.exp
-rw-r--r-- 1 apache apache 14212 Jun 7 20:04
/usr/local/apache2.4/modules/httpd.exp
/usr/local/apache2.4/modules/libphp5.so
-rwxr-xr-x 1 root root 26411241 Jun 7 22:36
/usr/local/apache2.4/modules/libphp5.so
4.4 配置Apache支援PHP
[root@xuegod1 ~]# vim
/usr/local/apache2.4/conf/httpd.conf
……
248 <IfModule
dir_module>
249 DirectoryIndex
index.html index.php #添加index.php
250 </IfModule>
376 AddType
application/x-compress .Z
377 AddType
application/x-gzip .gz .tgz #上面兩行是以前有的
378 AddType application/x-httpd-php .php #下面兩行是添加的,需要添加以支援PHP
379 AddType
application/x-httpd-php-source .phps
修改完後重新開機一下apache服務
[root@xuegod1 ~]# service apache2.4 restart
測試:
/usr/local/apache2.4/htdocs/index.php
<?php
phpinfo();
?>
然後用用戶端浏覽器打開此頁面