全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1406
推到 Plurk!
推到 Facebook!

LAMP - WEBHOSTING 實作全紀綠

 
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-22 12:44:45 IP:61.221.xxx.xxx 未訂閱
此為轉貼資料    LAMP - WEBHOSTING 實作全紀綠 http://liy.slat.org/study/tips/lamp.htm    LAMP - WEBHOSTING 實作全紀綠  所謂的LAMP - WEBHOSTING就是使用LINUX + APACHE + MySQL + PHP 所建制的虛擬網頁伺服器主機以達到多個網站放置在同一部主機上的功能 ,並可以使用PHP語法寫動態網頁,進而達到結合後端的MySQL資料庫,而小弟使用的平台如下: RedHat Linux 7.1 + APACHE-1.3.19-5 + MySQL-3.23.36 + PHP-4.0 使用上面的平台,在配合FTP與PHPADMIN等軟體,可以達到不錯的功能。  由 網中人 所建立。 最後修改時間為 2003-06-01 23:24:30 ,已有 1 人觀看過本文。          LAMP - WEBHOSTING 實作全紀綠     -------------------------------------------------------------------------------- 作者: ericshei  日期: 01/11/05 17:53 由於小弟的公司希望多增加一部走linux平台的WEBHOSTING SERVER, 也因為自己前沒有實作過整個環境,在加上對linux的熟悉也是入門階段, 也因為自己一直想為study-area做一點小貢獻(因為受這個地方的幫助太多了)所以寫 出自己學習的架設的過程,希望對須要的網友有一點小小的幫助,如果 文章中有錯誤的地方,也請大家一定要用力指正小弟(?死我好了啦! ^_^). 整個實做的過程,除了自己在網路上和大家討論的資料外,另外參考了 ,知城出版社所出版的Linux 網路實作經典 與 企業級網路應用,這二本 書的作者高健智老師,在市網中心上有很多他所寫的文章都很具參考價值 有興趣的朋友可以去市網中心看看 http://www.tp.edu.tw/ 此篇文章,只討論平台的建立,並不著重其中各項的使用與設定,因為範圍甚廣, 且不是小弟的能力可以達成的,LINUX 、 APACHE 、 MySQL 、 PHP各完整的說明 請參考相關網站或書籍. 所謂的LAMP - WEBHOSTING就是使用LINUX APACHE MySQL PHP 所建制的虛擬網頁伺服器主機以達到多個網站放置在同一部主機上的功能 ,並可以使用PHP語法寫動態網頁,進而達到結合後端的MySQL資料庫,而小弟使用的平台如下: RedHat Linux 7.1 APACHE-1.3.19-5 MySQL-3.23.36 PHP-4.0 使用上面的平台,在配合FTP與PHPADMIN等軟體,可以達到不錯的功能. 首先檢查安裝的軟體是否完整: #rpm -qa | grep "套件名稱" 利用上面的指令可以查詢該套件的版本及是否有安裝該套件, 檢查是否有安裝如下套件,如果沒有的話可皆可在光碟片中找到, 使用rpm指令安裝(想了解rpm的用法可參考http://www.study-area.org/linux/linuxfr1.htm的Linux System ) #rpm -qa | grep apache apache-1.3.19-5 # rpm -qa | grep mysql mysql-server-3.23.36-1 mysql-3.23.36-1 php-mysql-4.0.4pl1-9 # rpm -qa | grep php php-imap-4.0.4pl1-9 php-4.0.4pl1-9 php-ldap-4.0.4pl1-9 php-pgsql-4.0.4pl1-9 php-mysql-4.0.4pl1-9 如果有的話表示您的PHP4、APACHE、MYSQL階安裝完成 第二測試環境 一、APACHE 可在瀏覽器上輸入HTTP://"您的IP"應可看到APACHE的預設網頁. 若沒有的話可以輸入如下指令啟動: #/etc/rc.d/init.d/httpd start 若想每次重開機會自動起動的話請輸入: #setup 選擇System services 在將"[ ] httpd"打上"*"號 關於APACHE可參考: http://www.study-area.org/linux/linuxfr1.htm的Linux Servers 二、PHP4 請先編輯/etc/httpd/conf/httpd.conf確定有如下二行的設定 LoadModule php4_module modules/libphp4.so AddModule mod_php4.c 尋找"DirectoryIndex"的設定,這裡是設定首頁檔的名稱,可加入index.php等可能會用到的php首頁名稱,如下: DirectoryIndex index.html index.htm index.shtml index.php index.php4 index.php3 index.cgi 在來編輯/etc/httpd/conf/srm.conf這一行設定php網頁文件檔案的附檔案的名稱,如下: AddType application/x-httpd-php .php .php3 .php4 重新啟動Apache如下: #/etc/rc.d/init.d/htpd restart 接下來請在/var/www/html建立一個測試檔案如test.php 內容如下: <? phpinfo(); ?> 存檔後請在瀏覽器輸如http://"您的IP"/test.php如看到PHP的版本就表示php可正常作業了. ^_^ 三、MySQL 第一次使用MySQL可以輸入如下指令啟動: #/etc/rc.d/init.d/mysqld start 若想每次重開機會自動起動的話請輸入: #setup 選擇System services 在將"[ ] mysqld"打上"*"號 MySQL預設值,是沒有設定密碼的,所以只要在提示符號下輸入"mysql"即可. 看到提示符由"#"變為"mysql>"就可以控制資料庫了. 其實mysql指令,是以mysql這個用戶端軟體與MySQL伺服器建立連結,建立時同時傳送了 主機、帳號與密碼三個參數,語法如下: #mysql [-h 主機] [-u 使用者] [-p密碼] 而我們之前操作並沒有輸入這些參數,是因為執行時會使用其預設值: #mysql -h localhost -u 登入linux的系統帳號 而密碼則不傳送. 為了安全起見,我們將mysql的root帳號設定密碼,如下: #mysqladmin -u root -p password <新的密碼> mysqladmin則是另一個用戶端軟體. 設定完成後,往後要登入時就使用如下格式登入: #mysql -u 使用者 -p 第三虛擬主機的建立(WEBHOSTING) 也就是可以把一個以上的網站放在部機器上 在linux上實作webhosting有二種方式 第一種為「Address-Based虛擬主機」 這種方式是用IP aliase配合DNS實作. 第二種為「Name-Based虛擬主機」 此種方式只有用一個IP ,但使用多個FQDN 對應到此IP上,再配合DNS實作. 我想大家可利用的ip並不多(我就是這一種)所以我是使用第二種方式實作出來的 步驟如下: 1.須用網域名稱才可實作,請先申請欲使用的網域名稱,目前TWNIC己不提供申請,若您還沒有網域可用,請由下列擇一申請: 協志聯合科技股份有限公司(http://reg.tisnet.net.tw) 亞太線上服務股份有限公司(http://rs.apol.com.tw/) 中華電信數據通信分公司(http://nweb.hinet.net) 網路中文資訊股份有限公司(http://www..net-chinese.com.tw) 網路家庭資訊服務股份有限公司(http://myname.pchome.com.tw) 數位聯合電信股份有限公司(http://rs.seed.net.tw) 2.我們假設您己經申請了二個網域: aaa.com.tw與bbb.com.tw 而ip為123.123.123.123 而在裝linux時可將主機名稱,由上述網域擇一取名: 如www.aaa.com.tw或www.bbb.com.tw 到您註冊的網域公司,將您的主機名稱與ip位罝設定上去(一般要等24小時才會生?哦) 例如我的主機名稱為www.aaa.com.tw 那我在aaa.com.tw的設定就是,主機名稱www.aaa.com.tw而ip是123.123.123.123 另外在www.bbb.com.tw設定是,主機名稱www.aaa.com.tw而ip是123.123.123.123(注意是同上一個設定哦!而不是www.bbb.com.tw) 這樣在網域的解析就設定完成了,要是您有自己的dns則加在您的正解檔中即可. 3.接下來是Apache的設定: 編輯/etc/httpd/conf/httpd.conf尋找設定 -- ServerAdmin "網站管理者的E-mail" | DocumentRoot "網站的目錄位置" | ServerName "填入您完整的網址" | 這樣一個區段 Options Indexes FollowSymlinks ExecCgi |-->是一個虛擬 ScriptAlias /cgi-bin/ "如要用到cgi在這輸入您的cgi目錄" | 主機的設定 TransferLog "定義虛擬主機的存取記錄檔" | Errorlog "定義虛擬主機的錯誤記錄檔" | -- 可參考下面設定 NameVirtualHost 123.123.123.123 ServerAdmin admin@aaa.com.tw DocumentRoot /home/www.aaa ServerName www.aaa.com.tw Options Indexes FollowSymlinks ExecCgi ScriptAlias /cgi-bin/ "/home/www.aaa/cgi-bin/" TransferLog /home/www.aaa/logs/access_log Errorlog /home/www.aaa/logs/error_log ServerAdmin admin@bbb.com.tw DocumentRoot /home/bbb.com ServerName www.bbb.com.tw Options Indexes FollowSymlinks ExecCgi ScriptAlias /cgi-bin/ "/home/www.bbb/cgi-bin/" TransferLog /home/www.bbb/logs/access_log Errorlog /home/www.bbb/logs/error_log 設定完成請先別重新啟動Apache請繼續往下看. 3.若照著上面的設定,是將每個虛擬的網站放在家目錄下,也就是一個使用者有一個家目錄, 而一個家目錄就是一個虛擬網站. Linux的預設值,會在每個人的家目錄下產生一些目錄與檔案,但在架站時這些東資料是用不到的,而會 產生那些資料是由/etc/skel/的目錄下來設定的,也就是skel下有那些東西,您在建帳號時,就會一並複 製到user的家目錄下,所以您可以將原本下面的東西刪除或備份起來,在第2點設定中會用到家目錄下的 logs及cgi-bin所以我們也隨便將這二個目錄建到skel下,這樣以後每建一個帳號就會自動產生logs及cgi-bin 這二個目錄. 所以我們接著用adduser指令建立使用者. #adduser www.aaa #adduser www.bbb 這時在重新啟動Apache (因為重新啟動Apache若找不到cgi-bin或logs目錄,會有錯誤) 4.我們可以搭配ftp讓每個網站的管理者藉由ftp維護自己的網站,請輸入如下的指令 # telnet localhost 21 查看是否有類示如下的訊息 Trying 127.0.0.1... Connected to webhosting.gus.net.tw. Escape character is '^]'. 220 webhosting.gus.net.tw FTP server (Version wu-2.6.1-16) ready. 有的話表示您的ftp有起動. 若沒有請檢查/etc/xinetd.d/wu-ftpd 是否有如下設定disable = no 然後重新起動xinetd如下: #/etc/rc.d/init.d/xinetd restart 這樣ftp應該就啟動了. 往後在建立使用者時,為了不讓使用者FTP上來後還能出家目錄,請在 /etc/ftpaccess 檔案中加入如下設定﹕ guestgroup ftp 然後在將帳號加入至/etc/grpup的ftp群組中,如下: ftp:x:50:www.aaa,www.bbb 關於ftp的設定,請參考http://www.study-area.org/linux/linuxfr1.htm 5.因為要瀏覽到家目錄以下的網頁,所以家目錄的權限應改成755如下: #chmod 755 www.aaa #chmod 755 www.bbb 關於權限的設定可參考http://www.study-area.org/linux/linuxfr1.htm中的”檔案權限屬性” 6.在來我們應該加入磁碟配額的設定,總不能讓每個網站的站長肆無忌憚的使用server上的空間吧! ^_^ 請先停止所有人,對要設定配額的磁區做存取(應該是/home這個目錄所在的磁區) #vi /etc/fstab 請在欲設定配額的磁區,於defaults後加入" ,usrquota " 重新啟動電腦 #sync;sync;sync;reboot 在以root權限切入到欲設定配額的磁區,執行如下指令: #quotacheck -ugav 然後對要限制配額的使用者,以下面的格式輸入指令: #edquota 使用者帳號 #edquota www.aaa 會執行vi出現如下的畫面 Edit block and inode quota for user ericshei: Device /dev/sda8 (/var/spool/mail): Used 9904KB, limits: soft=20480 hard=20480 ------>這裡是設定要限制的大小(1024=1MB) Used 1 inodes, limits: soft=0 hard=0 ---------->這裡是設定要限制的檔案數量設定0就是不限制. 設好磁碟限制之後,並不會馬上發生作用,須執行如下指令將磁碟配額起動: #quotaon -avug 可用如下指令檢查使用者配額的情形: #quota -v 使用者 #quota -v www.aaa 往後要新增使用者,如不想重新設可套用其他使用者的設定值,如下: #edquota -p 被套用者 套用者 #edquota -p www.aaa www.bbb 6.到這webhosting的建制大概完成,往後欲新增加虛擬網站,請如下設定,在將網頁上傳即可. A.到網域申請單位,註冊您的IP及主機名稱(再次強調約24小時生?) B.用adduser建立新帳號 C.在/etc/httpd/con/httpd.conf中加入虛擬網站設定. D.將帳號加到/etc/grpup的ftp群組中,限制登出家目錄以外的地方. E.在將家目錄的權限改成755 (小弟一直希望能將B~E的設定寫成shell script檔,但自己能力不足,希望有高手願意幫忙) 關於虛擬主機的設定也可參考http://www.study-area.org/linux/linuxfr1.htm的WWW部份中的 "架設虛擬主機" 第四安裝PHPADMIN phpadmin是一套MySQL的web控制介面,可讓使用者透過網頁就能設定MySQL資料庫,這方便於讓 網站管理者,在利用PHP做後端資料庫的結合時較為方便. 先用上述的第六小點建立一個給phpadmin用的網頁空間,如phpadmin 然後請移駕至http://phpmyadmin.sourceforge.net/download.html下載phpMyAdmin-2.2.1-php3.tar.gz 這個檔將它複製到phpadmin的家目錄下,用phpadmin這個帳號將此檔解開: tar -zxvf phpMyAdmin-2.2.1-php3.tar.gz 解開後會出現phpMyAdmin-2.2.1將裡面的資料搬到/home/phpadmin下,在刪除phpMyAdmin-2.2.1-php3.tar.gz 檔和phpMyAdmin-2.2.1 接下來編輯/home/phpadmin/config.inc.php3 1 $cfgServers[1]['host'] = 'localhost'; // MySQL hostname 2 $cfgServers[1]['port'] = ''; // MySQL port - leave blank for default port 3 $cfgServers[1]['socket'] = ''; // Path to the socket - leave blank for default socket 4 $cfgServers[1]['connect_type'] = 'tcp'; // How to connect to MySQL server ('tcp' or 'socket') 5 $cfgServers[1]['stduser'] = '這裡輸入root'; // MySQL standard user settings (this user must have read-only 6 $cfgServers[1]['stdpass'] = '這裡輸入root的密碼'; // access to the "mysql/user" and "mysql/db" tables) 7 $cfgServers[1]['adv_auth'] = 這裡改成true; // Use advanced authentication? 8 $cfgServers[1]['user'] = 'root'; // MySQL user 還記得我們有設MySQL的root的帳號及密碼嗎?這裡要設的是MySQL的帳號及密碼(不是系統的哦!) 最後在用瀏覽器測試,輸入您的phpadmin虛擬主機網址,應該會看到詢問帳號密碼的對話框,輸入您的 root帳號及密碼?應該就可以看到phpadmin的畫面了(又方便又安全哦!). PHPADMIN的官方網站為http://phpwizard.net/projects/phpMyAdmin/ 也可參考http://www.ysps.tp.edu.tw/about/download/phpmyadmin/phpmyadmin.htm 第五php與MySQL的連結測試 接下來我們用PHPADMIN建立一個MySQL的使用者與資料庫,在用PHP寫一個網頁查詢資料庫裡的資料,如此 一來就可以知道PHP與MySQL是否可以連結了. 資料庫的設定如下: 1.進入PHPADMIN後在"建立新資料庫"下的表單欄位輸入您欲建立的資料庫名稱,然後按"建立" 假設為: try 2.在"建立新資料表於資料庫"的區段裡輸入資料表名稱及欄位數量 假設名稱為"clients"欄位數為"2",按"go" 3.接著會看到有二例的欄位設定. "欄位"一個輸name另一個輸tel "型態"都選"CHAR" "長度/集合*"二個都輸20 "屬性"二個都留白 "Null"二個都選"not null" 剩下全部留白,點選"儲存" 4.接下來點選"新增" 在"name"欄"值"的部份,輸eric 在"tel"欄"值"的部份,輸7654321 按"儲存" 在點選"新增" 在"name"欄"值"的部份,輸roger 在"tel"欄"值"的部份,輸1234567 按"儲存" 此動作為,輸入幾筆資料,以提供查詢. 2.點選左上角的"主目錄"再點選"使用者"在"新增使用者"區段裡輸入相關資料,主機選項輸入localhost即可,然後按下面的"go" 3.點選剛建立使用者"Grants"選項 在"加新權限"選擇我們剛建立的"try"資料庫 接著"權限"區段除了Grant、Reload、Process、Shutdown、File不選,其它皆選取,按"go" 然後在點選左上角的"主目錄"在點選"重新載入 MySQL "在點選"登出系統" 這樣即完成資料庫這一部份的設定. php網頁的撰寫請存成test.php內容如下: ========================================== <html> <head> <meta http-equiv="Content-Language" content="zh-tw"> <meta http-equiv="Content-Type" content="text/html; charset=big5"> <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> <meta name="ProgId" content="FrontPage.Editor.Document"> <title>新網頁1</title> </head> <body> <>

