·¢Ð»°Ìâ
´òÓ¡

apache+mysql+php+ssl·þÎñÆ÷Ö®ÍêÈ«°²×°¹¥ÂÔ

apache+mysql+php+ssl·þÎñÆ÷Ö®ÍêÈ«°²×°¹¥ÂÔ

Õª×Ô£ºhttp://www.oso.com.cn/read_article.php?article_id=3448
¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª


Ä¿µÄÎÒÃǵÄÄ¿±êÊǰ²×°Ò»¸öÔÊÐíÎÒÃÇÍйܶà¸öÍøÕ¾µÄweb·þÎñÆ÷£¬ÆäÖÐһЩÊÇÕë¶Ôµç×ÓÉÌÎñµÄ°²È«½â¾ö·½°¸£¬¶ø´ó²¿·ÖÍøÕ¾ÊÇͨ¹ýÁ¬½ÓÒ»¸öÊý¾Ý¿â·þÎñÆ÷²¢ÇÒÌáÈ¡ÆäÊý¾ÝµÄ½Å±¾Çý¶¯µÄ¡£  

ΪÁËÕâ¸öÈÎÎñËùÐèµÄ¹¤¾ßÊÇ£º  
Apache£­Ò»¸öÍøÕ¾·þÎñÆ÷  
Mod_SSL£­Ò»¸ö°²È«Ì×½Ó×Ö²ã(SSL)µÄÄ£¿é  
OpenSSL£­¿ª·ÅÔ´´úÂ빤¾ßÏä(mod_sslËùÐ裩  
RSARef£­½ö¶ÔÃÀ¹úÓû§  
MySQL£­Ò»¸öÊý¾Ý¿â·þÎñÆ÷  
PHP£­Ò»Öֽű¾ÓïÑÔ  

¡°ÌõÌõ´ó·ͨÂÞÂí¡±¡­¡­Òò´ËÕâÖ»ÊǺܶàÄÜ´ïµ½ÎÒÃÇÒªÇóµÄÅäÖÃÖ®Ò»¡£ÎÒÑ¡ÔñÕâÑùµÄÅäÖã¬ÊÇÒòΪËüÊÇ×î¼òµ¥ºÍ×î¿ìµÄÒ»ÖÖ¡£Ñ¡ÔñMod_SSL/OpenSSLµÄÔ­ÒòÊÇÒòΪÎÒÓÐËüµÄÏÈǰ¾­Ñ飬ÊÇ×î¿ìÅäÖúÍ×îÈÝÒ×°²×°µÄÒ»ÖÖ¡£ÎªÁ˱˴˷½±ãµØÓëApache¼¯³É£¬ÎÒÑ¡ÔñÁËPHPºÍMySQL¡£¼Çס£¬PerlÄÜ×öµ½ÄãÏëÒª×öÈκι¤×÷£¬È»¶ø£¬PHP¶ÔÈκÎÏëѧϰËüµØ³ÌÐòÔ±À´Ëµ¼òµ¥²¢ÇÒÈÝÒס£  

Ï£ÍûÄ㽫ÔÚ½áÊøÕâ¸ö¼òµ¥µÄÖ¸ÄϺóÄܳɹ¦µØÍê³ÉÏÂÁÐÄ¿±ê¡£  

°²×°²¢ÉèÖÃMySQLÊý¾Ý¿â·þÎñÆ÷  
o ÖªµÀÔõÑù¼ì²éMySQL·þÎñÆ÷µÄ״̬  
o ÖªµÀÔõÑùʹÓÃÃüÁîÐпͻ§³ÌÐò´æÈ¡MySQL·þÎñÆ÷  
o ÖªµÀÔõÑù´Óweb´æÈ¡ÄãµÄDB·þÎñÆ÷  

°²×°²¢ÉèÖþ߱¸SSLµÄApacheÍøÕ¾·þÎñÆ÷  
o ÅäÖÃÒ»¸ö¼òµ¥µÄÐéÄâÍøÕ¾  
o ÖªµÀÔõÑùÍ£Ö¹²¢Æô¶¯·þÎñÆ÷  
o ÖªµÀÔõÑù×öһЩ»ù±¾µÄÖ÷»úÍйÜÅäÖà 

°²×°²¢ÅäÖ÷þÎñÆ÷¶Ë½Å±¾µÄPHP 4.0³¬Îı¾Ô¤´¦ÀíÆ÷  
o ÖªµÀÔõÑù±àд¼òµ¥µÄphp´úÂë  
o ÖªµÀÔõÑùʹÓÃphpÁ¬½ÓÒ»¸öDB  
o ´´½¨Ò»¸öÆôÓÃPHPµØ¼òµ¥ÍøÕ¾ÓëÒ»¸öÊý¾Ý¿â¹µÍ¨  

´´ÔìһЩÑù±¾Ö¤ÊéÓÃÓÚApache SSL  
o ÖªµÀÔõÑù²úÉúÒ»¸öCSRÎļþ  
o ÖªµÀÔõÑù¼ÓÃÜÒ»¸ö¼üÂë  
o ÖªµÀÔõÑù Ç©ÊðÄã×Ô¼ºµÄÖ¤Êé  

±¾ÎĽ«¸²¸Ç´óÁ¿µÄÐÅÏ¢¡£±¾Ö¸ÄÏ×÷Ϊһ¸öÈëÃÅÐԵصÄÖ¸ÄÏ£¬ÈÃÄã²½Èëµç×ÓÉÌÎñ¡¢ÍøÕ¾½Å±¾ºÍ°²È«Ì×½Ó×Ö²ã (SSL)µÄÊÀ½ç£¬Ä¿µÄÊǰïÖúÄ㽨Á¢ÓÉ´æ´¢ÔÚÊý¾Ý¿âÖеĶ¯Ì¬ÐÅÏ¢Çý¶¯µÄ°²È«ÍøÕ¾¡£  

±¾Îľø·ÇÊÇÒ»¸öÏêÏ¸È«ÃæµÄÎĵµ£¬Ëüµ±È»½«ÓÐһЩ´íÎó(Ï£Íû×îС)£¬ÔÚÄãÔĶÁËüʱÇë¼ÇסÕâÒ»µã¡£È»¶ø£¬Ëü½«¼¤ÆðÄãµÄÈÈÇé²¢ÔËÐÐÇ°ÃæÌáµ½µÄ²úÆ·£¬Ï£ÍûÈÃÄã¸üºÃÀí½âÕâЩ¶«Î÷ÊÇÔõÑù¹¤×÷µÄ¡£²»ÐèÒªÒÔǰµÄ±à³Ì֪ʶ£¬µ«¼Ù¶¨ÄãÓÐµã¼ÆËã»ú֪ʶ±³¾°¡£ÎÒµÄÄ¿±êÊDZàдÕâ¸öÎĵµÒÔ±ãÈκÎÐÂÊÖÄÜÀí½âÎÒÕýÔÚ̸Â۵Ķ«Î÷¡£Èç¹ûÎÒ´ïµ½ÁË£¬ÄÇôÎÒ×öÁËÒ»¼þºÃÊ¡£Èç¹ûÄãÇá¶øÒ׾ٵؽ¨Á¢Á˵ç×ÓÉÌÎñÕ¾µã£¬±ÈÎÒ×öµÄ¸ü³öÉ«:-) ¸øÎÒһЩ½âÊÍ¡£  
  

¼ÙÉè

±¾ÎļÙÉèÄãÒѾ­°ÑÏÂÁÐÈí¼þ°²×°ÔÚÄãµÄϵͳÉÏÁË¡£  
Perl (×îºÃÊÇver 5+)  
gzip»ògunzip  
gcc ºÍ GNU make  

Èç¹ûÄãûÓа²×°ºÃÕâЩ£¬Ä㽫ÐèÒª²ÉÈ¡±ØÒªµÄ²½ÖèÔÚ½âÊͱ¾ÎĵÄÈκιý³Ìǰ°ÑËûÃǰ²×°ºÃ¡£  

