超詳細LAMP環境手動編譯安裝實例
HTTPD編譯安裝:
下載軟件包:
# wget http://mirrors.hust.edu.cn/apache//apr/apr-1.6.3.tar.gz http://mirrors.hust.edu.cn/apache//apr/apr-util-1.5.1.tar.gz http://mirrors.shu.edu.cn/apache//httpd/httpd-2.4.29.tar.gz
需要依賴最新版apr和apr-util
apr:Apache Porttable Runtime:
可移植Apache運行環境,用於把C語言編寫的Apache程序運行在不同的操作系統上,即有Windows版本也有Linux版本
apr-util:apr工具
安裝開發環境,確保Development tools
# yum grouplist //查看是否安裝 # yum groupinstall "Development Tools"
安裝apr:
# tar xf apr-1.6.3.tar.gz # cd apr-1.6.3 # ./configure --prefix=/usr/local/apr # make # make install
安裝apr-util:
# tar xf apr-util-1.5.1.tar.gz//1.6的會報錯,用1.5.1的 # cd apr-util-1.5.1 # ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr //需要指定剛才安裝的apr的路徑 # make make[1]: *** [xml/apr_xml.lo] Error 1 make[1]: Leaving directory `/lee/software/apr-util-1.5.1' make: *** [all-recursive] Error 1
若報以上錯誤安裝下面的devel包
# yum install expat-devel # make&make install
安裝httpd:
# ./configure --hlep 查看常用選項:
--sysconfdir=DIR//指定配置文件路徑
--enable-so//支持動態共享模塊,必加項,用於以模塊的方式讓php與apache結合工作
--enable-proxy-fcgi//用於以fcgi(fastcgi)的方式讓php與apache結合工作
--enable-cgi //用於以cgi的方式讓php與apache結合工作
apache與php結合工作的幾種方式:
模塊:php以模塊的形式集成在httpd中,httpd和php一個進程
CGI:httpd用CGI和php交互,php獨立創建進程(好像是tcp9000),由httpd創建、管理php的進程
FCGI:php完全獨立了,自己單獨的服務器,自己預先創建進程,自己管理進程
--enable-ssl//支持ssl,用於需要啟用https的站點
--enable-deflate//支持壓縮,即壓縮後發送給客戶端瀏覽器,瀏覽器再解壓縮,節省流量
--enable-mpms-shared=MPM-LIST//定義要啟用的httpd支持的MPM模式(多道處理模塊)event|worker|prefork|winnt|all
--with-mpm=MPM //定義MPM後設定默認的MPM模式(MPM={event|worker|prefork|winnt}),2.4默認event
MPM的幾種模式:
event:一個進程(內部生成多個線程)來響應多個請求,進程通過事件驅動(輪詢和通知)的機制來確定內部線程的處理狀態
worker:一個進程生成多個子進程(線程)來響應多個請求
prefork:一個進程響應一個請求
--enable-cgid//CGI scripts. Enabled by default with threaded MPMs(線程方式event|worker的MPM模式時必須啟用)
--enable-rewrite//支持URL重寫,就是重定向啦
# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-rewirte --enable-ssl --enable-cgi --enable-cgid --enable-modules=most --enable-mods-shared=most --enable-mpms-shared=all --with-mpm=event --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
報錯:configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org///缺少pcre-devel
# yum -y install pcre-devel # make # make install
Apache編譯安裝默認的目錄:
bin:二進制文件(啟動腳本是此目錄下的apachectl)
cgi-bin:CGI程序的存放目錄
htdocs:網頁的存放目錄
man:幫助文檔
modules:模塊目錄
error:錯誤信息
icons:圖標
logs:日誌文件
manual:官方手冊
編譯安裝的默認pid文件放在了/usr/local/apache/logs下了,最好改一下位置:
# vim /etc/httpd/httpd.conf PidFile "/var/run/httpd.pid" //加這一行內容
# /usr/local/apache/apachectl start //啟動服務
可選配置:
讓service命令識別啟動腳本:
# ln -s /usr/local/apache/bin/apachectl /etc/init.d/httpd
讓系統能夠直接識別/usr/local/apache/bin/下的命令:
方法一:
# ln -s /usr/local/apache/bin/* /usr/bin //軟鏈接到某一個PATH變量目錄中
方法二:
# vim /etc/profile.d/httpd.sh export PATH=$PATH:/usr/local/apache/bin //編輯一個開機啟動腳本,追加PATH變量
加入開機自啟動:
方法一:
# vim /etc/rc.d/rc.local /usr/local/apache/bin/apachectl start //開機啟動
方法二:讓chkconfig識別(略)
MYSQL(通用二進制包)安裝:
下載軟件包:
# wget https://cdn.mysql.com//Downloads/MySQL-5.5/mysql-5.5.58-linux-glibc2.12-i686.tar.gz
解壓:
# tar xf mysql-5.5.58-linux-glibc2.12-i686.tar.gz
復制到想要安裝的目錄並重命名:
# cp -rf mysql-5.5.58-linux-glibc2.12-i686/* /usr/local/mysql/ # cd /usr/local/mysql/
具體安裝方法在這個文件中有說明:
# more INSTALL-BINARY
創建系統用戶mysql:
# useradd -r mysql
將mysql目錄所有文件改變屬主和屬組為mysql
# chown -R mysql.mysql /usr/local/mysql/
手動執行初始化腳本:
# /usr/local/mysql/scripts/mysql_install_db --help //初始化腳本配置文件主要選項
--user=user_name:以哪個用戶的身份進行初始化
--datadir=path:數據存放目錄,默認就在安裝目錄下的data目錄
# /usr/local/mysql/scripts/mysql_install_db --user=mysql //初始化
服務啟動腳本:
# cp support-files/mysql.server /etc/init.d/mysqld //復制到service管理目錄下並重命名 # chkconfig --add mysqld # chkconfig mysqld on
MYSQL配置文件:
mysql/support-files/目錄下有多個針對實際硬件情況的配置文件可選:
# ls /usr/local/mysql/support-files/ my-huge.cnfmy-large.cnfmy-small.cnf
# more my-large.cnf # Example MySQL config file for large systems. # # This is for a large system with memory = 512M where the system runs mainly //內存512左右可以選這個配置文件 # MySQL. datadir=YOURPATH //註意,如果在初始化時指定了data目錄,這裏要加這個參數
# cp support-files/my-large.cnf /etc/my.cnf //復制並重命名,mysql默認在這個目錄下找my.cnf的配置文件
啟動mysqld服務:
# service mysqld start
照例追加mysql/bin到PATH,讓系統識別命令:
# vim /etc/profile.d/mysql.sh export PATH=$PATH:/usr/local/mysql/bin //追加變量
非必須選項:
# vim /etc/ld.so.conf.d/mysql.conf /usr/local/mysql/lib //輸出庫文件,讓系統讀取mysql的庫文件 # ldconfig -v //重新讀取庫文件 # ln -sv /usr/local/mysql/include /usr/include/mysql //輸出頭文件,讓系統讀取mysql的頭文件
編譯安裝PHP:
下載軟件包並解壓:
# wget http://cn2.php.net/distributions/php-5.6.33.tar.gz # tar xf php-5.6.33.tar.gz # cd /lee/software/php-5.6.33
編譯:
# ./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-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts
# --with-apxs2=/usr/local/apache/bin/apxs:其中這一項是以模塊的方式與apche工作,如果要以fcgi方式則用:--enable-fpm(註意兩項不能共存)
./configure時報錯yum安裝對應的軟件包和devel包一般可以解決,但有些軟件包yum是沒有的,需要手動下載rpm包安裝:
# wget http://rpmfind.net/linux/dag/redhat/el6/en/i386/dag/RPMS/libmcrypt-2.5.7-1.2.el6.rf.i686.rpm # rpm -ivh libmcrypt-2.5.7-1.2.el6.rf.i686.rpm # wget http://rpmfind.net/linux/dag/redhat/el6/en/i386/dag/RPMS/libmcrypt-devel-2.5.7-1.2.el6.rf.i686.rpm # rpm -ivh libmcrypt-devel-2.5.7-1.2.el6.rf.i686.rpm
# make
# make install
復制配置文件到剛才configure時指定的配置文件目錄:
# cp php.ini-production /etc/php.ini
編輯Apache的配置文件,讓apache能支持php(PHP以apache模塊的方式工作):
# vim /etc/httpd/httpd.conf
1、添加如下二行
AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
2、定位至DirectoryIndex index.html
修改為:
DirectoryIndex index.php index.html
# httpd -t //修改完檢查下語法
# service httpd restart //重啟服務重讀配置文件
測試PHP和Apache工作情況:
# mv index.html index.html.bak //讓默認的html主頁失效 # vim index.php <html><title>鄂C王思聰PHP測試</title> <body><h1>PHP TEST</h1></body></html> <?php phpinfo(); ?> //這個是PHP內置函數,用於測試PHP
完成後可以在瀏覽器中打開測試一下了
測試MYSQL和PHP工作情況:
# vim mysql.php <html><title>鄂C王思聰MYSQL測試</title> <body><h1>MYSQL TEST</h1></body></html> <?php $conn=mysql_connect(`localhost`,`root`,``); if ($conn) echo "SUCCESS"; else echo "FAILURE"; ?>
完成後瀏覽器中打開mysql.php測試下,顯示SUCCESS表示成功
超詳細LAMP環境手動編譯安裝實例