¡¡¡¡FreeBSD ±»ÓÃÓÚÔËÐÐÐí¶àÈ«Çò×îΪ·±Ã¦µÄ web Õ¾µã¡£ ´ó¶àÊý Internet É쵀 web ·þÎñÆ÷£¬ ¶¼Ê¹Óà Apache HTTP ·þÎñÆ÷¡£ Apache Èí¼þ°ü¿ÉÒÔÔÚÄúµÄ FreeBSD °²×°ÅÌÉÏÕÒµ½¡£ Èç¹ûûÓÐÔÚÊ״ΰ²×°Ê±¸½´ø°²×° Apache£¬ Ôò¿ÉÒÔͨ¹ý www/apache13 »ò www/apache22 port À´°²×°¡£
¡¡¡¡Ò»µ©³É¹¦µØ°²×°ÁË Apache£¬ ¾Í±ØÐë¶ÔÆä½øÐÐÅäÖá£
×¢Òâ: ÕâÒ»½Ú½éÉÜÁË 1.3.X °æ±¾µÄ Apache HTTP ·þÎñÆ÷ µÄÅäÖ㬠ÒòΪËüÊÇËæ FreeBSD һͬʹÓõÄ×î¶àµÄ°æ±¾¡£ Apache 2.X ÒýÈëÁ˺ܶàм¼Êõ£¬ µ«Ôڴ˲¢²»ÌÖÂÛ¡£ ÒªÁË½â¹ØÓÚ Apache 2.X µÄ¸ü¶à×ÊÁÏ£¬ Çë²Î¼û http://httpd.apache.org/¡£
¡¡¡¡Ö÷ÒªµÄ Apache HTTP Server ÅäÖÃÎļþ£¬ ÔÚ FreeBSD ÉϻᰲװΪ /usr/local/etc/apache/httpd.conf¡£ ÕâÊÇÒ»¸öµäÐ굀 UNIX® Îı¾ÅäÖÃÎļþ£¬ ËüʹÓà # ×÷ΪעÊÍ·û¡£ ¹ØÓÚÈ«²¿ÅäÖÃÑ¡ÏîµÄÏ꾡½éÉܳ¬³öÁ˱¾ÊéµÄ·¶Î§£¬ ÕâÀォֻ½éÉÜ×î³£±»Ð޸ĵÄÄÇЩ¡£
ÕâÖ¸¶¨ÁË Apache °²×°µÄ¶¥¼¶Ä¿Â¼¡£ Ö´ÐÐÎļþ±»·Åµ½·þÎñÆ÷¸ùĿ¼ (server root) µÄ bin ºÍ sbin ×ÓĿ¼ÖУ¬ ¶øÅäÖÃÎļþÔòλÓÚ etc/apache¡£
Õâ¸öµØÖ·ÊÇÔÚ·þÎñÆ÷·¢ÉúÎÊÌâʱӦ·¢Ë͵ç×ÓÓʼþµÄµØÖ·£¬ Ëü»á³öÏÖÔÚ·þÎñÆ÷Éú³ÉµÄÒ³ÃæÉÏ£¬ ÀýÈç´íÎóÒ³Ãæ¡£
ServerName ÔÊÐíÄúÅäÖ÷¢Ëͻؿͻ§¶ËµÄÖ÷»úÃû£¬ Èç¹ûÄúµÄ·þÎñÆ÷±»Óû§ÒÔ±ðµÄÃû×Ö·ÃÎÊ (ÀýÈ磬 ʹÓà www ¶ø²»ÊÇÖ÷»ú±¾ÉíµÄÕæÊµÃû×Ö)¡£
DocumentRoot£º Õâ¸öĿ¼ÊÇÄúµÄÎĵµËùÔÚµÄĿ¼¡£ ĬÈÏÇé¿öÏ£¬ ËùÓеÄÇëÇó¶¼»á´ÓÕâ¸öλÖÃÈ¥»ñÈ¡£¬ µ«Ò²¿ÉÒÔͨ¹ý·ûºÅÁ¬½ÓºÍ±ðÃûÖ¸¶¨ÆäËüµÄλÖá£
¡¡¡¡ÔÚÐÞ¸ÄÅäÖÃ֮ǰ±¸·Ý Apache µÄÅäÖÃÎļþÓÀÔ¶ÊÇÒ»¸öºÃϰ¹ß¡£ Ò»µ©¶Ô³õʼÅäÖÃÂúÒâÁË£¬ ¾Í¿ÉÒÔ¿ªÊ¼ÔËÐÐ Apache ÁË¡£
¡¡¡¡ÓëÐí¶àÆäËüÍøÂç·þÎñ²»Í¬£¬ Apache ²¢²»ÒÀÀµ inetd ³¬¼¶·þÎñÆ÷À´ÔËÐС£ Ò»°ãÇé¿öÏ»á°ÑËüÅäÖÃΪһ¸ö¶ÀÁ¢µÄ·þÎñÆ÷£¬ ÒÔÆÚÔÚ¿Í»§µÄ web ä¯ÀÀÆ÷Á¬Èë HTTP ÇëÇóʱ£¬ Äܹ»»ñµÃ¸üºÃµÄÐÔÄÜ¡£ ËüÌṩÁËÒ»¸ö shell ½Å±¾À´Ê¹Æô¶¯¡¢ Í£Ö¹ºÍÖØÐÂÆô¶¯·þÎñÆ÷±äµÃ¾¡¿ÉÄܵؼòµ¥¡£ Ê×´ÎÆô¶¯ Apache£¬ Ö»ÐèÖ´ÐУº
# /usr/local/sbin/apachectl start
¡¡¡¡¿ÉÒÔÔÚÈκÎʱºòʹÓÃÏÂÃæµÄÃüÁîÀ´Í£Ö¹·þÎñ£º
# /usr/local/sbin/apachectl stop
¡¡¡¡µ±ÓÉÓÚijÖÖÔÒòÐÞ¸ÄÁËÅäÖÃÎļþÖ®ºó£¬ ÐèÒªÖØÆô·þÎñÆ÷£º
# /usr/local/sbin/apachectl restart
¡¡¡¡ÒªÔÚÖØÆô Apache ·þÎñÆ÷ʱ²»Öжϵ±Ç°µÄÁ¬½Ó£¬ ÔòÓ¦ÔËÐУº
# /usr/local/sbin/apachectl graceful
¡¡¡¡¸ü¶àµÄÐÅÏ¢£¬ ¿ÉÒÔÔÚ apachectl(8) Áª»úÊÖ²áÖÐÕÒµ½¡£
¡¡¡¡ÒªÔÚϵͳÆô¶¯Ê±Æô¶¯ Apache£¬ ÔòÓ¦ÔÚ /etc/rc.conf ÖмÓÈ룺
apache_enable="YES"
¡¡¡¡»òÕß¶ÔÓÚApache 2.2£º
apache22_enable="YES"
¡¡¡¡Èç¹ûÄúÏ£ÍûÔÚϵͳÒýµ¼Ê±Æô¶¯ Apache httpd ³ÌÐò²¢Ö¸¶¨ÆäËüһЩѡÏ Ôò¿ÉÒÔ°ÑÏÂÃæµÄÐмӵ½ rc.conf£º
apache_flags=""
¡¡¡¡ÏÖÔÚ web ·þÎñÆ÷¾Í¿ªÊ¼ÔËÐÐÁË£¬ Äú¿ÉÒÔʹÓà web ä¯ÀÀÆ÷´ò¿ª http://localhost/¡£ ĬÈÏÏÔʾµÄ web Ò³ÃæÊÇ /usr/local/www/data/index.html¡£
¡¡¡¡Apache Ö§³ÖÁ½ÖÖ²»Í¬ÀàÐ͵ÄÐéÄâÖ÷»ú¡£ µÚÒ»ÖÖ·½·¨ÊÇ»ùÓÚÃû×ÖµÄÐéÄâÖ÷»ú¡£ »ùÓÚÃû×ÖµÄÐéÄâÖ÷»úʹÓÿͻ§»ú·¢À´µÄ HTTP/1.1 Í·À´±æ±ðÖ÷»úÃû¡£ ÕâʹµÃ²»Í¬µÄÓòµÃÒÔ¹²Ïíͬһ¸ö IP µØÖ·¡£
¡¡¡¡ÒªÅäÖà Apache À´Ê¹ÓûùÓÚÃû×ÖµÄÐéÄâÖ÷»ú£¬ ÐèÒª°ÑÀàËÆÏÂÃæµÄÏî¼Óµ½ÄúµÄ httpd.conf ÖУº
NameVirtualHost *
¡¡¡¡Èç¹ûÄúµÄ web ·þÎñÆ÷µÄÃû×ÖÊÇ www.domain.tld£¬ ¶øÄúÏ£Íû½¨Á¢Ò»¸ö www.someotherdomain.tld µÄÐéÄâÓò£¬ ÔòÓ¦ÔÚ httpd.conf ÖмÓÈ룺
<VirtualHost *> ServerName www.domain.tld DocumentRoot /www/domain.tld </VirtualHost> <VirtualHost *> ServerName www.someotherdomain.tld DocumentRoot /www/someotherdomain.tld </VirtualHost>
¡¡¡¡ÄúÐèÒª°ÑÉÏÃæµÄµØÖ·ºÍÎĵµÂ·¾¶¸ÄΪËùʹÓõÄÄÇЩ¡£
¡¡¡¡ÒªÁË½â¹ØÓÚÐéÄâÖ÷»úµÄ¸ü¶àÐÅÏ¢£¬ Çë²Î¿¼¹Ù·½µÄ Apache Îĵµ£¬ ÕâЩÎĵµ¿ÉÒÔÔÚ http://httpd.apache.org/docs/vhosts/ ÕÒµ½¡£
¡¡¡¡ÓÐÐí¶à²»Í¬µÄ Apache Ä£¿é£¬ ËüÃÇ¿ÉÒÔÔÚ»ù±¾µÄ·þÎñÆ÷»ù´¡ÉÏÌṩÐí¶à¸½¼ÓµÄ¹¦ÄÜ¡£ FreeBSD µÄ Ports Collection Ϊ°²×° Apache ºÍ³£Óõĸ½¼ÓÄ£¿éÌṩÁ˷dz£·½±ãµÄ·½·¨¡£
¡¡¡¡mod_ssl Õâ¸öÄ£¿éʹÓà OpenSSL ¿â£¬ À´Ìṩͨ¹ý °²È«Ì×½Ó×Ö²ã (SSL v2/v3) ºÍ ´«Êä²ã°²È« (TLS v1) ÐÒéµÄÇ¿¼ÓÃÜÄÜÁ¦¡£ Õâ¸öÄ£¿éÌṩÁË´ÓijһÊÜÐŵÄÖ¤ÊéÇ©Êð»ú¹¹ÉêÇëÇ©ÃûÖ¤ÊéËùÐèµÄËùÓй¤¾ß£¬ Äú¿ÉÒÔ½å´ËÔÚ FreeBSD ÉÏÔËÐа²È«µÄ web ·þÎñÆ÷¡£
¡¡¡¡Èç¹ûÄúÎ´Ôø°²×° Apache£¬ Ò²¿ÉÒÔÖ±½Ó°²×°Ò»·Ý°üº¬ÁË mod_ssl µÄ°æ±¾µÄ Apache 1.3.X£¬ Æä·½·¨ÊÇͨ¹ý www/apache13-modssl port À´½øÐС£ SSL Ö§³ÖÒѾ×÷Ϊ Apache 2.X µÄÒ»²¿·ÖÌṩ£¬ Äú¿ÉÒÔͨ¹ý www/apache22 port À´°²×°ºóÕß¡£
¡¡¡¡Apache¶ÔÓÚһЩÖ÷ÒªµÄ½Å±¾ÓïÑÔ¶¼ÓÐÏàÓ¦µÄÄ£¿é¡£ ÕâЩģ¿éʹµÃÍêȫʹÓÃijÖֽű¾ÓïÑÔÀ´Ð´ Apache Ä£¿é³ÉΪ¿ÉÄÜ¡£ ËûÃÇͨ³£Ò²±»Ç¶Èëµ½·þÎñÆ÷×÷Ϊһ¸ö³£×¤ÄÚ´æµÄ½âÊÍÆ÷£¬ ÒÔ±ÜÃâÆô¶¯Ò»¸öÍⲿ½âÊÍÆ÷¶ÔÓÚÏÂÒ»½Ú½«ÃèÊöµÄ¶¯Ì¬ÍøÕ¾ËùÐèʱ¼äºÍ×ÊÔ´ÉϵĿªÏú¡£
¡¡¡¡ÔÚ¹ýÈ¥µÄÊ®ÄêÀԽÀ´Ô½¶àµÄÆóҵΪÁËÔö¼ÓÊÕÒæºÍ±©¹âÂʶø×ªÏòÁË»¥ÁªÍø¡£ ÕâҲͬʱÔö½øÁ˶ÔÓÚ»¥¶¯ÍøÒ³ÄÚÈݵÄÐèÇó¡£ÓÐЩ¹«Ë¾£¬±ÈÈç Microsoft® ÍÆ³öÁË»ùÓÚËûÃÇרÓвúÆ·µÄ½â¾ö·½°¸£¬¿ªÔ´ÉçÇøÒ²×ö³öÁË»ý¼«µÄ»ØÓ¦¡£ ±È½ÏʱÉеÄÑ¡Ôñ°üÀ¨ Django£¬Ruby on Rails£¬ mod_perl, and mod_php.
¡¡¡¡Django ÊÇÒ»¸öÒÔ BSD Ðí¿ÉÖ¤·¢²¼µÄ framework£¬ ÄÜÈÿª·¢Õß¿ìËÙд³ö¸ßÐÔÄ܏߯·Ö浀 web Ó¦ÓóÌÐò¡£ ËüÌṩ¸øÒ»¸ö¶ÔÏó¹ØÏµÓ³Éä×é¼þ£¬Êý¾ÝÀàÐÍ¿ÉÒÔ±»µ± Python ÖеĶÔÏ󣬺ÍÒ»×é·á¸»µÄ¶¯Ì¬Êý¾Ý¿â·ÃÎÊ API£¬ ʹ¿ª·¢Õß±ÜÃâÁËд SQL Óï¾ä¡£Ëüͬʱ»¹ÌṩÁË¿ÉÀ©Õ¹µÄÄ£°åϵͳ£¬ ÈÃÓ¦ÓóÌÐòµÄÂß¼²¿·ÖÓë HTML µÄ±íÏÖ²ã·ÖÀë¡£
¡¡¡¡Django ÒÀÀµÓë mod_python£¬ Apache, ºÍÒ»¸ö¿ÉÑ¡µÄ SQL Êý¾Ý¿âÒýÇæ¡£ ÔÚÉèÖÃÁËһЩǡµ±µÄ±êÖ¾ºó£¬FreeBSD µÄ Port ϵͳ½«»á°ïÖúÄã°²×°ÕâЩ±ØÐèµÄÒÀÀµ¿â¡£
Àý 29-3. °²×° Django£¬Apache2£¬ mod_python3£¬ºÍ PostgreSQL
# cd /usr/ports/www/py-django; make all install clean -DWITH_MOD_PYTHON3 -DWITH_POSTGRESQL
¡¡¡¡ÔÚ°²×°ÁË Django ºÍÄÇЩÒÀÀµµÄÈí¼þÖ®ºó£¬ ÄãÐèÒª´´½¨Ò»¸ö Django ÏîÄ¿µÄĿ¼£¬È»ºóÅäÖà Apache£¬µ±ÓжÔÓÚÄãÍøÕ¾ÉÏÓ¦ÓóÌÐòµÄijЩָ¶¨µÄ URL ʱµ÷ÓÃÄÚǶµÄ Python ½âÊÍÆ÷¡£
Àý 29-4. Django/mod_python ÓÐ¹Ø Apache ²¿·ÖµÄÅäÖÃ
ÄãÐèÒªÔÚ Apache µÄÅäÖÃÎļþ httpd.conf ¼ÓÈëÒÔÏÂÕ⼸ÐУ¬ °Ñ¶ÔijЩ URL µÄÇëÇ󴫸øÄãµÄ web Ó¦ÓóÌÐò£º
<Location "/"> SetHandler python-program PythonPath "['/dir/to/your/django/packages/'] + sys.path" PythonHandler django.core.handlers.modpython SetEnv DJANGO_SETTINGS_MODULE mysite.settings PythonAutoReload On PythonDebug On </Location>
¡¡¡¡Ruby on Rails ÊÇÁíÍâÒ»¸ö¿ªÔ´µÄ web framework£¬ ÌṩÁËÒ»¸öÈ«ÃæµÄ¿ª·¢¿ò¼Ü£¬ÄܰïÖú web ¿ª·¢Õß¹¤×÷¸üÓгÉЧºÍ¿ìËÙд³öÇ¿´óµÄÓ¦ÓᣠËüÄܷdz£ÈÝÒ×µÄ´Ó posts ϵͳ°²×°¡£
# cd /usr/ports/www/rubygem-rails; make all install clean
¡¡¡¡Apache/Perl ¼¯³É¼Æ»®£¬ ½« Perl ³ÌÐòÉè¼ÆÓïÑÔµÄÇ¿´ó¹¦ÄÜ£¬ Óë Apache HTTP ·þÎñÆ÷ ½ôÃܵؽáºÏµ½ÁËÒ»Æð¡£ ͨ¹ý mod_perl Ä£¿é£¬ ¿ÉÒÔÍêȫʹÓà Perl À´×«Ð´ Apache Ä£¿é¡£ ´ËÍ⣬ ·þÎñÆ÷ÖÐǶÈëµÄ³Ö¾ÃÐÔ½âÊÍÆ÷£¬ Ïû³ýÁËÓÉÓÚÆô¶¯ÍⲿµÄ½âÊÍÆ÷Ϊ Perl ½Å±¾µÄÆô¶¯ËùÔì³ÉµÄÐÔÄÜËðʧ¡£
¡¡¡¡mod_perl ͨ¹ý¶àÖÖ·½Ê½Ìṩ¡£ ҪʹÓà mod_perl£¬ Ó¦¸Ã×¢Òâ mod_perl 1.0 Ö»ÄÜÅäºÏ Apache 1.3 ¶ø mod_perl 2.0 Ö»ÄÜÅäºÏ Apache 2.X ʹÓᣠmod_perl 1.0 ¿ÉÒÔͨ¹ý www/mod_perl °²×°£¬ ¶øÒÔ¾²Ì¬·½Ê½Áª±àµÄ°æ±¾£¬ Ôò¿ÉÒÔͨ¹ý www/apache13-modperl À´°²×°¡£ mod_perl 2.0 Ôò¿ÉÒÔͨ¹ý www/mod_perl2 °²×°¡£
¡¡¡¡PHP£¬ Ò²³ÆÎª ¡°PHP: Hypertext Preprocessor¡±£¬ ÊÇÒ»ÖÖÌØ±ðÊʺÏÓÚ Web ¿ª·¢µÄͨÓýű¾ÓïÑÔ¡£ ËüÄܹ»ºÜÈÝÒ×µØÇ¶Èëµ½ HTML Ö®ÖУ¬ ÆäÓï·¨½Ó½üÓÚ C¡¢ Java"£¬ ÒÔ¼° Perl£¬ ÒÔÆÚÈà web ¿ª·¢ÈËÔ±µÄһѸËÙ׫д¶¯Ì¬Éú³ÉµÄÒ³Ãæ¡£
¡¡¡¡Òª»ñµÃÓÃÓÚ Apache web ·þÎñÆ÷µÄ PHP5 Ö§³Ö£¬ ¿ÉÒÔ´Ó°²×° lang/php5 port ¿ªÊ¼¡£
¡¡¡¡ÔÚÊ״ΰ²×° lang/php5 port µÄʱºò£¬ ϵͳ»á×Ô¶¯ÏÔʾ¿ÉÓõÄһϵÁÐ OPTIONS (ÅäÖÃÑ¡Ïî)¡£ Èç¹ûÄúûÓп´µ½²Ëµ¥£¬ ÀýÈçÓÉÓÚ¹ýÈ¥Ôø¾°²×°¹ý lang/php5 port µÈµÈ£¬ ¿ÉÒÔÓÃÏÂÃæµÄÃüÁîÔÙ´ÎÏÔʾÅäÖò˵¥£¬ ÔÚ port µÄĿ¼ÖÐÖ´ÐУº
# make config
¡¡¡¡ÔÚÅäÖÃÑ¡Ïî¶Ô»°¿òÖУ¬ Ñ¡ÖÐ APACHE ÕâÒ»Ï ¾Í¿ÉÒÔÁª±à³öÓÃÓÚÓë Apache web ·þÎñÆ÷ÅäºÏʹÓõĿɶ¯Ì¬¼ÓÔØµÄ mod_php5 Ä£¿éÁË¡£
×¢Òâ: ÓÉÓÚ¸÷ʽ¸÷ÑùµÄÔÒò (ÀýÈ磬 ³öÓÚÒѾ²¿ÊðµÄ web Ó¦ÓõļæÈÝÐÔ¿¼ÂÇ)£¬ Ðí¶àÍøÕ¾ÈÔÔÚʹÓà PHP4¡£ Èç¹ûÄúÐèÒª mod_php4 ¶ø²»ÊÇ mod_php5£¬ ÇëʹÓà lang/php4 port¡£ lang/php4 port Ò²Ö§³ÖÐí¶à lang/php5 port ÌṩµÄÅäÖúͱàÒëʱѡÏî¡£
¡¡¡¡Ç°ÃæÎÒÃÇÒѾ³É¹¦µØ°²×°²¢ÅäÖÃÁËÓÃÓÚÖ§³Ö¶¯Ì¬ PHP Ó¦ÓÃËùÐèµÄÄ£¿é¡£ Çë¼ì²é²¢È·ÈÏÄúÒѽ«ÏÂÊöÅäÖüÓÈëµ½ÁË /usr/local/etc/apache/httpd.conf ÖУº
LoadModule php5_module libexec/apache/libphp5.so
AddModule mod_php5.c <IfModule mod_php5.c> DirectoryIndex index.php index.html </IfModule> <IfModule mod_php5.c> AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps </IfModule>
¡¡¡¡ÕâЩ¹¤×÷Íê³ÉÖ®ºó£¬ »¹ÐèҪʹÓà apachectl ÃüÁîÀ´Íê³ÉÒ»´Î graceful restart ÒÔ±ã¼ÓÔØ PHP Ä£¿é£º
# apachectl graceful
¡¡¡¡ÔÚδÀ´ÄúÉý¼¶ PHP ʱ£¬ make config Õâ²½²Ù×÷¾Í²»ÔÙÊDZØÐèµÄÁË£» ÄúËùÑ¡ÔñµÄ OPTIONS »áÓÉ FreeBSD µÄ Ports ¿ò¼Ü×Ô¶¯±£´æ¡£
¡¡¡¡ÔÚ FreeBSD ÖÐµÄ PHP Ö§³ÖÊǸ߶ÈÄ£¿é»¯µÄ£¬ Òò´Ë»ù±¾°²×°µÄ¹¦ÄÜÊ®·ÖÓÐÏÞ¡£ Ôö¼ÓÆäËû¹¦ÄܵÄÖ§³Ö·Ç³£¼òµ¥£¬ Ö»Ðèͨ¹ý lang/php5-extensions port ¼´¿ÉÍê³É¡£ Õâ¸ö port ÌṩÁËÒ»¸ö²Ëµ¥Çý¶¯µÄ½çÃæÀ´°ïÖúÍê³É PHP À©Õ¹µÄ°²×°¡£ ÁíÍ⣬ Ò²¿ÉÒÔͨ¹ý¶ÔÓ¦µÄ port À´µ¥¶À°²×°À©Õ¹¡£
¡¡¡¡ÀýÈ磬 Òª½«¶ÔÓÚ MySQL Êý¾Ý¿â·þÎñÆ÷µÄÖ§³Ö¼ÓÈë PHP5£¬ Ö»Ðè¼òµ¥µØ°²×° databases/php5-mysql¡£
¡¡¡¡°²×°ÍêÀ©Õ¹Ö®ºó£¬ ±ØÐëÖØÐÂÆô¶¯ Apache ·þÎñÆ÷£¬ À´ÁîÆäÊÊӦеÄÅäÖñä¸ü£º
# apachectl graceful
±¾ÎĵµºÍÆäËüÎĵµ¿É´ÓÕâÀïÏÂÔØ£ºftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
Èç¹û¶ÔÓÚFreeBSDÓÐÎÊÌ⣬ÇëÏÈÔĶÁÎĵµ£¬Èç²»Äܽâ¾öÔÙÁªÏµ<questions@FreeBSD.org>.
¹ØÓÚ±¾ÎĵµµÄÎÊÌâÇë·¢ÐÅÁªÏµ <doc@FreeBSD.org>.