ÄãÒ²ÐèÒª¶ÔUNIXÃüÁî¡¢HTML¡¢ºÍSQLµÄÒ»¸ö»ù±¾Á˽⡣ÄãÓ¦¸ÃÓÐÔõÑù¹ÜÀíÄãµÄLinux»úÆ÷µÄÒ»¸ö»ù±¾Á˽⡣ÄãÒ²ÐèÒªÒ»¸öÍêÈ«Õý³£µÄLinux»úÆ÷£¬Ä㽫ÔÚËüÉÏÃæ°²×°Èí¼þ¡£µ±È»Ä㽫ÐèÒªÔÚÇ°ÃæÁгöµÄ±ØÒªµÄÈí¼þ°üÒÔ±àÒëÔ´´úÂ룬²¢ÇÒ×îºó£¬±£Ö¤Ä㻹ûÓÐÔÚLinux»úÆ÷ÖÐԤװÁËMySQL¡¢Apache¡¢»òPHP¡£  
  

¹¤×÷Ô­Àí

Àí½âÔÚÄ»ºó·¢ÉúÁËʲôÊÇÓаïÖúµÄ¡£ÕâÀïÊÇÒ»¸ö¹ý·Ö¼ò»¯µÄ¹¤×÷Ô­Àí£¬ÏÂͼºÍËæºóµÄ½âÊÍĿǰ²»ÊÇÍêÈ«ÕýÈ·µÄ£¬Ö»ÊÇËüµÄÒ»¸öÒªµã¸ÅÊö£º  

Çé¿öÊÇ£ºÎÒÃÇÓÐÒ»¸ö´ÓÒ»¸öÊý¾Ý¿âÈ¡³öһЩÊý¾ÝµÄÍøÒ³¡£John Doe´ÓËûµÄä¯ÀÀÆ÷ÇëÇó¸ÃÒ³£¬ÇëÇó±»·¢Ë͸øweb·þÎñÆ÷£¬½Ó×ŵ÷ÓÃÒ»¸öPHP½Å±¾¡£PHP½Å±¾ÓÉPHPÔ¤´¦ÀíÆ÷½âÊͲ¢´ÓÊý¾Ý¿âÖÐÈ¡³öÊý¾Ý£¬È»ºó½á¹ûÓÉÓàϵÄPHP½Å±¾¼Ó¹¤²¢×ª»¯³ÉHTML£¬×öºóµÄHTML±»·¢»ØÓû§µÄä¯ÀÀÆ÷¡£  

ÈÃÎÒÃÇÒ»²½Ò»²½µØ¿´£º  

John Doe ´ÓËûµÄä¯ÀÀÆ÷Öеã»÷Ò»¸öÁ´½Ó£»ËûµÄä¯ÀÀÆ÷·¢ËͶÔhttp://www.yourserver.com/test.phpµÄÇëÇó¡£  

ApacheµÃµ½¶Ôtest.phpµÄÇëÇó£¬ËüÖªµÀ.phpÎļþÓ¦ÓÉPHPÔ¤´¦ÀíÆ÷(mod_php)´¦Àí£¬Òò´ËËü֪ͨ PHP´¦ÀíËü¡£ËüÖªµÀÕâЩ£¬ÊÇÒòΪÎÒÃÇÔÚApacheµÄÅäÖÃÖÐÖ¸¶¨Ëü¡£  

test.phpÊǰüº¬ÃüÁîµÄÒ»¸öPHP½Å±¾¡£ÕâЩÃüÁîÖ®Ò»ÊÇ´ò¿ªÒ»¸öµ½Ò»¸öÊý¾Ý¿âµÄÁ¬½Ó²¢×¥È¡Êý¾Ý¡£PHP ´¦Àíµ½Êý¾Ý¿âµÄÁ¬½Ó£¬²¢ÇÒ½âÊÍSQLµ÷ÓôÓDBÖÐÌáÈ¡Êý¾Ý¡£  

·þÎñÆ÷·þÎñÆ÷µÃµ½´ÓPHP½âÊÍÆ÷À´µÄÁ¬½ÓÇëÇ󣬲¢ÇÒ´¦ÀíÕâ¸öÇëÇó¡£ÇëÇó¿ÉÄÜÊÇÀàËÆÓÚÒ»¸ö¼òµ¥µÄÑ¡ÔñÓï¾ä£¬»òÊý¾Ý¿â±í´´½¨µÈ¡£  

Êý¾Ý¿âÈ»ºó½«Ó¦´ðºÍ½á¹û»ØË͵½PHP½âÊÍÆ÷¡£  

Apache»ØË͸ýá¹ûµ½John DoeµÄä¯ÀÀÆ÷£¬×÷Ϊ¶ÔËûÇëÇóµÄÓ¦´ð¡£John DoeÏÖÔÚ¿´¼ûÒ»¸ö°üº¬´ÓÒ»¸öÊý¾Ý¿âÀ´µÄһЩÐÅÏ¢µÄÍøÒ³¡£  

Èç¹ûÕâÊÇÒ»¸ö¶Ôhttps://www.yoursecureserver.com ... ¬¼ÓÃÜÇëÇó²¢·¢ËÍËü¡£  

·þÎñÆ÷¿´µ½ÇëÇ󣬽âÃܲ¢ÇÒÈÏÖ¤Ëü¡£Ëü´¦ÀíÎļþ£¬¼ÓÃܲ¢ÇÒ·¢ËÍËü¡£È»ºóä¯ÀÀÆ÷Ó÷þÎñÆ÷µÄ¼üÂë½âÃÜËü¡£¼Çס¼ÈÈ»Á¬½Ó±»¼ÓÃÜ£¬¾ÍÊÇÓò»Í¬µÄ¶Ë¿ÚÓ᣶˿Ú80ÓÃÔÚÔڷǰ²È«Á¬½ÓÉÏ£¬¶ø¶Ë¿Ú443ÓÃÔÚ°²È«Á¬½Óʱ¡£  

ÔÙ˵һ´Î£¬Ëü²»ÊÇ100%µÄÕýÈ·£¬µ«ÊÇËü×ã¹»¿ìµØÈÃÄãÖªµÀÄ»ºó·¢ÉúµÄÊÂÇéµÄ·Ç³£¼òµ¥µÄ¸ÅÊö¡£  

¼ÈÈ»ÎÒÃǶÔÎÒÃÇÕýÔÚÊÔͼ´ïµ½µÄÄ¿±êÓÐÁËÒ»¸öºÜ»ù±¾µÄÁ˽⣬ÈÃÎÒÃǼÌÐø°²×°Èí¼þ°É¡£  
  

×¼±¸

Apache (Web·þÎñÆ÷)-http://www.apache.org  
Mod_SSL (°²È«·þÎñÆ÷²ã)-http://www.modssl.org  
OpenSSL (SSL¹¤¾ßÏä)-http://www.openssl.org  
PHP (½Å±¾ÓïÑÔ)-http://www.php.net  
MySQL (SQLÊý¾Ý¿â·þÎñÆ÷ )-http://www.mysql.com  

ÏÂÔØËùÓÐ(tarÎļþ)Ô´´úÂëµ½Ò»¸öÁÙʱĿ¼Ï¡£±£Ö¤Äã°ÑËûÃÇ·ÅÔÚÓкܶà¿Õ¼äµÄµØ·½¡­¡­ÄãÓ¦¸ÃÒÔrootÉí·ÝÏÂÔØËûÃÇÒÔ±ÜÃâȨÏÞÎÊÌâ¡£  

ÎÒÃǵļƻ®

ÎÒÃǵļƻ®ÊÇÊ×ÏȰ²×°MySQL·þÎñÆ÷²¢±£Ö¤Ëü¹¤×÷£¬È»ºóÎÒÃǽ«°²×°PHPºÍMod_SSL£¬×îºóÎÒÃǽ«°²×°ApacheÍøÕ¾·þÎñÆ÷¡£ÔÚÎÒÃǰ²×°ÁËApacheÒÔºó£¬ÎÒÃÇ¿ÉÒÔ²âÊÔPHPºÍMod_SSLÖ§³ÖÊÇ·ñÆð×÷ÓÃÁË¡£  
  

MySQLÔ´´úÂë°²×°(UNIX)  

Äã±ØÐëÓÃÀ´Ö´Ðа²×°MySQLÔ´´úÂë·Ö·¢µÄ»ù±¾ÃüÁîÊÇ(×ÔÒ»¸öû½â¿ª¡°tar¡±Îļþ)£º  

ͨ¹ýʹÓÃsu³ÉΪ rootÓû§¡£  
$su  

