標籤:des style http io os 使用 ar strong for
關於LAMP的各種知識,今天主要是介紹一下在CentOS下安裝,搭建一個Web伺服器的過程。(本文是使用安裝包安裝)
一、簡介
什麼是LAMP LAMP是一種Web網路應用和開發環境,是Linux, Apache, MySQL, Php/Perl的縮寫,每一個字母代表了一個組件,每個組件就其本身而言都是在它所代表的方面功能非常強大的組件。 LAMP這個詞的由來最早始於德國雜誌“c‘t Magazine”,Michael Kunze在1990年最先把這些公事包在一起創造了LAMP的縮寫字。這些組件並不是開始就設計為一起使用的,但是,這些軟體都是開源的,可以很方便的隨時獲得並免費使用,這就導致了這些組件經常在一起使用。這些組件的相容性也在不斷完善,為了改善不同組件之間的協作,已經建立了某些擴充功能,在一起的應用情形變得非常普便,因而成為目前最流行的web應用基礎架構。
LAMP的組件 平台由四個組件組成,呈分層結構,每一層都提供了整個架構的一個關鍵區段: Linux:Linux 處在最底層,提供作業系統。它的靈活性和可定製化的特點意味著它能夠產生一種高度定製的平台,讓其它組件在上面運行。其它組件運行於Linux 之上,但是並不一定局限於 Linux,也可以在 Microsoft Windows, Mac OS X 或 UNIX上運行。 Apache:Apache位於第二層,它是一個Web 服務平台,提供可讓使用者獲得 Web 頁面的機制。Apache 是一款功能強大、穩定、可支撐關鍵任務的Web伺服器,Internet 上超過 50% 的網站都使用它作為 Web 服務器。 MySQL:MySQL 是最流行的開源關聯式資料庫管理系統,是LAMP的資料存放區端。在 Web 應用程式中,所有帳戶資訊、產品資訊、客戶資訊、業務資料和其他類型的資訊都儲存於資料庫中,通過 SQL 語言可以很容易地查詢這些資訊。 PHP/Perl:Perl是一種靈活的語言,特別是在處理文本要素的時候,這種靈活性使Perl很容易處理通過 CGI介面提供的資料,靈活地運用文字檔和簡單資料庫支援動態要素。PHP 是一種被廣泛應用的開放原始碼的多用途指令碼語言,它可嵌入到 HTML中,尤其適合 web 開發。可以使用 PHP 編寫能訪問 MySQL 資料庫中的資料和 Linux 提供的一些特性的動態內容。
二、系統內容
系統平台:CentOS6.3
Apache版本:httpd-2.2.9
Mysql 版本:mysql-5.0.41
Php版本:php-5.2.6
在CentOS下安裝軟體有兩種方式,第一種是使用yum命令,自動安裝軟體,安裝的軟體具有固定的位置和固定的目錄;第二種是下載源碼安裝包,手動解壓,配置,編譯和安裝,在安裝的過程中可以自己選擇安裝的目錄和路徑等。在這裡,我選擇的安裝方式是第一種,比較便捷,雖然在靈活性上有所欠缺,但是對於實驗階段已經夠了。
三、安裝
(1):配置防火牆(預設情況下,連接埠80和3306是拒絕訪問的,在防火牆上進行配置):
1.vi /etc/sysconfig/iptables(在"COMMIT"的上一行加上如下兩句)
2.-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT(允許80連接埠通過防火牆)
3.-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT(允許3306連接埠通過防火牆)
接著重啟防火牆使得配置生效:
1./etc/init.d/iptables restart
(2):安裝Apache
使用以下命令安裝Apache:
1.yum install httpd
如果出下下面所示的語句,說明已經安裝了Apache了,不需要重新安裝:
安裝完之後,重新啟動Apache:/etc/init.d/httpd restart
接著將Apache設定為開機啟動:chkconfig httpd on.(這一步使得伺服器不需要在每次重啟的時候都要手動啟動httpd服務)
要查看httpd服務的啟動狀態,可以使用命令:chkconfig --list httpd(會顯示httpd在各個層級(level)下的啟動狀態)
(3):安裝MySQL
1、使用以下命令安裝MySQL:
1.yum install mysql mysql-server
同樣,如果出現提示已安裝的話,就說明系統安裝了MySQL了,可以跳過這一步,否則,系統接下來會自動安裝MySQL。
安裝完成了之後,啟動MySQL:/etc/init.d/mysql start
將MySQL設定為開機啟動:chkconfig mysqld on
最後,拷貝設定檔:cp /usr/share/mysql/my-medium.cnf /etc/my.cnf (在/etc下有個my.cnf檔案,直接覆蓋就行了)
2、用以下命令給root賬戶設定密碼
1.mysql_secure_installation
根據提示輸入2次密碼,就設定成功了。注意,在設定過程中,會提示刪除是否anonymous使用者,是否拒絕root的遠端存取,是否刪除測試用的資料庫等,這些都需要根據自己的實際情況進行選擇。最後出現:Thanks for using MySQL!,設定密碼成功了。
重新啟動MySQL:/etc/init.d/mysqld restart
(4)安裝PHP
1、使用以下命令安裝PHP:
1.yum install php
根據提示往下安裝就行了。安裝完之後重新啟動Apache:/etc/init.d/httpd restart
2、安裝PHP組件,是PHP支援MySQL
可以使用命令:yum search php來查看PHP的組件,選擇需要的模組進行安裝:
(php組件列表http://www.php100.com/html/itnews/PHPxinwen/2013/0305/12149.html)
yum install php-mysqlphp-gd libjpeg* php-imap php-ldap php-odbc php-pear php-xml php-xmlrpcphp-mbstring php-mcrypt php-bcmath php-mhash libmcrypt
安裝完之後,重啟Apache:/etc/init.d/httpd restart
重啟MySQL:/etc/init.d/mysqld restart
到了這一步,LAMP中的AMP都已經安裝完畢了,但是web伺服器此時並不能被訪問,因為要訪問伺服器,還需要對Apache和PHP進行相應的配置。
第一步:配置Apache
修改Apache設定檔:vi /etc/httpd/conf/httpd.conf,並在檔案中尋找下面所在行,進行修改(尋找可以在vi的一般模式下輸入“/要尋找的字元”進行尋找):
ServerTokens OS 修改為: ServerTokens Prod (在出現錯誤頁的時候不顯示伺服器作業系統的名稱)
ServerSignature On 修改為: ServerSignature Off (在錯誤頁中不顯示Apache的版本)
Options Indexes FollowSymLinks 修改為: Options Includes ExecCGI FollowSymLinks (允許伺服器執行CGI及SSI,禁止列出目錄)
#AddHandler cgi-script .cgi 修改為: AddHandler cgi-script .cgi .pl (允許副檔名為.pl的CGI指令碼運行)
AllowOverride None 修改為: AllowOverride All (允許.htaccess)
AddDefaultCharset UTF-8 修改為: AddDefaultCharset GB2312 (添加GB2312為預設編碼)
Options Indexes MultiViews FollowSymLinks 修改為 Options MultiViews FollowSymLinks (不在瀏覽器上顯示樹狀目錄結構)
DirectoryIndex index.html index.html.var 修改為: DirectoryIndex index.html index.htm Default.html Default.htm index.php Default.php index.html.var (設定預設首頁檔案,增加index.php)
KeepAlive Off 修改為: KeepAlive On (允許程式性聯機)
MaxKeepAliveRequests 100 修改為: MaxKeepAliveRequests 1000 (增加同時串連數)
修改好之後儲存配置,重新啟動Apache:/etc/init.d/httpd restart
建議刪除預設的測試頁面:rm -f /etc/httpd/conf.d/welcome.conf /var/www/error/noindex.html
第二步:配置PHP
修改PHP設定檔:vi /etc/php.ini,以下需要修改的行的位置可以通過vi的尋找命令來尋找:
date.timezone = PRC #把前面的分號去掉,改為date.timezone = PRC
(PRC,People’s Republic of China,中華人民共和國,也就是日期使用中國的時區)
如果想保證伺服器的安全,請將這個函數加到disable_functions裡或者將安全模式開啟吧
disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname
#列出PHP可以禁用的函數,如果某些程式需要用到這個函數,可以刪除,取消禁用。
expose_php = Off #禁止顯示php版本的資訊
display_errors = OFF #關閉錯誤提示
register_globals = OFF #關閉註冊全域變數
magic_quotes_gpc = On #開啟magic_quotes_gpc來防止SQL注入
log_errors = On #記錄錯誤記錄檔
error_log = /var/log/php/error_log.log #設定錯誤記錄檔存放目錄,檔案必須允許apache使用者的和組具有寫的許可權(注意,在修改之前,要先建立檔案/var/log/php/error_log.log,然後在修改其屬性,使其屬於apache使用者和使用者組。chown apache /var/log/php/error_log.log和chgrp apache /var/log/php/error_log.log)
open_basedir = .:/tmp/ #設定表示允許訪問目前的目錄(即PHP指令檔所在之目錄)和/tmp/目錄,可以防止php木馬跨站
經過安裝和配置之後,web伺服器基本上已經搭建起來了,可以對其進行訪問。
測試篇
在目錄/var/www/html下:cd /var/www/html
建立php檔案:vi index.php
<?php
phpinfo();
?>
那麼,在瀏覽器中輸入本機地址的時候,就可以訪問到剛才建立的index.php網頁檔案了。
注意:apache的預設程式目錄是:/var/www/html,網頁檔案放在這裡就可以被訪問到。需要保證這個目錄是屬於使用者apache和使用者組apache的。
MySQL的資料庫目錄是:/var/lib/mysql
寫到這裡,LAMP就安裝配置完畢了,瀏覽器只要輸入伺服器的IP地址或者是網域名稱的話,就能夠訪問到伺服器上的網頁檔案了。
CentOS下安裝配置LAMP(Linux+Apache+MySQL+PHP)