Linux(centOS)手动安装Apache+MySQL+PHP+Memcached+Nginx原创无错版
最后更新時間:2012.3.21
===================
第一步:Apache安裝(已更新到2.2.22)
===================
?
下載 去 http://www.apache.org?自己找新的
http://httpd.apache.org/
?國內有很多鏡像點例如"人人"和"163"
http://labs.renren.com/
注意要找httpd,因為apache下有很多項目,其中httpd就是web服務器
http://labs.renren.com/
英文文檔:http://httpd.apache.org/docs/2.2/
中文文檔:?http://www.php100.com/manual/apache2/index.html
-------------------------------------------------
老版本地址:
http://archive.apache.org/dist/httpd/
?
#wget http://labs.renren.com/apache-mirror/httpd/httpd-2.2.22.tar.gz
#tar zxvf httpd-2.2.22.tar.gz
#cd ./httpd-2.2.22
#./configure --prefix=/usr/local/apache2/ --enable-proxy --enable-ssl --enable-cgi --enable-rewrite --enable-so --enable-module=so
#make
#make install
說明:如果make不成功,那么是configure不成,例如你缺少ssl組件,可以去掉
--enable-ssl
-----------------------------------------------
如果出現“No recognized SSL/TLS toolkit detected”錯誤
#yum -y install openssl openssl-devel
------------------------
如果Make: command not found
看看是不是make沒裝
# rpm -qa|grep make???
如果沒有信息那么說明make沒裝
#yum install make?即可
-------------------
手動啟動
# /usr/local/apache2/bin/apachectl start
?
重啟
# /usr/local/apache2/bin/apachectl restart
?如果報錯說:
Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName
需要修改/usr/local/apache2/conf/httpd.conf在
#serverName www.example.com:80
這個位置修改為:
serverName localhost:80
--------------------------
YUM自動安裝的啟動
#service httpd restart
輸入這個會提示出錯 httpd未被被識別的服務
這個請見本博客另一篇介紹
-------------------------
這就說明安裝成功了。
自己在瀏覽器輸入:http://localhost/
?
?
這樣就說明成功了!
------------------------------------------
防火墻配置
注意如果你希望在本地機器例如xp訪問虛擬機的網頁,如果是centos6需要修改防火墻啟動80端口
/etc/sysconfig
?
[root@centos6 ~]# vim /etc/sysconfig/iptables
添加下面一行,打開防火墻80端口:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
重啟防火墻
#/etc/init.d/iptables restart
查看CentOS防火墻信息:/etc/init.d/iptables status
關閉CentOS防火墻服務:/etc/init.d/iptables stop
------------------------
開機加入自動啟動服務
編輯rc.local文件
#vi /etc/rc.d/rc.local
加入如下啟動命令
/usr/sbin/apachectl start
/etc/rc.d/init.d/mysqld start
/etc/rc.d/init.d/smb start
/usr/local/subversion/bin/svnserve -d
注意:我的這個路徑是yum安裝這些服務得到的路徑,填寫時要根據自己的安裝路徑,找不到可以借助whereis命令,主要是找到apachectl 、mysqld 、smb 這三個啟動文件。
------------------------------------------
增加權限和文件格式轉換(不然apache會報沒權限執行文件)
#chmod +x 文件
#dos2unix 文件
?----------------------------------------
ab測試
#ab -n 1000 ?-c ?10?http://localhost/
------------------------------------------
卸載apache
如果是源碼安裝
#rm ? -rf ? 你的apache安裝路徑
同樣作用于其他
========================
httpd啟用虛擬主機
#Include conf/extra/httpd-vhosts.conf
httpd-vhosts.conf
<VirtualHost *:80>
? ? ServerAdmin webmaster@dummy-host.example.com
? ? DocumentRoot "/www/"
<Directory />
#拒絕所有請求
# ? ?Deny from all
#是否顯示列表
# ? ?Options Indexes FollowSymLinks
#是否啟用rewrite
# ? ?AllowOverride all
========================
YUM方式安裝的,這樣卸載:
#yum remove httpd
否則要用
#rpm -qa|grep httpd
一個個刪除
# rpm -e? ......
?
===================
第二步 Mysql安裝
===================
第一種方法:使用yum自動安裝
#yum -y install mysql-server
----------------------------------------
第二種:下載源碼編譯安裝
#wget http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-5.1/mysql-5.1.57.tar.gz
#tar zxvf mysql-5.1.57.tar.gz
#cd mysql-5.1.57
#./configure --prefix=/usr/local/mysql --with-mysqld-user=mysql --with-charset=gbk --bindir=/usr/local/bin --sbindir=/usr/local/sbin --with-plugins=innobase --with-partition
#make
#make install
#cd /usr/local/mysql
#mysql_install_db
#chown -R mysql:mysql *
#cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysql
#/etc/rc.d/mysql start (加入到/etc/rc.local 以便系統重啟后自動啟動mysql)
修改/etc/rc.local
?
說明:請修改mysql配置文件my.cnf中wait_timeout = 600(有些程序執行時間較長,mysql超時時間如果太短的話,容易發生mysql server has go away的錯誤)
注意事項:
安裝完成后,需要拷貝一份my.cnf到ect目錄下,使用support-files目錄中的一個作為模板。在這個目錄中有4個模板文件,是根據不同機器的內存定制的。
#cp support-files/my-medium.cnf /etc/my.cnf
?
===================
第三步 PHP安裝(已更新到5.4.8版)
===================
去www.php.net找最新的版本
5.4安裝
#wget? http://cn2.php.net/get/php-5.4.8.tar.gz/from/this/mirror
#tar zxvf? php-5.4.8.tar.gz
#cd php-5.4.8
?
#./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql-dir=/usr/local/mysql
如果失敗 可能原因有各種各樣
-------------------------------
如果提示:Cannot find MySQL header files under /date/mysql.
這個是缺少了 mysql-devel 安裝包,用
yum -y install mysql-devel 即可解決!
#yum -y install mysql-devel
-------------------------------
如果提示:xml2-config not found. Please check your libxml2 installation.
需要安裝libxml2
#yum install libxml2-devel
-------------------------------
如果提示:Try adding --with-zlib-dir=<DIR>試著添加一下 zlib的路徑,如下
#./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql-dir=/usr/local/mysql --with-zlib-dir=/usr/local/zlib
------------------------------
完全成功才可以編譯安裝
#make
#make install
------------------------------------------------------
安裝失敗如果提示:Cannot load /usr/local/apache2/modules/libphp5.so into server:
原因:是Linux有一個SELinux保護模式引起的。
?解決辦法:
1關閉SELINUX的方法:
vi /etc/selinux/config 將SELINUX=enforcing 改成SELINUX=disabled 需要重啟
這個方法可能會對服務器帶來風險。
2不關閉SELINUX的方法:
# setenforce 0
# chcon -c -v -R -u system_u -r object_r -t textrel_shlib_t /usr/local/apache/modules/libphp5.so
# service httpd restart
# setenforce 1
--------------------------------------
復制php.ini配置文件
參考此文http://blog.csdn.net/21aspnet/article/details/7001344
注意php新版本此文件名有變更
#cp php.ini-production /usr/local/php/lib/php.ini
------------------------------
修改apache的配置文件httpd.conf
增加
AddType application/x-httpd-php .php
?
修改www的默認文件地址DocumentRoot
注意還要修改Directoty的路徑和上面的一樣
?
重啟httpd
?
測試php文件
phpinfo()
---------------------------------
?執行php文件
#/usr/local/php/bin/php ? ?xx.php
?
加速器:
PHP安裝eAccelerator
?
PHP安裝擴展的兩種類型:
?
1.PHP安裝擴展mcrypt以及相關依賴項 【PHP安裝PECL擴展的方法】
2.PHP安裝與使用VLD查看opcode代碼【PHP安裝第三方擴展的方法】
?
===================
第四步 Memcached安裝
===================
可以參考http://timke.blog.163.com/blog/static/1015873062009111094715315/
說明必須先安裝libevent
官網? ?http://libevent.org/? 找最新的版本
#wget https://github.com/downloads/libevent/libevent/libevent-2.0.16-stable.tar.gz
#tar xzvf libevent-2.0.16-stable.tar.gz
#cd libevent-2.0.16-stable
#./configure --prefix=/usr
#make
#make install
--------------------------------------------?
第二步 安裝memcached
# wget http://memcached.googlecode.com/files/memcached-1.4.9.tar.gz
#tar xzvf memcached-1.4.9.tar.gz
#cd memcached-1.4.9
#./configure --prefix=/usr/local/memcached --with-libevent=/usr
注意這里選擇libevent的位置即可? 例如你的是在–with-libevent=/usr/local/libevent/
#make
#make install
啟動
#/usr/local/memcached/bin/memcached -d -m 100 -uroot -l 0.0.0.0 -p 11211 -c 512 -P /usr/local/memcached/memcached.pid
查看詳情
#ps aux|grep mem???
輸出pid
#cat /usr/local/memcached/memcached.pid
?
查看內存使用
#top -n 1 |grep Mem
-------------------------------------------
第三步? 安裝memcached的php擴展memcache
#wget http://pecl.php.net/get/memcache-2.2.6.tgz
#tar vxzf memcache-2.2.6.tgz
#cd memcache-2.2.6
#/usr/local/php/bin/phpize
此處出錯可以參考 http://blog.csdn.net/21aspnet/article/details/7001182
#./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir
或者
#./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir=/usr
#make
#make install?
#vi /usr/local/php/lib/php.ini
php.ini添加
extension=memcache.so
<完>
-------------------
重啟
# /usr/local/apache2/bin/apachectl restart
---------------
測試
$memcache = new Memcache; //創建一個memcache對象
$memcache->connect('localhost', 11211) or die ("Could not connect"); //連接Memcached服務器
$memcache->set('key', 'test'); //設置一個變量到內存中,名稱是key 值是test
$get_value = $memcache->get('key'); //從內存中取出key的值
echo $get_value;
?
--------------
或者手動指定
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"
class MemCache {var $mem = null;private static $isLibLoad = false;//put your code herepublic function Com_MemCache(){if(!self::$isLibLoad){dl("memcache.so");self::$isLibLoad = true;}$this->mem = new Memcache();$this->mem->connect("127.0.0.1", 11211);}public function set($key,$value,$flag = null,$expire = 5000){$this->mem->set($key, $value, $flag, $expire);}public function get($key){return $this->mem->get($key);}function __destruct(){$this->mem->close();}
}
調用
$cache = new MemCache();$mm = $cache ->get("A");if($mm==null){$cache->set('A', date('Y-m-j').' '.date('G:i:s'),null,15);}
echo $mm;
?
因為MemCache.php有 dl("memcache.so");所以在php.ini中不需要extension=memcache.so了,但是前一句extension_dir是要的。
===================
????????? Nginx安裝
===================
官網:http://wiki.nginx.org/Install
下載
#wget http://nginx.org/download/nginx-1.2.6.tar.gz
#./configure --prefix=/usr/local/nginx
#make
#make install
?
安裝Nginx時報錯
./configure: error: the HTTP rewrite module requires the PCRE library.
安裝pcre-devel解決問題
yum -y install pcre-devel
?
錯誤提示:./configure: error: the HTTP cache module requires md5 functions
from OpenSSL library. You can either disable the module by using
--without-http-cache option, or install the OpenSSL library into the system,
or build the OpenSSL library statically from the source with nginx by using
--with-http_ssl_module --with-openssl=<path> options.
解決辦法:
yum -y install openssl openssl-devel
?
總結:
yum -y install pcre-devel openssl openssl-devel
./configure --prefix=/usr/local/nginx
make
make install
?
啟動nginx
#/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
?
安裝成功的頁面
停止操作
停止操作是通過向nginx進程發送信號(什么是信號請參閱linux文 章)來進行的
步驟1:查詢nginx主進程號
ps -ef | grep nginx
在進程列表里 面找master進程,它的編號就是主進程號了。
步驟2:發送信號
從容停止Nginx:
kill -QUIT 主進程號
快速停止Nginx:
kill -TERM 主進程號
強制停止Nginx:
pkill -9 nginx
另外, 若在nginx.conf配置了pid文件存放路徑則該文件存放的就是Nginx主進程號,如果沒指定則放在nginx的logs目錄下。有了pid文 件,我們就不用先查詢Nginx的主進程號,而直接向Nginx發送信號了,命令如下:
kill -信號類型 '/usr/nginx/logs/nginx.pid'
平滑重啟
如果更改了配置就要重啟Nginx,要先關閉Nginx再打開?不是的,可以向Nginx 發送信號,平滑重啟。
平滑重啟命令:
kill -HUP 住進稱號或進程號文件路徑
或者使用
?
/usr/nginx/sbin/nginx -s reload
?
?
注意,修改了配置文件后最好先檢查一下修改過的配置文件是否正 確,以免重啟后Nginx出現錯誤影響服務器穩定運行。判斷Nginx配置是否正確命令如下:
nginx -t -c /usr/nginx/conf/nginx.conf
或者
/usr/nginx/sbin/nginx -t
?
平滑升級
如果服務器正在運行的Nginx要進行升級、添加或刪除模塊時,我們需 要停掉服務器并做相應修改,這樣服務器就要在一段時間內停止服務,Nginx可以在不停機的情況下進行各種升級動作而不影響服務器運行。
步驟1:
如 果升級Nginx程序,先用新程序替換舊程序文件,編譯安裝的話新程序直接編譯到Nginx安裝目錄中。
步 驟2:執行命令
kill -USR2 舊版程序的主進程號或進程文件名
此時舊的Nginx主進程將會把自己的進程文件改名為.oldbin,然后執行新版 Nginx。新舊Nginx會同市運行,共同處理請求。
這時要逐步停止舊版 Nginx,輸入命令:
kill -WINCH 舊版主進程號
慢慢舊的工作進程就都會隨著任務執行完畢而退出,新版的Nginx的工作進程會逐漸取代舊版 工作進程。
此 時,我們可以決定使用新版還是恢復到舊版。
不重載配置啟動新/舊工作進程
kill -HUP 舊/新版主進程號
從容關閉舊/新進程
kill -QUIT 舊/新主進程號
如果此時報錯,提示還有進程沒有結束就用下面命令先關閉舊/新工作進程,再關閉主進程號:
kill -TERM 舊/新工作進程號
這樣下來,如果要恢復到舊版本,只需要上面的幾個步 驟都是操作新版主進程號,如果要用新版本就上面的幾個步驟都操作舊版主進程號就行了。
上面就是Nginx的一些基本的操作,希望以后Nginx能有更好的方法來處理這些操作, 最好是Nginx的命令而不是向Nginx進程發送系統信號。
總結
以上是生活随笔為你收集整理的Linux(centOS)手动安装Apache+MySQL+PHP+Memcached+Nginx原创无错版的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 望远镜多少钱啊?
- 下一篇: 利用负载均衡优化和加速HTTP应用