Ö±½Ó½øÈëÄãÓÐtarÎļþµÄĿ¼¡££¨Ê¹ÓÃÒ»¸öÁÙʱĿ¼¡£ÕâÀïʹÓà /tmp/download/ £©  
#cd /tmp/download/  

ʹÓÃÏÂÁÐÃüÁîÌáÈ¡Îļþ¡£  
# gunzip -d -c mysql-3.22.xx.tar.gz | tar xvf -  

¸Ä±äµ½ÐÂĿ¼£¬ËüÔÚÌáÈ¡ÆÚ¼ä´´½¨¡£  
# cd mysql-3.22.xx  

ÏÖÔÚÄã¿ÉÒÔ¿ªÊ¼¡°ÅäÖá±MySQL·þÎñÆ÷¡£Äã¿ÉÒÔÓÃconfigureÖ¸¶¨ºÜ¶àÑ¡ÏʹÓÃconfigure --help²é¿´ËùÓеÄÑ¡Ïî¡£ÎÒÒѾ­Ñ¡Ôñ--prefixÖ¸¶¨µ½°²×°µØµãµÄÖ±½Ó·¾¶¡£configure½«¼ì²éÄãµÄ±àÒëÆ÷ºÍһЩÆäËû¶«Î÷¡£Èç¹ûÄãÓÐÈκδíÎó£¬Äã¿ÉÒÔ¼ì²éconfig.cacheÎļþ²é¿´´íÎó¡£  
# configure --prefix=/usr/local/mysq  

ÔÚÄãÍê³ÉÁËÅäÖÃÒÔºó£¬Äã¿ÉÒÔÖ´ÐÐÏÂÁÐÃüÁîmakeÕæÕýµÄ¶þ½øÖÆ´úÂë¡£  
# make  

ÏÖÔÚÄãÒÑ×¼±¸ºÃ°²×°ËùÓеĶþ½øÖÆ´úÂë¡£ÔËÐÐÏÂÁÐÃüÁîÔÚÄãÓÃconfigure --prefixÑ¡ÏîÖ¸¶¨µÄĿ¼Ï°²×°¶þ½øÖÆ´úÂë¡£  
# make install  

ÔÚÄã°²×°ºÃ¶þ½øÖÆ´úÂëºó£¬ÏÖÔÚÊÇ´´½¨ÓÃÓÚ¶¨ÒåȨÏÞµÄmysql±íµÄʱºòÁË¡£  
# scripts/mysql_install_db  
# cd /usr/local/mysql/bin  
# ./safe_mysqld &  
# ./mysqladmin -u root password "new-password"  

×¢Ò⣺/usr/local/mysqlÊÇÎÒÑ¡Ôñ°²×°MySQL·þÎñÆ÷µÄĿ¼¡£Äã¿ÉÒÔͨ¹ý¸Ä±äĿ¼ѡÔñÁíÍâµÄµØ·½¡£  

Äã¿ÉÒÔͨ¹ýÔËÐÐһЩ¼òµ¥µÄ²âÊÔÀ´ÑéÖ¤·þÎñÆ÷ÕýÔÚ¹¤×÷ÒÔÈ·±£MySQLÕýÔÚÔËÐС£Êä³öÓ¦¸ÃÀàËÆÓÚÏÂÃæËùʾµÄ£ºBINDIR=/usr/local/mysql/bin¡£BINDIRÒÀÀµÓÚÄãÔÚÉÏÃæµÄǰ׺ѡÔñµÄĿ¼¡£  

# BINDIR/mysqlshow -p  
+---------------+  
| Databases |  
+---------------+  
| mysql |  
+---------------+  

Ò»µ©Äã°²×°ºÃMySQL£¬Ëü½«×Ô¶¯µØ´´½¨2¸öÊý¾Ý¿â¡£Ò»¸ömysql±í£¬Ëü¿ØÖÆÔÚʵ¼ÊµÄ·þÎñÆ÷ÖÐÓû§¡¢Ö÷»úºÍÊý¾Ý¿âȨÏÞ£»ÁíÒ»¸öÊÇÒ»¸ötestÊý¾Ý¿â£¬ÎÒÃÇÄÜʹÓÃtestÊý¾Ý¿â¡£È»¶ø£¬ÎÒÃÇÏë¸øÄãÒ»¸ö¿ìËÙ¶ø¼òµ¥µÄMySQL¿ÉÓõÄһЩÃüÁîÐÐÑ¡ÏîµÄ¸ÅÊö¡£ÕâÒ²½«±£Ö¤root±»ÉèÖÃÁ˶ÔDB·þÎñÆ÷µÄÈ«²¿´æÈ¡È¨ÏÞ£¬¼´£ºrootÓд´½¨Êý¾Ý¿â¡¢Êý¾Ý¿â±íµÈµÄÐí¿É£¬Òò´ËÎÒÃǽ«´´½¨Ò»¸ötest2Êý¾Ý¿â£¬ÔÚÒÔºóÎÒÃÇÓÃËü½øÐÐÎÒÃǵIJâÊÔ¡£ÔÚÄãͨ¹ýÃüÁîÐнøÈëMySQLǰ£¬Ä㽫±»ÌáʾrootÓû§µÄпÚÁî¡£¼ÇסÄãÒÔǰ¸Ä±äÁËËü¡£  

# mysql -u root -p  
mysql> show databases;  
+----------------+  
| Database |  
+----------------+  
| mysql |  
| test |  
+----------------+  
mysql> create database test2;  
Query OK, 1 row affected (0.00 sec)  

ÏÖÔÚÑ¡ÔñеÄÊý¾Ý¿âʹÓ㬲¢´´½¨Ò»¸öÃûΪtst_tblµÄбí, ÓÐÏÂÁÐ2¸ö×ֶΡ£×Ö¶Î1ÊÇÊÇÒ»¸öid×ֶΣ¬ÔÊÐíÄãÖªµÀ¼Ç¼µÄid¡£ÊµÖÊÉÏΪÁ˼ò»¯ÕâÖ»ÊǵÄÒ»¸öÐкš£µÚ¶þ¸ö×Ö¶ÎÊÇÄãÒ»¸öname×ֶΣ¬´æ´¢ÊéÃûÐÅÏ¢¡£ÕâЩ×ֶεĸñʽÊÇ£º×Ö¶Î1(id)ÊÇÒ»¸ö³¤¶ÈΪ3µÄÕûÊý(int)£¬¶ø×Ö¶Î2(name)ÊÇÒ»¸ö³¤¶ÈΪ50µÄ×Ö·û(char)×ֶΡ£ÎªËÑË÷ºÍË÷ÒýÊý¾Ý£¬ÎÒÃÇÖ¸¶¨idΪ¼üÂë¡£  

mysql> use test2;  
Database changed  
mysql> CREATE TABLE books ( id int(3) not null  
-> auto_increment, name char(50) not null,  
-> unique(id), primary key(id));  
Query OK, 0 rows affected (0.00 sec)  

ÏÖÔÚÎÒÃÇÓÃÏÂÁÐÃüÁîÑéÖ¤Ò»ÇÐÕýÈ·ÎÞÎó¡£  

mysql> show tables  
+---------------------+  
| Tables in test2 |  
+---------------------+  
| books |  
+---------------------+  
1 row in set (0.00 sec)  

mysql> describe books;  
+-------+-------------+------+------+----------+------------------------+  
| Field | Type | Null | Key | Default | Extra |  
+-------+-------------+------+------+----------+------------------------+  
| id | int(3) | | PRI | 0 | auto_increment |  
| name | char(50) | | | | |  
+-------+-------------+------+------+----------+------------------------+  
2 rows in set (0.00 sec)  

×¢Òâµ½describeÃüÁî»ù±¾ÉÏ¡°ÃèÊö¡±Á˱íµÄ²¼¾Ö¡£Ï൱²»´í°É£¡  