查詢資料區
<? if($old_name){ $link_ID=mysql_connect("localhost","輸入剛才建立的帳號","輸入密碼"); mysql_select_db("輸入剛才建立的資料庫名稱如try"); $str="select * from 指定資料表名稱如clients where 指定欄位如name='$old_name';"; $result = mysql_query($str,$link_ID); mysql_close($link_ID); $record=mysql_fetch_row($result); } ?> 請在下列欄位輸入資料後按下 查詢按鈕

<form action="test.php" method="post"> 姓名:<input type="text" name="old_name"> <input type="submit" value="查詢" </from>

查詢結果

<? echo "姓名:";echo $record[0]; echo"
"; echo"電話:";echo $record[1]; ?> </form> </body> </html> =============================================== 最後將該檔案上傳至使用者的網頁虛擬空間做測試吧. 如www.aaa.com.tw/test.php 然後輸入eric再按"查詢"下方應該會秀出姓名稱及電話. 輸入roger也應會有相同的情形. 希望這篇文章對您有些許的幫助 整篇文章到些結束,若有任何錯誤的地方請一定指正小弟,小弟一定感激不盡! ********************************************************* 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind to make knowledge together! 希望能大家敞開心胸,將知識寶庫結合一起
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
系統時間:2024-05-16 9:07:17
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!