當(dāng)前位置:
首頁 >
LAMP的搭建
發(fā)布時(shí)間:2025/4/5
28
豆豆
可以在網(wǎng)上找整合包:
?
?
?
httpd-2.4.18 + mysql-5.6.29 + php-5.5.30編譯安裝過程:編譯源代碼后安裝軟件的位置:/usr/local/一、編譯安裝apache apache portable runtime 1、解決依賴關(guān)系httpd-2.4.18需要較新版本的apr和apr-util,因此需要事先對其進(jìn)行升級。升級方式有兩種,一種是通過源代碼編譯安裝,一種是直接升級rpm包。這里選擇使用編譯源代碼的方式進(jìn)行。(1) 編譯安裝apr# tar xf apr-1.5.2.tar.bz2 # cd apr-1.5.2 # ./configure --prefix=/usr/local/apr # make && make install(2) 編譯安裝apr-util# tar xf apr-util-1.5.4.tar.bz2 # cd apr-util-1.5.4 # ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr # make && make install用戶賬戶: daemon附:apache官方對APR的介紹:The mission of the Apache Portable Runtime (APR) project is to create and maintain software libraries that provide a predictable and consistent interface to underlying platform-specific implementations. The primary goal is to provide an API to which software developers may code and be assured of predictable if not identical behaviour regardless of the platform on which their software is built, relieving them of the need to code special-case conditions to work around or take advantage of platform-specific deficiencies or features.(3) httpd-2.4.18編譯過程也要依賴于pcre-devel軟件包,需要事先安裝。此軟件包系統(tǒng)光盤自帶,因此,找到并安裝即可。2、編譯安裝httpd-2.4.18首先下載httpd-2.4.18到本地。而后執(zhí)行如下命令進(jìn)行編譯安裝過程:# tar xf httpd-2.4.18.tar.bz2 # cd httpd-2.4.18 # ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=event # make && make install補(bǔ)充:(1)構(gòu)建MPM為靜態(tài)模塊 在全部平臺中,MPM都可以構(gòu)建為靜態(tài)模塊。在構(gòu)建時(shí)選擇一種MPM,鏈接到服務(wù)器中。如果要改變MPM,必須重新構(gòu)建。為了使用指定的MPM,請?jiān)趫?zhí)行configure腳本 時(shí),使用參數(shù) --with-mpm=NAME。NAME是指定的MPM名稱。編譯完成后,可以使用 ./httpd -l 來確定選擇的MPM。 此命令會列出編譯到服務(wù)器程序中的所有模塊,包括 MPM。(2)構(gòu)建 MPM 為動態(tài)模塊在Unix或類似平臺中,MPM可以構(gòu)建為動態(tài)模塊,與其它動態(tài)模塊一樣在運(yùn)行時(shí)加載。 構(gòu)建 MPM 為動態(tài)模塊允許通過修改LoadModule指令內(nèi)容來改變MPM,而不用重新構(gòu)建服務(wù)器程序。在執(zhí)行configure腳本時(shí),使用--enable-mpms-shared選項(xiàng)即可啟用此特性。當(dāng)給出的參數(shù)為all時(shí),所有此平臺支持的MPM模塊都會被安裝。還可以在參數(shù)中給出模塊列表。默認(rèn)MPM,可以自動選擇或者在執(zhí)行configure腳本時(shí)通過--with-mpm選項(xiàng)來指定,然后出現(xiàn)在生成的服務(wù)器配置文件中。編輯LoadModule指令內(nèi)容可以選擇不同的MPM。3、修改httpd的主配置文件,設(shè)置其Pid文件的路徑編輯/etc/httpd/httpd.conf,添加如下行即可: PidFile "/var/run/httpd.pid"4、提供SysV服務(wù)腳本/etc/rc.d/init.d/httpd,內(nèi)容如下:#!/bin/bash # # httpd Startup script for the Apache HTTP Server # # chkconfig: - 85 15 # description: Apache is a World Wide Web server. It is used to serve \ # HTML files and CGI. # processname: httpd # config: /etc/httpd/conf/httpd.conf # config: /etc/sysconfig/httpd # pidfile: /var/run/httpd.pid# Source function library. . /etc/rc.d/init.d/functionsif [ -f /etc/sysconfig/httpd ]; then. /etc/sysconfig/httpd fi# Start httpd in the C locale by default. HTTPD_LANG=${HTTPD_LANG-"C"}# This will prevent initlog from swallowing up a pass-phrase prompt if # mod_ssl needs a pass-phrase from the user. INITLOG_ARGS=""# Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server # with the thread-based "worker" MPM; BE WARNED that some modules may not # work correctly with a thread-based MPM; notably PHP will refuse to start.# Path to the apachectl script, server binary, and short-form for messages. apachectl=/usr/local/apache/bin/apachectl httpd=${HTTPD-/usr/local/apache/bin/httpd} prog=httpd pidfile=${PIDFILE-/var/run/httpd.pid} lockfile=${LOCKFILE-/var/lock/subsys/httpd} RETVAL=0start() {echo -n $"Starting $prog: "LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONSRETVAL=$?echo[ $RETVAL = 0 ] && touch ${lockfile}return $RETVAL }stop() {echo -n $"Stopping $prog: "killproc -p ${pidfile} -d 10 $httpdRETVAL=$?echo[ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile} } reload() {echo -n $"Reloading $prog: "if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; thenRETVAL=$?echo $"not reloading due to configuration syntax error"failure $"not reloading $httpd due to configuration syntax error"elsekillproc -p ${pidfile} $httpd -HUPRETVAL=$?fiecho }# See how we were called. case "$1" instart)start;;stop)stop;;status)status -p ${pidfile} $httpdRETVAL=$?;;restart)stopstart;;condrestart)if [ -f ${pidfile} ] ; thenstopstartfi;;reload)reload;;graceful|help|configtest|fullstatus)$apachectl $@RETVAL=$?;;*)echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"exit 1 esacexit $RETVAL而后為此腳本賦予執(zhí)行權(quán)限: # chmod +x /etc/rc.d/init.d/httpd加入服務(wù)列表: # chkconfig --add httpd接下來就可以啟動服務(wù)進(jìn)行測試了。++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++使用通用二進(jìn)制格式安裝MySQL5.6.29 # tar -xf mysql-5.6.29-linux-glibc2.5-i686.tar.gz # mv mysql-5.6.29-linux-glibc2.5-i686 /usr/local/mysql導(dǎo)出二進(jìn)制文件# vim /etc/profile.d/mysql.shexport PATH=$PATH:/usr/local/mysql/bin# source /etc/profile.d/mysql.sh導(dǎo)出庫文件:# vim /etc/ld.so.conf.d/mysql.conf/usr/local/mysql/lib# ldconfig -v導(dǎo)出頭文件:# ln -s /usr/local/mysql/include /usr/include/mysql導(dǎo)出幫助手冊:# vim /etc/man.configMANPATH /usr/local/mysql/man啟動腳本:cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld最好將數(shù)據(jù)庫目錄放置到某個(gè)lv上,掛載后在其中創(chuàng)建名為data的目錄 創(chuàng)建mysql用戶和組# groupadd -r mysql# useradd -r -g mysql -s /sbin/nologin mysqlchown mysql: /mydata/data chown -R mysql: /usr/local/mysql初始化數(shù)據(jù)庫:/usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/mydata/data生成配置文件:cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnfvim /etc/my.cnfbasedir = /usr/local/mysqldatadir = /mydata/dataport = 3306socket = /tmp/mysql.sock啟動服務(wù):service mysqld start為了保證安全,防止進(jìn)程會話被劫持,需要改動所有權(quán):# chown -R root: /usr/local/mysql二、編譯安裝MySQL-5.6.291、安裝cmake跨平臺編譯器# tar xf cmake-2.8.8.tar.gz # cd cmake-2.8.8 # ./configure # make # make install2、編譯安裝mysql-5.6.29使用cmake編譯mysql-5.6.29 cmake指定編譯選項(xiàng)的方式不同于make,其實(shí)現(xiàn)方式對比如下: ./configure cmake . ./configure --help cmake . -LH指定安裝文件的安裝路徑時(shí)常用的選項(xiàng): -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc默認(rèn)編譯的存儲引擎包括:csv、myisam、myisammrg和heap。若要安裝其它存儲引擎,可以使用類似如下編譯選項(xiàng): -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1若要明確指定不編譯某存儲引擎,可以使用類似如下的選項(xiàng): -DWITHOUT_<ENGINE>_STORAGE_ENGINE=1 比如: -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 -DWITHOUT_FEDERATED_STORAGE_ENGINE=1 -DWITHOUT_PARTITION_STORAGE_ENGINE=1如若要編譯進(jìn)其它功能,如SSL等,則可使用類似如下選項(xiàng)來實(shí)現(xiàn)編譯時(shí)使用某庫或不使用某庫: -DWITH_READLINE=1 //能夠?qū)嵱肔oadinfile 的方式批量導(dǎo)入MySQL數(shù)據(jù) -DWITH_SSL=system //基于SSL功能實(shí)現(xiàn)復(fù)制對于MySQL來說非常重要 -DWITH_ZLIB=system -DWITH_LIBWRAP=0其它常用的選項(xiàng): -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DENABLED_LOCAL_INFILE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_DEBUG=0 -DENABLE_PROFILING=13、完成編譯安裝(1)安裝前的準(zhǔn)備工作創(chuàng)建mysql用戶和組groupadd -r mysqluseradd -r -g mysql -s /sbin/nologin mysql (2)將數(shù)據(jù)目錄放置在事先準(zhǔn)備好的邏輯卷上。準(zhǔn)備邏輯卷,將其掛載至/mydata,并在其中創(chuàng)建data目錄修改data目錄所有權(quán),chown -R mysql.mysql /mydata(3)如果想要使用OPENSSL進(jìn)行加密,需要安裝與SSL相關(guān)的包,保證編譯所需要的庫文件和頭文件都可以被查找并訪問到。yum -y install openssl*(4)開始編譯并按照編譯的選項(xiàng)進(jìn)行安裝 # tar xf mysql-5.6.29.tar.gz # cd mysql-5.6.29 # cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/mydata/data -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_LIBWRAP=0 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci # make # make install如果想清理此前的編譯所生成的文件,則需要使用如下命令: make clean rm CMakeCache.txt4、安裝之后的配置:# cd /usr/local/mysql# chown -R :mysql .# scripts/mysql_install_db --user=mysql --datadir=/mydata/data --basedir=/usr/local/mysql# cp support-files/my-default.cnf /etc/my.cnf修改/etc/my.cnf,在其中添加datadir = /mydata/data (最好添加)# cp support-files/mysql.server /etc/init.d/mysqld# vim /etc/profile.d/mysql.shexport PATH=$PATH:/usr/local/mysql/bin四、編譯安裝php-5.5.301)、解決依賴關(guān)系:請配置好yum源(可以是本地系統(tǒng)光盤)后執(zhí)行如下命令: # yum -y groupinstall "X Software Development" 如果想讓編譯的php支持mcrypt擴(kuò)展,此處還需要下載如下rpm包并安裝之: libmcrypt-2.5.8-9.el6.i386.rpm libmcrypt-devel-2.5.8-9.el6.i386.rpm mhash-0.9.9-3.el6.i386.rpm mhash-devel-0.9.9-3.el6.i386.rpm2)、編譯安裝php-5.5.30首先下載源碼包至本地目錄。# tar xf php-5.5.30.tar.bz2 # cd php-5.5.30 # ./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 \--enable-fpm \--with-mcrypt \--with-config-file-path=/etc \--with-config-file-scan-dir=/etc/php.d \--with-bz2說明:如果使用PHP5.3以上版本,為了鏈接MySQL數(shù)據(jù)庫,可以指定mysqlnd,這樣在本機(jī)就不需要先安裝MySQL或MySQL開發(fā)包了。mysqlnd從php 5.3開始可用,可以編譯時(shí)綁定到它(而不用和具體的MySQL客戶端庫綁定形成依賴),但從PHP 5.4開始它就是默認(rèn)設(shè)置了。 # ./configure --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd# make # make test # make intall為php提供配置文件: # cp php.ini-production /etc/php.ini3、配置php-fpm為php-fpm提供Sysv init腳本,并將其添加至服務(wù)列表: # cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm # chmod +x /etc/rc.d/init.d/php-fpm # chkconfig --add php-fpm # chkconfig php-fpm on為php-fpm提供配置文件: # cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf 編輯php-fpm的配置文件: # vim /usr/local/php/etc/php-fpm.conf 配置fpm的相關(guān)選項(xiàng)為你所需要的值,并啟用pid文件(如下最后一行): pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 2 pm.max_spare_servers = 8 pid = /usr/local/php/var/run/php-fpm.pid 接下來就可以啟動php-fpm了: # service php-fpm start使用如下命令來驗(yàn)正(如果此命令輸出有中幾個(gè)php-fpm進(jìn)程就說明啟動成功了): # ps aux | grep php-fpm默認(rèn)情況下,fpm監(jiān)聽在127.0.0.1的9000端口,也可以使用如下命令驗(yàn)正其是否已經(jīng)監(jiān)聽在相應(yīng)的套接字。 # netstat -tnlp | grep php-fpm tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 689/php-fpm 五、配置httpd-2.4.181、啟用httpd的相關(guān)模塊在Apache httpd 2.4以后已經(jīng)專門有一個(gè)模塊針對FastCGI的實(shí)現(xiàn),此模塊為mod_proxy_fcgi.so,它 其實(shí)是作為mod_proxy.so模塊的擴(kuò)充,因此,這兩個(gè)模塊都要加載: LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so2、配置虛擬主機(jī)支持使用fcgi在相應(yīng)的虛擬主機(jī)中添加類似如下兩行。ProxyRequests OffProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1例如: <VirtualHost *:80>DocumentRoot "/web/www.qhdlink.com"ServerName qhdlink.comServerAlias www.qhdlink.comProxyRequests OffProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/web/www.qhdlink.com/$1<Directory "/www/qhdlink.com">Options noneAllowOverride noneRequire all granted</Directory> </VirtualHost>ProxyRequests Off:關(guān)閉正向代理 ProxyPassMatch:把以.php結(jié)尾的文件請求發(fā)送到php-fpm進(jìn)程,php-fpm至少需要知道運(yùn)行的目錄和URI,所以這里直接在fcgi://127.0.0.1:9000后指明了這兩個(gè)參數(shù),其它的參數(shù)的傳遞已經(jīng)被mod_proxy_fcgi.so進(jìn)行了封裝,不需要手動指定。3、編輯apache配置文件httpd.conf,讓apache能識別php格式的頁面,并支持php格式的主頁# vim /etc/httpd/httpd.conf1、添加如下二行AddType application/x-httpd-php .phpAddType application/x-httpd-php-source .phps2、定位至DirectoryIndex index.html 修改為:DirectoryIndex index.php index.html補(bǔ)充:Apache httpd 2.4以前的版本中,要么把PHP作為Apache的模塊運(yùn)行,要么添加一個(gè)第三方模塊支持PHP-FPM實(shí)現(xiàn)。使用Discuz!測試 # chmod 777 ./config ./data/ ./data/{cache,avatar,plugindata,download,addonmd5,template,threadcache,attachment,log} ./data/attachment/{album,forum,group} ./uc_client/data/cache/ ./uc_server/data ./uc_server/data/{cache,avatar,backup,logs,tmp,view}六、安裝xcache,為php加速:1、安裝 # tar xf xcache-3.2.0.tar.gz # cd xcache-3.2.0 # /usr/local/php/bin/phpize # ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config # make && make install安裝結(jié)束時(shí),會出現(xiàn)類似如下行: Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/2、編輯php.ini,整合php和xcache:首先將xcache提供的樣例配置導(dǎo)入php.ini # mkdir /etc/php.d # cp xcache.ini /etc/php.d說明:xcache.ini文件在xcache的源碼目錄中。接下來編輯/etc/php.d/xcache.ini,找到zend_extension開頭的行,修改為如下行: zend_extension = /usr/local/php/lib/php/extensions/no-debug-zts-xxx/xcache.so注意:如果php.ini文件中有多條zend_extension指令行,要確保此新增的行排在第一位。七、啟用服務(wù)器狀態(tài)mod_status模塊可以讓管理員查看服務(wù)器的執(zhí)行狀態(tài),它通過一個(gè)HTML頁面展示了當(dāng)前服務(wù)器的統(tǒng)計(jì)數(shù)據(jù)。這些數(shù)據(jù)通常包括但不限于: (1) 處于工作狀態(tài)的worker進(jìn)程數(shù); (2) 空閑狀態(tài)的worker進(jìn)程數(shù); (3) 每個(gè)worker的狀態(tài),包括此worker已經(jīng)響應(yīng)的請求數(shù),及由此worker發(fā)送的內(nèi)容的字節(jié)數(shù); (4) 當(dāng)前服務(wù)器總共發(fā)送的字節(jié)數(shù); (5) 服務(wù)器自上次啟動或重啟以來至當(dāng)前的時(shí)長; (6) 平均每秒鐘響應(yīng)的請求數(shù)、平均每秒鐘發(fā)送的字節(jié)數(shù)、平均每個(gè)請求所請求內(nèi)容的字節(jié)數(shù);啟用狀態(tài)頁面的方法很簡單,只需要在主配置文件中添加如下內(nèi)容即可: <Location /server-status>SetHandler server-statusRequire all granted </Location>需要提醒的是,這里的狀態(tài)信息不應(yīng)該被所有人隨意訪問,因此,應(yīng)該限制僅允許某些特定地址的客戶端查看。比如使用Require ip 172.16.0.0/16來限制僅允許指定網(wǎng)段的主機(jī)查看此頁面。?
轉(zhuǎn)載于:https://www.cnblogs.com/sexiaoshuai/p/7655201.html
總結(jié)
- 上一篇: javaCountDownLatch闭锁
- 下一篇: 02动手动脑问题