ºÃ£¬¸ÃÊÔһЩȷʵÓÐÓõÄSQLÃüÁ²åÈë²¢´ÓÊý¾Ý¿âÖÐÑ¡ÔñÊý¾Ý£¬ÏÖÔڰѼ¸¸ö¼Ç¼¼Óµ½Ð±íÖС£¼ÇסÕâЩÊǼòµ¥µÄÊéÃû¼Ç¼£¬µ«ÊÇÒ»µ©Äã»ñµÃÁËSQL×ã¹»µÄ¾­Ñ飬Äã¿ÉÒÔΪһЩ´óµÄµç×ÓÉÌÎñÕ¾µã´´½¨È·Êµ¸´ÔÓµÄÊý¾Ý¿â¡£ÈÃÎÒÃÇ´´½¨2±¾¼ÙÏëµÄÊéµÄ2Ìõ¼Ç¼¡£µÚÒ»Ìõ¼Ç¼ÊÇÎÒÔÚ½«À´Ä³ÌìдµÄÒ»±¾ÊéµÄÃû×Ö-¡°PHP 4 Newbies¡±£¬ÁíÒ»±¾ÊÇÒ»¸öºÜÓÐÓõÄLinuxÊ飬¡°Red Hat Linux 6 Server¡±£¬ÓÉMohammed J. KabirËùÖø¡£  

