LAMP是一個縮寫,它指一組通常一起使用來運作動态網站或者伺服器的自由軟體:Linux+Apache+MySQL+php,自從Nginx的出現,Apache的一部分市場佔有率被Nginx獲得,原因是由于Apache的高并發性能不及Nginx.前不久Apache團隊釋出了httpd的2.4版本,性能上做了非常大的提升,為的就是挽回失去的市場佔有率,當然2.4版本剛剛出來不久,需要1-2年的時間才能夠流通.本實驗就是通過安裝2.4版本,mysql用的是mysql-5.5版本進行安裝部署的.接着我們開始進入LAMP搭建。現實生産環境下,不同的業務需求都不相同,是以更多的企業會考慮使用源碼搭建LAMP環境,這樣可以更加靈活使用各個功能參數将性能調制到最佳狀态。當然如果貴公司的環境比較簡單,可以考慮rpm包安裝。
注意:本實驗環境基本上都是從各大官網下載下傳的最新安裝包。
[root@rhel6u3-4 ~]# uname -r
2.6.32-279.el6.i686
[root@rhel6u3-4 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.3 (Santiago)
[root@rhel6u3-4 ~]#
[root@rhel6u3-4 ~]# cd mypackages/
[root@rhel6u3-4 mypackages]# ll
-rwxr-xr-x. 1 root root 982243 Dec 18 07:24 apr-1.4.6.tar.gz
-rwxr-xr-x. 1 root root 774770 Dec 18 07:24 apr-util-1.4.1.tar.gz
-rw-r--r--. 1 root root 9489788 Mar 1 19:21 Discuz.zip
-rwxr-xr-x. 1 root root 1273059 Dec 18 07:24 gd-2.0.34.tar.gz
-rwxr-xr-x. 1 root root 5616185 Dec 18 07:24 httpd-2.4.2.tar.gz
-rwxr-xr-x. 1 root root 875425 Dec 18 07:24 libmcrypt-2.5.8.tar.bz2
-rwxr-xr-x. 1 root root 655906 Dec 18 07:24 mhash-0.9.9.9.tar.bz2
-rwxr-xr-x. 1 root root 24660795 Dec 18 07:25 mysql-5.5.25a.tar.gz
-rwxr-xr-x. 1 root root 14060505 Dec 18 07:25 php-5.4.4.tar.gz
-rwxr-xr-x. 1 root root 782725 Dec 18 07:25 re2c-0.13.5.tar.gz
-rwxr-xr-x. 1 root root 134833 Dec 18 07:25 xcache-2.0.1.tar.gz
-rw-r--r--. 1 root root 4323279 Dec 11 2009 phpMyAdmin-2.11.0-all-languages.tar.gz
[root@rhel6u3-4 mypackages]#
<b>二、開始安裝部署</b><b>LAMP</b>
<b>腳本如下</b>
[root@rhel6u3-4 mypackages]# vim packages \\由于整個環境會涉及比較多的依賴關系包,是以我們先将一些依賴包裝上。(根據不同的環境可能不僅限于這些包)這裡建立了一個安裝依賴包的函數,在腳本中調用即可.
#Install install LAMP from dependent Packages!
PKG='gcc-c++ flex bison autoconf automake libpng-devel libjpeg-devel freetype-devel openjpeg-libs fontconfig-devel libXpm-devel cmake ncurses-devel apr-devel pcre-devel apr-util-devel openssl-devel libxml2-devel curl-devel' \\可以将所需要的包全部解除安裝裡面進行安裝
\\以下是個查詢包是否安裝機制,如果沒有安裝則安裝
for i in $PKG
do
rpm -q $i &> /dev/null
[ $? -ne 0 ] && UNPKG="$UNPKG $i"
done
[ -n "$UNPKG" ] && yum install $UNPKG -y
echo "Dependent Packages install OK...."
[root@rhel6u3-4 mypackages]# vim lamp.sh //以下是LAMP搭建腳本
#!/bin/bash
#install LAMP from Source Packages
#Designed by xiaonuo http://dreamfire.blog.51cto.com www.rsyslog.org
#If you have any questions,please send e-mail to [email protected]
#install dependent Package for LAMP, Please submit all source package into the directory ~/mypackages!
mkdir -p ~/mypackages
yum clean all
yum makecache
. ~/mypackages/packages \\調用函數安裝系統依賴包
\\除了這些redhatCD光牒自帶的包以外,還有一些其他的源碼包。
#install GD2 \\GD2是一個生成圖檔所使用的依賴包
cd ~/mypackages/
tar xf gd-2.0.34.tar.gz
cd gd-2.0.34
./configure --prefix=/usr/local/gd2
make && make install
#install apr \\apr是apache的一個依賴包,雖然系統是自帶這個包,但是版本太低,不适用于apache2.4版本。
tar xf apr-1.4.6.tar.gz
cd apr-1.4.6
./configure --prefix=/usr/local/apr
#install apr-util
tar xf apr-util-1.4.1.tar.gz
cd apr-util-1.4.1
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
# install libmcrypt mhash \\linmcrypt與mhash是php會依賴的一些包
tar xf libmcrypt-2.5.8.tar.bz2
cd libmcrypt-2.5.8
./configure --prefix=/usr/local/libmcrypt
tar xf mhash-0.9.9.9.tar.bz2
cd mhash-0.9.9.9
./configure --prefix=/usr/local/mhash
#install mysql-5.5.25 and configure mysql! \\Mysql這些選擇的是mysql5.5版本,些版本一改原有的編譯方式,使用cmake代替了原來的configure。
useradd mysql
tar xf mysql-5.5.25a.tar.gz
cd mysql-5.5.25a
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=all -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/var/lib/mysql
cmake . -LH檢視幫助,類似于./configure –help
-DCMAKE_INSTALL_PREFIX= 指定安裝主目錄
-DMYSQL_DATADIR 指定庫檔案存放目錄
-DMYSQL_UNIX_ADDR 指定socket檔案所在路徑
-DDEFAULT_CHARSET 指定使用的預設字元編碼
-DDEFAULT_COLLATION 指定使用的預設字元規則
-DWITH_EXTRA_CHARSETS 其他字元碼支援
-DWITH_MYISAM_STORAGE_ENGINE 編譯myisam存儲引擎
-DWITH_INNOBASE_STORAGE_ENGINE 編譯innodb存儲引擎
-DWITH_READLINE 增加readline支援,通過 readline,可以友善的在指令行上面移動,增删,複制,粘貼,搜尋。
-DENABLED_LOCAL_INFILE 讓mysql支援從本地檔案導入資料庫\\
cp /usr/local/mysql/support-files/my-small.cnf /etc/my.cnf
sed -i '37iuser = mysql' /etc/my.cnf
mkdir /var/lib/mysql/
chown mysql. /var/lib/mysql
echo "export PATH=$PATH:/usr/local/mysql/bin/" >> ~/.bashrc
. ~/.bashrc
/usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/var/lib/mysql --basedir=/usr/local/mysql --builddir=/usr/local/mysql
cp ~/mypackages/mysql-5.5.25a/support-files/mysql.server /etc/init.d/mysqld \\建立啟動腳本
chmod 755 /etc/init.d/mysqld
service mysqld start
chkconfig --add mysqld
mysqladmin password '123.com' \\建立root密碼
#install httpd
tar xf httpd-2.4.2.tar.gz
cd httpd-2.4.2
./configure --prefix=/usr/local/apache2 --enable-cache --enable-cache-disk --enable-so --enable-sed --enable-http --enable-mpms-shared=all --enable-cgid --enable-rewrite --enable-vhost-alias --enable-ssl --with-mpm=event --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/
/usr/local/apache2/bin/apachectl start
links -dump 127.0.0.1 \\完成之後記得測試httpd環境是否OK
echo 'If you see It works!,Congratulation! Please press enter '
#read \\如果你不放心,可以設定斷點,先測試網站是否可以通路,如果OK,按回車繼續即可
## install php
tar xf php-5.4.4.tar.gz
cd php-5.4.4
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-config-file-scan-dir=/usr/local/php/etc/php.d --with-mysqli=/usr/local/mysql/bin/mysql_config --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-xml --with-pdo-mysql=/usr/local/mysql/ --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-mbstring --with-mcrypt=/usr/local/libmcrypt/ --with-gd --enable-gd-native-ttf --with-openssl --with-mhash=/usr/local/mhash/ --enable-pcntl --enable-sockets --enable-zip --enable-soap --with-apxs2=/usr/local/apache2/bin/apxs --enable-cgi --disable-cli
php常見參數介紹
--with-config-file-path與--with-config-file-scan-dir在指定php配置檔案的路徑
--with-mysql和--with-mysqli在指定你的mysql的位置和它的相關工具
--with-iconv-dir,--with-freetype-dir,-with-jpeg-dir,--with-png-dir,--withgd,--with-zlib,--with-libxml-dir這些都是在啟用對某種檔案的支援
--with-curl和--with-curlwrappers是用于支援curl函數,此函數允許你用不同的協定連接配接和溝通不同的伺服器
--with-openssl,--with-mhash,--with-mcrypt這都是和加密有關的參數,啟用它們是為了讓php可以更好的支援各種加密。
"--enable-bcmath" 高精度數學運算元件。
"--enable-shmop" 和 "--enable-sysvsem" 使得你的PHP系統可以處理相關的IPC函數 。IPC是一個Unix标準通訊機制,它提供了使得在同一台主機不同程序之間可以互相通訊的方法。
"--enable-inline-optimization" 棧堆指針和優化線程。
"--enable-pcntl" 多線程優化。
mkdir /usr/local/php/etc
cp ~/mypackages/php-5.4.4/php.ini-production /usr/local/php/etc/php.ini
#install re2c xcache \\XCache是一個開源的opcode和var的緩存器,其工作原理是通過記憶體來緩存php的編譯結果,當使用者讀取php網頁時背景的php編譯器不參加編譯工作,而是将記憶體中的結果直接供使用者讀取,進而減輕頻繁編譯對伺服器造成的壓力。與同類的apc、eaccelerator相比XCache具有覆寫速度快、大流量/高負載的機器上運作穩定、能夠快速跟進php版本。安裝xcache之前先安裝xcache的一個信賴包re2c。之後安裝xcache
tar xf re2c-0.13.5.tar.gz
cd re2c-0.13.5
./configure
tar xf xcache-2.0.1.tar.gz
cd xcache-2.0.1
/usr/local/php/bin/phpize
./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config --enable-xcache-optimizer --enable-xcache-assembler --enable-xcache-encoder --enable-xcache-decoder
#Configure Xcache
cp -r ~/mypackages/xcache-2.0.1/admin/ /usr/local/apache2/htdocs/
chmod 755 /usr/local/apache2/htdocs/admin
chmod a+r /usr/local/apache2/htdocs/admin/*
mkdir -p /usr/local/php/etc/php.d
cp ~/mypackages/xcache-2.0.1/xcache.ini /usr/local/php/etc/php.d/
#vim /usr/local/php/etc/php.d/xcache.ini
XCACHE=$(find /usr/local/php/ -name xcache.so) \\建立一個變量内容為xcache.so的路徑
sed -i "s%/usr/local/lib/php/extensions/non-debug-non-zts-xxx/xcache\.so%$XCACHE%" /usr/local/php/etc/php.d/xcache.ini
sed -i 's%mOo%admini%' /usr/local/php/etc/php.d/xcache.ini \\建立使用者名為admini
sed -i 's%^xcache\.admin\.pass.*%xcache.admin.pass = "cbff36039c3d0212b3e34c23dcde1456"%' /usr/local/php/etc/php.d/xcache.ini \\建立密碼為123.com, xcache.admin.pass 是一個通過md5加密之後的密碼
cat >> /usr/local/apache2/htdocs/phpinfo.php <<endf \\建立PHP測試
<?php
phpinfo();
?>;
endf
echo "please input http://127.0.0.1/phpinfo.php to IE! if it's ok,please press enter "
#read\\可設定斷點測試php是否OK
#vim /usr/local/apache2/conf/httpd.conf \\配置apache與php內建
sed -i '375iAddType application/x-httpd-php \.php' /usr/local/apache2/conf/httpd.conf \\在375行下面插入一行
sed -i 's%index\.html%index.html index.php%' /usr/local/apache2/conf/httpd.conf \\寫上index.php首頁
sed -i '/httpd-mpm\.conf/s/#//' /usr/local/apache2/conf/httpd.conf
sed -i '/httpd-vhosts\.conf/s/#//' /usr/local/apache2/conf/httpd.conf \\開啟虛拟主機
sed -i '/httpd-info\.conf/s/#//' /usr/local/apache2/conf/httpd.conf
sed -i '/httpd-default\.conf/s/#//' /usr/local/apache2/conf/httpd.conf
\\注意:以上 4 個擴充配置檔案中的設定需要根據實際需要進行更改。
mkdir -p /usr/local/apache2/htdocs/bbs \\建立虛拟主機目錄,可更換為其他目錄
#vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
cat >/usr/local/apache2/conf/extra/httpd-vhosts.conf <<endf
NameVirtualHost *:80
<VirtualHost *:80> \\建立虛拟主機1,用于配置通路DZ論壇
ServerAdmin [email protected]
DocumentRoot "/usr/local/apache2/htdocs/bbs"
ServerName bbs.rsyslog.org
ErrorLog "logs/bbs.rsyslog.org-error_log"
CustomLog "logs/bbs.rsyslog.org-access_log" common
</VirtualHost>
<VirtualHost *:80> \\配置虛拟主機2,用于通路xcache管理頁面以及md5加密生成頁面
DocumentRoot "/usr/local/apache2/htdocs/admin"
ServerName admin.rsyslog.org
ErrorLog "logs/admin.rsyslog.org-error_log"
CustomLog "logs/admin.rsyslog.org-access_log" common
/usr/local/apache2/bin/apachectl stop
#http://admin.rsyslog.org/index.php Look xcache status! Need input username and password!
#http://admin.rsyslog.org/mkpassword.php Create MD5 password
#http://bbs.rsyslog.org/install Install Discuz
#http://bbs.rsyslog.org Access Discuz!
\\以上腳本結束
請在DNS中添加A記錄
bbs A 192.168.100.104
admin A 192.168.100.104
<b>實驗結果如下</b><b>:</b>
<a target="_blank" href="http://blog.51cto.com/attachment/201304/123252305.png"></a>
<a target="_blank" href="http://blog.51cto.com/attachment/201304/123304797.png"></a>
<a target="_blank" href="http://blog.51cto.com/attachment/201304/123316296.png"></a>
<b>實驗擴充</b><b></b>
<b></b>
<b>1、 </b><b>安裝</b><b>mysqladmin</b><b>管理</b><b>mysql</b>
[root@rhel6u3-4 admin]# mkdir /usr/local/apache2/htdocs/admin/phpmyadmin
[root@rhel6u3-4 mypackages]# tar xf phpMyAdmin-2.11.0-all-languages.tar.gz
[root@rhel6u3-4 mypackages]# cp -rp phpMyAdmin-2.11.0-all-languages/* /usr/local/apache2/htdocs/admin/phpmyadmin/
[root@rhel6u3-4 mypackages]# cd /usr/local/apache2/htdocs/admin/phpmyadmin/
[root@rhel6u3-4 phpmyadmin]# cp -p config.sample.inc.php config.inc.php
[root@rhel6u3-4 phpmyadmin]# vim config.inc.php
$cfg['blowfish_secret'] = 'rsyslog.org';
<a target="_blank" href="http://blog.51cto.com/attachment/201304/123405991.png"></a>
<a target="_blank" href="http://blog.51cto.com/attachment/201304/123418868.png"></a>
<b>以上為最簡單的配置</b><b>,</b><b>可以看到</b><b>phpmyadmin</b><b>可以對資料庫進行備份恢複、對表進行填寫修改删除等操作,相對于指令操作而言還是挺友善的。</b><b></b>
<b> </b>
<b>2、 </b><b>優化</b><b>php,</b><b>提高安全性</b><b></b>
注意:以下為php的内部函數部分,可根據公司開發人員或者自身需求而定。
[root@rhel6u3-4 admin]# vim /usr/local/php/etc/php.ini
disable_functions = phpinfo,passthru,exec,system,chroot,scandir,chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,
proc_open,proc_get_status,error_log,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,sy mlink,leak, popepassthru,stream_socket_server
<b>3、 </b><b>給論壇導入資料(</b>一個遊戲論壇的資料,呵呵!<b>)</b>
[root@rhel6u3-4 mypackages]# cp dbbackup.sql /var/lib/mysql/
[root@rhel6u3-4 mysql]# mysql -uroot –p
mysql> use dz_bbs
mysql> source dbbackup.sql
<a target="_blank" href="http://blog.51cto.com/attachment/201304/123524186.png"></a>
後面陸續會講 web層的負載均衡,負載均衡層的高可用,資料庫的負載均衡等等
本文轉自淩激冰51CTO部落格,原文連結:http://blog.51cto.com/dreamfire/1168361,如需轉載請自行聯系原作者