mysql> INSERT INTO books (name) values("PHP 4 Newbies";  
Query OK, 1 row affected (0.00 sec)  
mysql> INSERT INTO books (name) values("Red Hat Linux 6 Server";  
Query OK, 1 row affected (0.00 sec)  

ÏÖÔÚÎÒÃÇ¿ÉÒÔ¼ì²éмͼ£¬·¢³öÒ»Ìõ¡°Ñ¡ÔñËùÓС±ÃüÁî  

mysql> SELECT * from books;  
+----+----------------------------------+  
| id | name |  
+----+----------------------------------+  
| 1 | PHP for Newbies |  
| 2 | Red Hat Linux 6 Server |  
+----+----------------------------------+  
2 rows in set (0.00 sec)  

ºÜºÃ£¬MySQL·þÎñÆ÷ÍêÈ«Æð×÷ÓÃÁË¡£ÎÒÃÇ¿ÉÒÔ¼ÌÐø¼ÓÈ룬µ«ÊÇ´ËʱûʲôÒâÒå¡£×¢Òâµ½µ±ÄãÏòÊý¾Ý¿âÖвåÈë¼Ç¼ʱ£¬ÄãÔõÑù²»±ØÖ¸¶¨idºÅ£¬ÕâÊÇÒòΪÄã´´½¨ÁËÆôÓÃauto_incrementÑ¡ÏîµÄid×ֶΡ£  

ÈÃÎÒÑÝʾһÏÂÈçºÎ×öÒ»¸ö¿ìËÙɾ³ý¡£ÕâÖ»ÊÇÈÃÄãÖªµÀ£¬¼Çס£¬Äã¿ÉÔÚMySQLµÄÍøÕ¾http://www.mysql.comÉÏÕÒµ½ËùÐèµÄÓйØmysqlÃüÁîºÍ·þÎñÆ÷µÄËùÓÐÐÅÏ¢¡£  

mysql> delete from books where id=1;  
Query OK, 1 row affected (0.00 sec)  
mysql> select * from books;  
+----+-----------------------------------+  
| id | name |  
+----+-----------------------------------+  
| 2 | Red Hat Linux 6 Server |  
+----+-----------------------------------+  
1 row in set (0.00 sec)  

ºÃÁË£¬Í˳öMySQL£¬¼ÌÐø°²×°¡£Äã¿ÉÔÚÍê³ÉËùÓа²×°²¢ÇÒÒ»Çй¤×÷Õý³£ºóÍæMySQLÒ²²»³Ù¡£  
  

PHP°²×°(UNIX)  

ÏÖÔÚ°²×°PHPÓïÑÔ¡£ÄãÏÂÔØÁË×îеÄbeta°æ£¬µ«ÊÇÄã¿ÉÄܱØÐëÏÂÔØ·Çbeta°æ±¾¡£¼Çסbeta°æ±¾ÐèÒªGNU make¡£  

ÄãÈÔÈ»¼Ù¶¨ÊÇroot£¬Èç¹û²»ÊÇ£¬su»Øµ½root¡£  

PHPÒªÇóÄãÒѾ­Ô¤ÏÈÅäÖúõÄApache£¬ÒÔ±ãËüÄÜÖªµÀËùÐèµÄ¶«Î÷ÔÚÄĶù¡£ÔÚÒÔºóÄã°²×°Apache·þÎñÆ÷ʱ£¬Ä㽫»á»Øµ½ÕâÀï¡£¸Ä±äµ½ÄãÓÐÔ´´úÂëµÄĿ¼¡£  

# cd /tmp/DOWNLOAD  
# gunzip -c apache_1.3.x.tar.gz | tar xf -  
# cd apache_1.3.x  
# ./configure  
# cd ..  

ºÃµÄ£¬ÏÖÔÚÄã¿ÉÒÔ¿ªÊ¼PHPµÄ°²×°¡£ÌáȡԴ´úÂëÎļþ²¢½øÈëÆäĿ¼¡£Èç¹ûÄãÏÂÔØÁ˰汾3£¬ÔÚÊý×ÖºÍÃüÁîÉÏÓÐÒ»¸ö¸Ä±ä£¬²»´óµÄ¸Ä±ä¡£  

# gunzip -c php-4.0.x.tar.gz | tar xf -  
# cd php-4.0.x  

Èç¹ûÄãÕýÔÚ±àÒë´úÂ룬configure½«ÓÀÔ¶ÊÇÄãµÄÅóÓÑ¡£:-) Òò´Ë£¬configureÓкܶàÑ¡ÏʹÓÃconfigure --helpÈ·¶¨ÄãÏëÒªÔö¼ÓÄÄЩ¡£ÎÒÖ»ÊÇÐèÒªMySQLºÍLDAP£¬²¢ÇÒµ±È»Apache¡£  

# ./configure --with-mysql=/usr/local/mysql  
--with-xml  
--with-apache=../apache_1.3.x  
--enable-track-vars  
--with-ldap  

make²¢°²×°¶þ½øÖÆ´úÂë¡£  

# make  
# make install  

¿½±´iniÎļþµ½libĿ¼¡£  

# cp php.ini-dist /usr/local/lib/php.ini  

Äã¿ÉÒԱ༭PHPÎļþÀ´ÉèÖÃPHPÑ¡ÏÈçÄã¿ÉÒÔͨ¹ýÔÚÄãµÄphp.iniÎļþÖвåÈëÏÂÁÐÐУ¬Ôö¼ÓphpµÄmax_execution_time¡£  

max_execution_time = 60;  

×¢Ò⣺php3Óû§½«Ê¹ÓÃphp3.ini£¬¶øphp4Óû§½«Ê¹ÓÃphp.iniÎļþ¡£  

Apache Óë Mod_SSL
  

¸ÃÅäÖò¢°²×°mod_sslºÍApacheÁË¡£¶Ô´Ë£¬Ä㽫ÐèÒªÓÐrsaref-2.0Îļþ¡£ÔÚ[url]http://ftpsearch.lycos.com/ÉÏËÑË÷¡°rsaref20.tar.Z¡±¡£Èç¹ûÄ㲻ϲ»¶Lycos£¬Äã¿ÉÒÔÑ¡ÔñÆäËûËÑË÷ÒýÇæÀ´ËÑË÷Îļþ¡£µ±È»Ö»ÓÐÄãÔÚÃÀ¹ú²ÅÐèÒªÕâ¸öÎļþ¡££¨¹ÜËüÄØ£¬ÄãÒ²¿É´Ó±ð´¦ÏÂÔØ£¬Ê×ÏÈÔÚhttp://ftpsearch.ntnu.no/²éÕÒ¡°rsaref20.tar.Z¡±£¬ºÃ¶à°¡£¡¡££©[/url]  

´´½¨rasrefĿ¼£¬Ä㽫ÔÚ¸ÃĿ¼ÌáÈ¡Îļþ¡£×¢Òâ¡£Õâ¼Ù¶¨ÄãÏÂÔØÁËÒ»¸öÁÙʱĿ¼£¬¶øÄã¾ÍÔÚ´ËĿ¼¡£  

# mkdir rsaref-2.0  
# cd rsaref-2.0  
# gzip -d -c ../rsaref20.tar.Z | tar xvf -  

ÏÖÔÚÅäÖò¢¹¹ÔìOpenSSL¿â¡£  

# cd rsaref-2.0  
# cp -rp install/unix local  
# cd local  
# make  
# mv rsaref.a librsaref.a  
# cd ../..  

°²×°OpenSSL¡£¼Çס£¬Ä㽫ÓÃËüÀ´´´½¨ÁÙʱ֤ÊéºÍCSRÎļþ¡£--prefixÑ¡ÏîÖ¸¶¨Ö÷°²×°Ä¿Â¼¡£  

# cd openssl-0.9.x  
# ./config -prefix=/usr/local/ssl  
-L`pwd`/../rsaref-2.0/local/ rsaref -fPIC  

ÏÖÔÚmake¡¢²âÊÔ²¢°²×°Ëü¡£  

# make  
# make test  
# make install  
# cd ..  

ÎÒÃǽ«ÅäÖÃMOD_SSLÄ£¿é£¬È»ºóÓÃApacheÅäÖÃÖ¸¶¨ËüΪһ¸ö¿É×°ÔØµÄÄ£¿é¡£  

# cd mod_ssl-2.5.x-1.3.x  
# ./configure  
--with-apache=../apache_1.3.x  
# cd ..  

ÏÖÔÚÎÒÃÇ¿ÉÒ԰Ѹü¶àµÄApacheÄ£¿é¼Óµ½ApacheÔ´´úÂëÊ÷ÖС£¿ÉÑ¡µÄ--enable-shared=sslÑ¡ÏîʹµÃmod_ssl¹¹Ôì³ÉΪһ¸öDSO¡°libssl.so¡±¡£¹ØÓÚÔÚApacheÖ§³ÖDSOµÄ¸ü¶àÐÅÏ¢£¬ÔĶÁApacheÔ´´úÂëÊ÷ÖеÄINSTALLºÍ htdocs/manual/dso.htmlÎĵµ¡£ÎÒÇ¿ÁÒ½¨ÒéISPºÍÈí¼þ°üװά»¤ÕßΪÁË×îÁé»îµØÊ¹ÓÃmod_ssl¶øÊ¹ÓÃDSO¹¤¾ß£¬µ«ÊÇ×¢Ò⣬DSO²»ÊÇÔÚËùÓÐÆ½Ì¨ÉϵÄApache¶¼Ö§³Ö¡£  

# cd apache_1.3.x  
# SSL_BASE=../openssl-0.9.x  
RSA_BASE=../rsaref-2.0/local  
./configure --enable-module=ssl  
--activate-module=src/modules/php4/libphp4.a  
--enable-module=php4 --prefix=/usr/local/apache  
--enable-shared=ssl  
[...Äã¿É¼ÓÈë¸ü¶àµÄÑ¡Ïî...]  

Éú³ÉApache£¬È»ºóÉú³ÉÖ¤Ê飬²¢°²×°...  

# make  

Èç¹ûÄãÒÑÕýÈ·µØÍê³É£¬Ä㽫µÃµ½ÀàËÆÓÚÒÔϵÄÐÅÏ¢£º  

+-----------------------------------------------------------------------+  
| Before you install the package you now should prepare the SSL |  
| certificate system by running the "make certificate" command. |  
| For different situations the following variants are provided: |  
| |  
| % make certificate TYPE=dummy (dummy self-signed Snake Oil cert) |  
| % make certificate TYPE=test (test cert signed by Snake Oil CA) |  
| % make certificate TYPE=custom (custom cert signed by own CA) |  
| % make certificate TYPE=existing (existing cert) |  
| CRT=/path/to/your.crt [KEY=/path/to/your.key] |  
| |  
| Use TYPE=dummy when you¡¯re a vendor package maintainer, |  
| the TYPE=test when you¡¯re an admin but want to do tests only, |  
| the TYPE=custom when you¡¯re an admin willing to run a real server |  
| and TYPE=existing when you¡¯re an admin who upgrades a server. |  
| (The default is TYPE=test) |  
| |  
| Additionally add ALGO=RSA (default) or ALGO=DSA to select |  
| the signature algorithm used for the generated certificate. |  
| |  
| Use "make certificate VIEW=1" to display the generated data. |  
| |  
| Thanks for using Apache & mod_ssl. Ralf S. Engelschall |  
| rse@engelschall.com |  
| www.engelschall.com |  
+-----------------------------------------------------------------------+  
  

ÏÖÔÚÄã¿ÉÒÔ´´½¨Ò»¸ö¶¨ÖƵÄÖ¤Êé¡£¸ÃÑ¡ÏÌáʾÊäÈëÄãµÄµØÖ·¡¢¹«Ë¾¡¢ºÍÆäËûһЩ¶«Î÷¡£¹ØÓÚÖ¤Ê飬Çë²ÎÔı¾ÎĵĽáβ¡£  

# make certificate TYPE=custom  

ÏÖÔÚ°²×°Apache...  

# make install  

Èç¹ûÒ»ÇÐÕý³££¬ÄãÓ¦¸Ã¿´µ½ÀàËÆÓÚÒÔϵÄÐÅÏ¢£º  

+----------------------------------------------------------------------------------+  
| You now have successfully built and installed the |  
| Apache 1.3 HTTP server. To verify that Apache actually |  
| works correctly you now should first check the |  
| (initially created or preserved) configuration files |  
| |  
| /usr/local/apache/conf/httpd.conf |  
| and then you should be able to immediately fire up |  
| Apache the first time by running: |  
| |  
| /usr/local/apache/bin/apachectl start |  
| Or when you want to run it with SSL enabled use: |  
| |  
| /usr/local/apache/bin/apachectl startssl |  
| Thanks for using Apache. The Apache Group |  
| http://www.apache.org / |  
+----------------------------------------------------------------------------------+  
  

ÏÖÔÚÑéÖ¤ApacheºÍPHPÊÇ·ñÕýÔÚ¹¤×÷¡£È»¶ø£¬ÎÒÃÇÐèÒª±à¼­srm.confºÍhttpd.conf±£Ö¤ÎÒÃǰÑPHPÀàÐͼӵ½ÁËÅäÖÃÖС£²é¿´httpd.conf²¢È¥µôÏÂÁÐÐеÄ×¢ÊÍ¡£Èç¹ûÄ㾫ȷµØ×ñÑ­Á˱¾ÎĵÄÖ¸ÁÄãµÄhttpd.confÎļþ½«Î»ÓÚ/usr/local/apache/confĿ¼¡£ÎļþÓÐÒ»ÐÐÕë¶Ôphp4µÄaddtype¼ÓÁË×¢ÊÍ£¬ÏÖÔÚ¾ÍÈ¥µô×¢ÊÍ¡£httpd.conf Îļþ--Ƭ¶Ï  

>  
> # And for PHP 4.x, use:  
> #  
---> AddType application/x-httpd-php .php  
---> AddType application/x-httpd-php-source .phps  
>  
>  

ÏÖÔÚÎÒÃÇ×¼±¸Æô¶¯Apache·þÎñÆ÷¿´ËüÊÇ·ñÔÚ¹¤×÷¡£Ê×ÏÈÎÒÃǽ«Æô¶¯²»Ö§³ÖSSLµÄ·þÎñÆ÷¿´ËüÊÇ·ñÆô¶¯ÁË¡£ÎÒÃǽ«¼ì²é¶ÔPHPµÄÖ§³Ö£¬È»ºóÎÒÃǽ«Í£Ö¹·þÎñÆ÷²¢ÇÒÆô¶¯ÆôÓÃÁËSSLÖ§³ÖµÄ·þÎñÆ÷²¢¼ì²éÎÒÃÇÊÇ·ñÒ»ÇÐÕý³£¡£configtest ½«¼ì²éËùÓÐÅäÖÃÊÇ·ñÕýÈ·ÉèÖᣠ 

# cd /usr/local/apache/bin  
# ./apachectl configtest  
Syntax OK  
# ./apachectl start  
./apachectl start: httpd started  

²âÊÔÎÒÃǵŤ×÷
  

Apache ÕýÔÚ¹¤×÷Âð£¿

Èç¹ûËü¹¤×÷Õý³££¬µ±ÄãÓÃNetscapeÁ¬½Ó·þÎñÆ÷ʱ£¬Ä㽫¿´¼ûÒ»·ùÀàËÆÓÚÕâ·ùÆÁÄ»²¶»ñµÄÆÁÄ»¡£ÕâÊÇ»ù±¾ÉÏÊÇApacheȱʡ°²×°µÄÒ³Ãæ¡£  

×¢Ò⣺Äã¿ÉÒÔÓÃÓòÃû»ò»úÆ÷ʵ¼ÊµÄIPµØÖ·Óë·þÎñÆ÷Á¬½Ó¡£¼ì²éÕâÁ½ÖÖÇéÐΣ¬È·±£Ò»Çй¤×÷Õý³£¡£  
  

PHPÖ§³ÖÕýÔÚ¹¤×÷Â𣿣¿  

ÏÖÔÚ½«²âÊÔPHPÖ§³Ö¡­¡­´´½¨Ò»¸öÎļþ(ÃûΪ£ºtest.php )£¬ËüÓÐÏÂÁÐÐÅÏ¢¡£ÎļþÐèҪλÓÚÎĵµ¸ù·¾¶Ï£¬ËüÓ¦¸ÃȱʡÉèÖÃΪ/usr/local/apache/htdocs¡£×¢ÒâÕâÒÀÀµÓÚÎÒÃÇÒÔǰѡÔñµÄǰ׺£¬È»¶ø£¬Õâ¿ÉÔÚ httpd.confÖиı䡣ÉèÖöà¸öÐéÄâÖ÷»ú½«ÔÚÁíһƪÎÄÕ¼ÓÉÙ£¬ÇëÁôÒ⣬ÒòΪËü½«Éæ¼°°²×°ApacheºÍËüµÄÖ¸ÁîµÄһЩºÜ»ù±¾µÄÑ¡Ïî¡£  

test.php Îļþ  

<?  
phpinfo();  
?>  

Ëü½«ÏÔʾÓйطþÎñÆ÷¡¢phpºÍ»·¾³µÄÐÅÏ¢¡£ÏÂÃæÊÇÊä³öÒ³ÃæµÄ¶¥²¿µÄÆÁĻץȡ¡£  

ºÜ¿á°É£¬PHPÆð×÷ÓÃÁË¡£  
  

SSL Ñ¡ÔñÕýÔÚ¹¤×÷Â𣿣¿

ºÃÁË£¬ÏÖÔÚÎÒÃÇ×¼±¸²âÊÔSSLÁË¡£Ê×ÏÈÍ£Ö¹·þÎñÆ÷£¬²¢ÒÔÆôÓÃSSLµÄÑ¡ÏîÖØÆôËü¡£  

# /usr/local/apache/bin/apachectl stop  
# /usr/local/apache/bin/apachectl startssl  

²âÊÔËüÊÇ·ñ¹¤×÷£ºÍ¨¹ýÓÃÒ»¸öNetscapeÓë·þÎñÆ÷Á¬½Ó²¢ÇÒÑ¡ÔñhttpsЭÒ飬¼´£ºhttps://youserver.yourdomain.com »ò http://yoursever.yourdomain.com:443 £¬Ò²¿ÉÒÔÔÙÊÔÒ»ÏÂÄãµÄ·þÎñÆ÷µÄ ipµØÖ·£¬¼´£ºhttps://xxx.xxx.xxx.xxxºÍ http://xxx.xxx.xxx.xxx:443 ¡£  

Èç¹ûËüÆð×÷ÓÃÁË£¬·þÎñÆ÷½«°ÑÖ¤Êé·¢Ë͵½ä¯ÀÀÆ÷ÒÔ½¨Á¢Ò»¸ö°²È«Á¬½Ó¡£Õ⽫ÈÃä¯ÀÀÆ÷ÌáʾÄã½ÓÊÜ×Ô¼ºÇ©ÊðµÄÖ¤Êé¡££¬Èç¹ûËüÊÇÀ´×ÔVeriSign»òThawteµÄÒ»ÕÅÖ¤Ê飬ÄÇôä¯ÀÀÆ÷½«²»ÌáʾÄ㣬ÒòΪ֤ÊéÀ´×ÔÒ»¸ö¿ÉÐŵÄÖ¤ÊéÊÚȨ»ú¹¹(CA)¡£ÔÚÎÒÃǵÄÇé¿öÖУ¬ÎÒÃÇ´´½¨²¢Ç©ÊðÎÒÃÇ×Ô¼ºµÄÖ¤Êé¡­¡­ÎÒÃDz»ÏëÂíÉÏÂòÒ»¸ö¡£Ê×ÏÈ£¬ÎÒÃÇÏëÒª±£Ö¤ÎÒÃÇÄÜʹһÇÐÕý³£¡£  

ÄãÔÚNetscapeÖн«¿´¼ûÆôÓÃÁËÏÂÁÐÑ¡Ïî¡£Õâ¾Í¸æËßÄãÒ»¸ö°²È«µÄÁ¬½ÓÒѾ­½¨Á¢ÆðÀ´ÁË¡£  
  

PHPºÍMySQLÄÜÒ»Æð¹¤×÷Â𣿣¿

ÏÖÔÚ£¬ÎÒÃÇ¿ÉÒÔÈ·¶¨phpÄÜÓëMySQLÒ»Æð¹¤×÷£¬Í¨¹ý´´½¨Ò»¸ö¼òµ¥µÄ½Å±¾£¬¶Ô¡°test2¡±Êý¾Ý¿â×öһЩ²åÈëºÍÊý¾Ýɾ³ý²Ù×÷¡£Ö»ÊÇÒ»¸ö¼òµ¥µÄ½Å±¾ÒÔ²âÊÔËüÊÇ·ñ¹¤×÷ÁË¡£ÔÚÁíһƪÎÄÕÂÖÐÎÒÃǽ«ÌÖÂÛPHP½Å±¾Á¬½ÓÒ»¸ö MySQLÊý¾Ý¿â¡£»¹¼ÇµÃÎÒÃÇÒѾ­´´½¨Á¢ÁËÊý¾Ý¿âºÍÒ»ÕÅ±í¡£ÎÒÃÇ¿ÉÒÔÏÖÔÚÍê³ÉËü£¬µ«ÊÇÎÒÑ¡Ôñ²»¡£ÎÒÏëÒªÔÙ¼ì²éÒ»´ÎrootÓÐȨÏÞ´´½¨Á¢Êý¾Ý¿âºÍ±í£¬È»¶ø£¬PHPÌṩÁ˶ÔMySQLµÄÌṩ£¬Òò´ËÎÒÄܺÜÈÝÒ׵رàд´úÂëÒÔ´´½¨Ò»¸ö²âÊÔÊý¾Ý¿âºÍÈô¸ÉÌõ¼Ç¼¡£  

¼ÇµÃÎÒÃÇÒÔǰ´´½¨ÁËÊé¼®Êý¾Ý¿â¡£Èç¹ûÄãÌø¹ýÁËÒÔǰµÄÄÚÈÝ£¬Õⲿ·Ö½«²»¹¤×÷¡£ÎÒÃÇ´´½¨ÁËÓÐÒ»¸ö¡°books¡±±íµÄtest2Êý¾Ý¿â£¬²¢ÇÒΪһ±¾Êé²åÈëÁËÒ»Ìõ¼Ç¼¡£  

Õâ¸ö½Å±¾»ù±¾ÉÏä¯ÀÀ¸Ã±í²¢ÁгöËùÓÐ×Ö¶ÎÃû£¬ËüµÄÈ·ºÜ¼òµ¥¡£  

<?  
$dbuser = "root";  
$dbhost = "localhost";  
$dbpass = "password";  
$dbname = "test2";  
$dbtble = "books";  
$mysql_link = mysql_connect($dbhost,$dbuser,$dbpass);  
$column = mysql_list_fields($dbname,$dbtble,$mysql_link);  
for($i=0; $i< mysql_num_fields($column); $i++ )  
{  
print mysql_field_name($column,$i )."<br>";  
}  
?>  

Ò»¸ö¸ü¸´ÔÓµÄÀý×Ó½«ÏòÄãÑÝʾPHPijЩ¾øÃîµÄ¹¦ÄÜ¡£  

<html>  
<head>  
<title>Example 2 -- more details</title>  
</head>  
<body bgcolor="white">  
<?  
$dbuser = "root";  
$dbhost = "localhost";  
$dbpass = "password";  
$dbname = "test2";  
$dbtable = "books";  
//------ DATABASE CONNECTION --------//  
$mysql_link = mysql_connect($dbhost,$dbuser,$dbpass);  
$column = mysql_list_fields($dbname,$dbtable,$mysql_link);  
$sql = "SELECT * FROM $dbtable";  
$result = mysql_db_query($dbname,$sql);  
?>  
<table bgcolor="black">  
<tr><td>  
<table>  
</td></tr>  
</table>  

</body>  
</html>  

×¢Ò⣬ÎÒÃǾ¹ÄÜÔÚͬһÎļþÖÐͬʱÓÐHTMLºÍPHPÃüÁî¡£Õâ¾ÍÊÇPHP½Å±¾µÄÆæÃîÖ®´¦¡£  
  

ÐéÄâÖ÷»úµÄÉèÖÃ

ÏÖÔÚÊÇÉèÖÃApache´¦ÀíһЩÐéÄâÖ÷»úµÄʱ¼äÁË¡£ÓÉÓÚApacheÌṩµÄÁé»îÐÔ£¬ÐéÄâÖ÷»ú¿ÉºÜ¼òµ¥µØ×öµ½¡£Ê×ÏÈÄãÐèÒªÒ»¸öDNS·þÎñÆ÷°ÑÐéÄâÖ÷»úµÄÓòÃûÖ¸Ïòweb·þÎñÆ÷µÄIPµØÖ·¡£ÔÚDNSʹÓÃÒ»¸öCNAME¼Ç¼°Ñ your_virtual_domain.comÖ¸Ïò·þÎñÆ÷µÄIP¡£Æä´ÎÄãÐèÒªÐÞ¸ÄApacheµÄÅäÖÃÎļþhttpd.confÒÔÔö¼ÓеÄÐéÄâÓòÃû¡£¼Çס£¬ÕâÖ»ÊÇÒ»¸öºÜ»ù±¾µÄÀý×Ó£¬ÄãÓÐÓÂÆø¶ÁÒ»ÏÂApacheµÄÖ¸Áî¡£  

ÈÃÎÒÃÇ¿´Ò»¸ö httpd.conf µÄÀý×Ó¡£  

httpd.conf Ƭ¶Ï  

#--------------------------------------------------------#  
# VIRTUAL HOST SECTION NON-SSL  
#--------------------------------------------------------#  
# VirtualHost directive allows you to specify another virtual  
# domain on your server. Most Apache options can be specified  
# within this section.  

# Mail to this address on errors  
ServerAdmin webmaster@domain1.com  

# Where documents are kept in the virtual domain  
# this is an absolute path. So you may want to put  
# in a location where the owner can get to it.  
DocumentRoot /home/vhosts/domain1.com/www/  

# Since we will use PHP to create basically  
# all our file we put a directive to the Index file.  
DirectoryIndex index.php  

# Name of the server  
ServerName www.domain1.com  

# Log files Relative to ServerRoot option  
ErrorLog logs/domain1.com-error_log  
TransferLog logs/domain1.com-access_log  
RefererLog logs/domain1.com-referer_log  
AgentLog logs/domain1.com-agent_log  

# Use CGI scripts in this domain. In the next case you  
# can see that it does not have CGI scripts. Please  
# read up on the security issues relating to CGI-scripting.  
ScriptAlias /cgi-bin/ /var/www/cgi-bin/domain1.com/  
AddHandler cgi-script .cgi  
AddHandler cgi-script .pl  

# This is another domain. Note that you could host  
# multiple domains this way...  

# Mail to this address on errors  
ServerAdmin webmaster@domain2.com  

# Where documents are kept in the virtual domain  
DocumentRoot /virtual/domain2.com/www/html  

# Name of the server  
ServerName www.domain2.com  

# Log files Relative to ServerRoot option  
ErrorLog logs/domain2.com-error_log  
TransferLog logs/domain2.com-access_log  
RefererLog logs/domain2.com-referer_log  
AgentLog logs/domain2.com-agent_log  

# No CGI¡¯s for this host  

# End: virtual host section  

ʹÓÃÉÏÊöÀý×ÓÔÚÄãµÄ·þÎñÆ÷ÉÏ´´½¨Äã×Ô¼ºµÄÐéÄâÖ÷»ú¡£Èç¹ûÄãÏë´ÓApacheÍøÕ¾ÉÏÔĶÁÿһÌõÖ¸ÁËüµÄÍøÖ·ÊÇ£ºhttp://www.apache.org¡£  
  

SSLÐéÄâÖ÷»ú

´´½¨SSLÐéÄâÖ÷»úÀàËÆ·ÇSSL¡£³ýÁËÄãÐèÒªÖ¸¶¨ÁíÍâµÄÖ¸Á»¹ÓУ¬ÄãÐèÒªÔö¼ÓÒ»¸öDNS¼Ç¼²¢ÇÒÐÞ¸Ä httpd.conf¡£ÕâÀïÓÐÒ»¸öÀý×Ó¡£  

#--------------------------------------------#  
# SSL Virtual Host Context  
#--------------------------------------------#  

# General setup for the virtual host  
DocumentRoot /usr/local/apache/htdocs  
ServerAdmin webmaster@securedomain1.com  
ServerName www.securedomain1.com  
ErrorLoglogs/domain1.com-error_log  
TransferLog logs/domain1.com-transfer_log  

# SSL Engine Switch:  
# Enable/Disable SSL for this virtual host.  
SSLEngine on  

# Server Certificate:  
# Point SSLCertificateFile at a PEM encoded certificate. If  
# the certificate is encrypted, then you will be prompted for a  
# pass phrase. Note that a kill -HUP will prompt again. A test  
# certificate can be generated with `make certificate¡¯ under  
# built time. Keep in mind that if you¡¯ve both a RSA and a DSA  
# certificate you can configure both in parallel (to also allow  
# the use of DSA ciphers, etc.)  
# Note that I keep my certificate files located in a central  
# location. You could change this if you are an ISP, or ASP.  

SSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crt  

# Server Private Key:  
# If the key is not combined with the certificate, use this  
# directive to point at the key file. Keep in mind that if  
# you¡¯ve both a RSA and a DSA private key you can configure  
# both in parallel (to also allow the use of DSA ciphers, etc.)  

SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/server.key  

# Per-Server Logging:  
# The home of a custom SSL log file. Use this when you want a  
# compact non-error SSL logfile on a virtual host basis.  
CustomLog /usr/local/apache/logs/ssl_request_log  

"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b"  

¼ÇסÄãÓкܶàÖ¸Áî¿ÉÒÔÖ¸¶¨¡£ÎÒÃǽ«ÔÚÁíһƪÓйØÅäÖÃApacheµÄÎÄÕÂÖÐÌÖÂÛ£¬±¾ÎÄÖ»ÊÇÒ»¸öÈëÃÅÐÔÖ¸ÄÏ¡£  
  

Éú³ÉÖ¤Êé

ÕâÊÇÈçºÎÉú³ÉÖ¤ÊéµÄ°´²¿¾Í°àµÄÃèÊö¡£  

ΪÄãµÄApache·þÎñÆ÷´´½¨Ò»¸öRSA˽ÓÃÃÜÔ¿(±»Triple-DES¼ÓÃܲ¢ÇÒ½øÐÐPEM¸ñʽ»¯)£º  

# openssl genrsa -des3 -out server.key 1024  

ÇëÔÚ°²È«µÄµØ·½±¸·ÝÕâ¸öserver.keyÎļþ¡£¼ÇסÄãÊäÈëµÄͨÐжÌÓï(pass phrase)£¡Äã¿ÉÒÔͨ¹ýÏÂÃæµÄÃüÁî¿´µ½Õâ¸öRSA˽ÓÃÃÜÔ¿µÄϸ½Ú¡£  

# openssl rsa -noout -text -in server.key  

¶øÇÒÄã¿ÉÒÔΪÕâ¸öRSA˽ÓÃÃÜÔ¿´´½¨Ò»¸ö¼ÓÃܵÄPEM°æ±¾£¨²»ÍƼö£©£¬Í¨¹ýÏÂÁÐÃüÁ  

# openssl rsa -in server.key -out server.key.unsecure  

Ó÷þÎñÆ÷RSA˽ÓÃÃÜÔ¿Éú³ÉÒ»¸öÖ¤ÊéÇ©ÊðÇëÇó£¨CSR-Certificate Signing Request£©£¨Êä³ö½«ÊÇPEM¸ñʽµÄ£©£º  

# openssl req -new -key server.key -out server.csr  

µ±OpenSSLÌáʾÄã¡°CommonName¡±Ê±£¬È·±£ÄãÊäÈëÁË·þÎñÆ÷µÄFQDN("Fully Qualified Domain Name" £¬¼´£¬µ±ÄãΪһ¸öÒÔºóÓÃhttps://www.foo.dom/·ÃÎʵÄÍøÕ¾Éú³ÉÒ»¸öCSRʱ£¬ÕâÀïÊäÈë"www.foo.dom"¡£Äã¿É½èÖúÏÂÁÐÃüÁî²é¿´¸ÃCSRµÄϸ½Ú£º  

# openssl req -noout -text -in server.csr  
  

½«CSR·¢µ½Ò»¸öCA

ÏÖÔÚÄã±ØÐë·¢Ë͸ÃCSRµ½Ò»¸öCAÒÔ±ãÇ©Êð£¬È»ºóµÄ½á¹û²ÅÊÇ¿ÉÒÔÓÃÓÚApacheµÄÒ»¸öÕæÕýµÄÖ¤Êé¡£  

ÓÐÁ½ÖÖÑ¡Ôñ£º  

µÚÒ»ÖÖ£¬Äã¿ÉÒÔͨ¹ýÒ»¸öÉÌÒµÐÔCAÈçVerisign »ò ThawteÇ©ÊðÖ¤Êé¡£ÄÇôÄãͨ³£Òª½«CSRÌùÈëÒ»¸öweb±í¸ñ£¬Ö§¸¶Ç©Êð·ÑÓò¢µÈ´ýÇ©ÊðµÄÖ¤Ê飬ȻºóÄã¿ÉÒÔ°ÑËü´æÔÚÒ»¸öserver.crtÎļþÖС£¹ØÓÚÉÌÒµÐÔCAµÄ¸ü¶àÐÅÏ¢£¬Çë²Î¼ûÏÂÁÐÁ´½Ó£º  

Verisign - http://digitalid.verisign.com/server/apacheNotice.htm  
Thawte Consulting - http://www.thawte.com/certs/server/request.html  
CertiSign Certificadora Digital Ltda. - http://www.certisign.com.br  
IKS GmbH - http://www.iks-jena.de/produkte/ca /  
Uptime Commerce Ltd. - http://www.uptimecommerce.com  
BelSign NV/SA - http://www.belsign.be  

Äã×Ô¼ºµÄCA  

µÚ¶þÖÖ£¬Äã¿ÉÒÔÀûÓÃ×Ô¼ºµÄCA²¢ÓɸÃCAÇ©ÊðCSR¡£Äã¿ÉÒÔ´´½¨×Ô¼ºµÄÈÏÖ¤ÖÐÐÄÀ´Ç©ÊðÖ¤Êé¡£×î¼òµ¥µÄ·½·¨ÊÇÀûÓÃOpenSSLÌṩµÄCA.sh»ò CA.pl½Å±¾¡£±È½Ï¸´ÔÓ¶øÇÒÊÇÊÖ¹¤µÄ·½·¨ÊÇ£º  

ΪÄãµÄCA´´½¨Ò»¸öRSA˽ÓÃÃÜÔ¿£¨ ±»Triple-DES¼ÓÃܲ¢ÇÒ½øÐÐPEM¸ñʽ»¯µÄ£©£º  

# openssl genrsa -des3 -out ca.key 1024  

ÇëÔÚ°²È«µÄµØ·½±¸·ÝÕâ¸öca.keyÎļþ¡£¼ÇסÄãÊäÈëµÄͨÐжÌÓï(pass phrase)£¡Äã¿ÉÒÔͨ¹ýÏÂÃæµÄÃüÁî¿´µ½Õâ¸öRSA˽ÓÃÃÜÔ¿µÄϸ½Ú¡£  

# openssl rsa -noout -text -in ca.key  

¶øÇÒÄã¿ÉÒÔΪÕâ¸öRSA˽ÓÃÃÜÔ¿´´½¨Ò»¸ö¼ÓÃܵÄPEM°æ±¾£¨²»ÍƼö£©£¬Í¨¹ýÏÂÁÐÃüÁ  

# openssl rsa -in ca.key -out ca.key.unsecure  

ÀûÓÃCAµÄRSAÃÜÔ¿´´½¨Ò»¸ö×ÔÇ©ÊðµÄCAÖ¤Ê飨X509½á¹¹£©£¨Êä³ö½«ÊÇPEN¸ñʽµÄ£©£º  

# openssl req -new -x509 -days 365 -key ca.key -out ca.crt  

Äã¿ÉÒÔͨ¹ýÏÂÁÐÃüÁî²é¿´¸ÃÖ¤ÊéµÄϸ½Ú£º  

# openssl x509 -noout -text -in ca.crt  

×¼±¸Ò»¸öÇ©ÊðËùÐèµÄ½Å±¾£¬ÒòΪ"openssl ca"ÃüÁîÓÐÒ»Ð©Ææ¹ÖµÄÒªÇó¶øÇÒȱʡµÄOpenSSLÅäÖò»ÔÊÐí¼òµ¥µØÖ±½ÓʹÓÃ"openssl ca"ÃüÁËùÒÔÒ»¸öÃûΪsign.shµÄ½Å±¾Ëæmod_ssl·Ö·¢Ò»µÀ·¢²¼£¨×ÓĿ¼pkg.contrib/£©¡£Ê¹Óøýű¾½øÐÐÇ©Êð¡£  

ÏÖÔÚÄã¿ÉÒÔʹÕâ¸öCAÇ©Êð·þÎñÆ÷µÄCSR£¬ÒԱ㴴½¨ÓÃÓÚApache·þÎñÆ÷ÄÚ²¿µÄÕæÕýµÄSSLÖ¤Ê飨¼Ù¶¨ÄãÊÖÍ·ÒѾ­ÓÐÒ»¸öserver.csr£©£º  

# ./sign.sh server.csr  

ËüÇ©Êð·þÎñÆ÷µÄCSR²¢ÇÒ½á¹ûÔÚÒ»¸öserver.crtÎļþÖС£  

ÏÖÔÚÄãÓÐÁ½¸öÎļþ£ºserver.ketºÍserver.crt¡£ÔÚÄãµÄApacheµÄhttpd.confÎļþÖУ¬ÈçÏÂʹÓÃËüÃÇ£º  

SSLCertificateFile /path/to/this/server.crt  
SSLCertificateKeyFile /path/to/this/server.key  

server.csr²»ÔÙÐèÒªÁË¡£  

[/size7]
»ÃÏëµÄ×ÔÓÉÖ»ÊÇ»ÃÏë ×ÔÓɵĻÃÏë²ÅÊÇ×ÔÓÉ

TOP

ÎÒµÄϵͳÊÇXPºÍ2000£¬Ïë×°PHPÔõô°ì£¿
ÈËÉúÈçÃÎ

TOP

ºÃ°ì£¡

ÓÐÁ½ÖÖ·½·¨
1¡¢°²×°PHPTriadV2.21£¬ÓÃGOOGLEËÑһϡ£ÕâÊÇÒ»¸öAPACHE+MYSQL+PHPÈýºÏÒ»µÄÈí¼þ£¬×°ÍêºóÄãµÄ¼ÆËã»ú¾ÍÄÜÌṩweb·þÎñÁË¡£
2¡¢ÏȰ²×°IIS£¬ÔÙÏÂÔØPHP for WIN32µÄ°²×°³ÌÐò£¬ÏÂÔØµØÖ·www.php.net È»ºó°´ÕÕÀïÃæµÄ°²×°ËµÃ÷¾ÍÐÐÁË¡£ÊµÔÚ²»Ðл¹ÊÇÓÃGOOGLEËÑÒ»ÏÂÁË¡£


ÈçÓöµ½ÎÊÌâÔÙ·¢Ìù£¬µ«ËµÃ÷ÒªÏêϸ£¬ÒÔ±ã½â¾öÎÊÌâ¡£
ÎÒµÄMSN Spaces - Óпտ´¿´

Îҵİٶɿռä - Óпտ´¿´





×¢Ò⣺ 1¡¢×ªÌùʱÇëÏÈÓÃÂÛ̳ËÑË÷½øÐйؼü×Ö²éÕÒ£¬ÒÔÃâÖØ¸´·¢Ìû¡£

TOP

ÊÇ£¬°æÖ÷´óÈË£¡

TOP

win2K+Apache
ÄǸöÅäÖÃÎĵµ¿´²»¶®£¬ÄÄλ¸ßÊÖÖ¸½Ì£¡

TOP

·¢Ð»°Ìâ