Кренете свој HTTP сервер на Windows XP со Apache

  • Креатор на темата Креатор на темата Princ
  • Време на започнување Време на започнување
P

Princ

Гостин
Доколку дизајнираш веб страни можеби би сакал да инсталираш веб сервер на твојот компјутер за го тестираш сајтот во околина која одговара на вистинската колку што е можно повеќе. Оваа тема објаснува како да ја инсталирате и конфигурирате апликацијата со отворен код Apache HTTP (web) сервер и како да направите да работи не со еден сајт, туку со онолку колку што сакате вие користејќи ја техниката наречена виртуелно хостирање според името.

Планирај пред да започнеш: фолдери
Планирањето на добра структура на фолдери за организација на вашите веб страни е важно. Под претпоставка дека имате ваша компанија, јас би ви препорачал да креирате фолдер во My Documents со име Moja kompanija. Наместо Moja kompanija можеби ќе сакаш да го користиш името на твоја компанија.
Наредно, креирај во фолдерот Moja kompanija под-фолдери Klienti и Moi stranici. Покасно ќе ги искористиме за да ги зачуваме страните што им припаѓаат на твојата компанија.

slika-1.gif

Наредно, отвори нов фолдер за секој клиент под фолдерот Klienti.
Искористи го неговото име или името на компанијата на клиентот за да го именуваш овој фолдер. Потоа, во фолдерот на секој клиент креирај фолдер со името на домејнот на клиентот.

Во секој фолдер кој го носи името на домејнот, креирај фолдер со име site кој ќе биде точка од која па натаму ќе има пристап клиентот.

Во тој фолдер креирај три нови фолдера со имиња: cgi, logs и web. Тие се именувани така бидејќи најдобро ја објаснуваат нивната намена.

Фолдерот web (така го нареков во мојот случај) ќе биде фолдер во кој го поставувам сајтот и сите фолдери во него ќе бидат достапни за јавноста. На пример, ако фолдеров има фајл primer.html ќе биде достапен ако некој напише http://primer.com.mk/primer.html под претпоставка дека мојот домејн е primer.com.mk

Забележувате дека cgi директориумот е надвор од фолдерот кој оди во јавност а тоа е добро. Зошто, ќе објаснам нешто покасно.

Симнете го Apache web server
Apache веб серверот е достапен во три различни серии: 1.3, 2.0 и 2.2. Бидејќи повеќе се препорачува 2.0 одколку 1.3 за Windows XP а софтвер како PHP колку што знам јас не е поддржан во верзијата 2.2 за Windows XP сеуште, јас ќе ја користам верзијата 2.0.59.

Оди на страната за превземање на Apache веб серверот и одбери ја серијата по твоја желба (1.3 или 2.0) и симни го програмот. Јас го симнав apache_2.0.59-win32-x86-no_ssl.msi

slika-2.gif

Инсталирање на Apache веб серверот
Како прво, логирај се како администратор.
Стартирајте ја инсталацијата на програмот. Ќе добиете порака за добредојде. Кликни на Next за да продолжите. Во овој прозорец треба да ја прочитата лиценцата на Apache и доколку ја прифаќате, одберете "I accept the terms in the license agreement" и кликни на Next.

Прикажан ви е "Read This First" документ, прочитајте го и кликнете повторно на Next.

slika-3.gif

Во овој прозорец можеш да ги внесеш информациите за серверот. Бидејќи јас немам други компјутери на локалната мрежа, му дадов домејн и име localhost. Доколку имате и други компјутери во локалната мрежа и сакате и тие да имаат пристап до веб серверот, подесете го добро серверот. Ако не можеш да се одлучиш сега, препорачувам сега да му дадеш име и домејн localhost бидејќи кога и да посакаш можеш да ја смениш конфигурацијата.

Јас препорачувам да го стартирате Apache веб серверот како сервис. Така ќе бидете сигурни дека секогаш е активен и нема потреба "рачно" да го активирате.

Наредниот чекор ти овозможува да одбереш тип на инсталација на Apache веб серверот. Default (типичните) подесувања се најдобри мислам во моментов, па затоа кликни Next.

Сега треба да одбереш директориум во кој сакаш да се инсталира веб серверот. Ако сакаш смени го типичниот, иако препорачувам и ќе пишувам како да се инсталирале во default директориумот односно C:\Program Files\Apache Group\

Најпосле, откако ќе кликнете на Next копчето можете да ја стартирате инсталацијата со кликање на копчето Install. Неколку прозорци ќе се отворат набрзинка па ќе се појави Windows Security прозорецот да праша дали да го блокира овој (Apache HTTP server) програм.

Одбери Unblock ако сакаш да биде јавен сервер (сервер до кој ќе може секој да пристапи). Ќе се затвори тој прозорец и ќе бидеш информиран дека Apache HTTP server е инсталиран успешно. Кликни Finished за да се затвори инсталациониот програм.

Продолжува во наредниот пост...
 
Тестирање на Apache HTTP серверот
За да ја тестирате инсталацијата, отвори го твојот интернет прелистувач http://localhost/ во адрес барот (освен ако не си користел некој друг поим наместо localhost кај Apache server information).
Тест страната за инсталацијата на Apache би требало да биде прикажана на твојот прелистувач.
Доколку не биде прикажана тест страната, изгледа Apache серверот не беше стартиран поради некојa причина, провери го фајлот error.log во logs фолдерот на веб серверот (во наредното поглавје ќе објаснам подобро).

Разбирање на структурата на фолдерите на Apache веб серверот
Важно е да разбереш барем некој дел од структурата на фолдерите на Apache, или барем кај се лоцирани. Нема да го опишувам секој фолдер, туку ќе ги спомнам само најважните.

slika 4.jpg

bin фолдерот
bin меѓу другите фајлови ги содржи и извршните на серверот: Apache.exe и програмот кој го контролира серверот кога е вклучен како сервис: ApacheMonitor.exe. Исто така во овој фолдер се и htpasswd.exe и htdigest.exe кои служат за да направиш одредени делови од твојот сајт забранети за јавноста.

cgi-bin фолдерот
cgi-bin фолдерот има една CGI програма напишана во Perl, printenv.pl, која можеш да ја користиш за да провериш дали работи инсталацијата на Perl во комбинација со Apache HTTP серверот. Доколку добиваш "500 Internal Server Error" кога пишуваш http://localhost/cgi-bin/printenv.pl во интернет прелистувачот, или Perl не е инсталиран, или пак конфигурацијата на веб серверот не е како што треба да биде. Провери во error.log во logs фолдерот покасно.

conf фолдерот
Овој фолдер ги содржи конфигурационите фајлови користени од Apache веб серверот. Секој користен фајл има дупликат во името. Ќе ги препознаеш според зборот default кој го содржат во името, на пример httpd.default.conf. access.conf и srm.conf се празни фајлови (во нив може да има само коментари) при инсталација, и препорачувам да не ги користите тие фајлови при конфигурација на серверот.
httpd.conf е искористен и конфигуриран при инсталацијата на програмот. Ќе излистам неколку од модифицираните подесувања, вклучувајќи и кратко објаснување и бројот на редот во кој може да се најде тоа подесување (може да е различен ако користиш различна верзија на Apache од оваа јас што ја објаснувам).
  • Listen 80 - Порт кој го користи Apache серверот. Ако имаш друг веб сервер кој го користи тој порт (на пример оној на IIS), претпоставувам ќе сакаш да го смениш портот на некој различен и што не е во употреба (ред 120).
  • ServerAdmin admin@localhost - Електронска адреса на администраторот на серверот која е користена за на пример да се испрати порака до администраторот за генерирана грешка од серверот. (ред 198).
  • ServerName localhost:80 - хостот и портот кој серверот ги користи (ред 212).
Некои од другите подесувања нема да ги спомнам овде бидејќи ќе ги спомнам покасно кога ќе стигнеме до нив.

htdocs
Овој фолдер ја содржи HTML страната која ја видовте кога го посетивте http://localhost/. Сеуште не ги додавај твоит HTML документи или други фајлови во овој фолдер, туку продолжи да читаш.

manual
Овој фолдер ја содржи документацијата на Apache HTTP серверот до која можеш да пристапиш ако напишеш http://localhost/manual/ во твојот интернет прелистувач. Забелешка: овој фолдер е прикажан во коренот на јавниот фолдер поради AliasMatch директивата во httpd.conf (ред 491).

logs
Овој фолдер (меѓу другото) ги содржи и фајловите access.log и error.log. Ако нешто не оди како што треба, како на пример грешката 500 што ја спомнав прееска, провери го error.log фајлот. Со виртуелното хостирање можеш на секоја веб страна да им дадеш свој лог фајл (подолу ќе објаснам) затоа осигурај се дека го проверуваш вистинскиот фајл.

Продолжува во наредниот пост...
 
Подесување на виртуелно хостирање
За да биде овој чекор најлесен што може, јас ги зачував подесувањата во посебен фајл наместо да ги додадам во httpd.conf.

Логирај се на компјутерот со Администраторски привилегии и креирај празен фајл именуван virtual-hosts.conf во фолдерот conf на Apache веб серверот. Default локација е C:\Program Files\Apache Group\Apache2\conf\.

Додавање домејни во фајлот за хостови
За секоја веб страна што сакате да ја хостирате локално мора да одберете домејн внимателно. Јас го користам истиот домејн како и вистинскиот сајт, само му додавам lc. напред (слично како поддомејн) бидејќи сум сигурен дека тој домејн не е користен на интернет бидејќи е мој.

Додај го секој домејн во hosts фајлот кој го користи Windows XP кој е лоциран во C:\WINDOWS\system32\drivers\etc фолдерот. Пример конфигурација би изгледала вака

127.0.0.1 localhost

127.0.0.1 lc.primer.com.mk # mojot licen sajt
127.0.0.1 lc.kajgana.com # sajt na mojata kompanija

Запомни дека се што има # напред се смета како коментар. Може да ја користиш таа опција за да додадеш корисни коментари. IP адресата, 127.0.0.1, значи "овој компјутер" (localhost). Ако сакаш да го користиш овој веб сервер во локална мрежа, мора да користиш IP адреса за да може точно овој сервер да биде комунициран во локалната мрежа од другите компјутери поврзани на истата мрежа. Исто така, мора да ги едитираш hosts фајловите во секој од компјутерите или пак да наместиш именски опслужувач.

Вклучување на virtual-hosts.conf фајлот
Додај го цитатот во httpd.conf фајлот кој се наоѓа во фолдерот C:\Program Files\Apache Group\Apache2\conf за да биде активен и тој фајл при активирање на веб серверот

Include conf/virtual-hosts.conf

Бидејќи веќе се наоѓаме во conf фолдерот, нема потреба да ја пишуваме комплетната локација туку доволно е само коренот да го внесеме како пократок пат.

Стопирање и стартирање на Apache веб серверот
Откако ќе ја внесеш измената во httpd.conf фајлот или/и во virtual-hosts фајлот, Apache серверот мора да биде рестартиран. Ако си логиран како Администратор најлесен начин да го направиш тоа е да го користиш Apache monitor кој е стартиран кога ќе се логираш и се мести во системската линија. Кликни со десен копче на маусот на црвениот пердув кај часовникот и одбери Open Apache Monitor во менито. Можеш да го рестартираш Apache HTTP серверот со едноставно кликање на опцијата Restart.

slika 5.JPG

Друг начин за рестартирање на Apache е со внесување на командата NET STOP APACHE2 па стискање Ентер, и NET START APACHE2 во Command Prompt

NET STOP APACHE2
The Apache2 service is stopping.
The Apache2 service was stopped successfully.


NET START APACHE2
The Apache2 service is starting.

The Apache2 service was started successfully

Забелешка: МОРА да бидеш логиран како системски администратор за системот да ја изврши оваа наредба!

Доколку стартирањето на серверот е неуспешно, како на пример

NET START APACHE2
The Apache2 service is starting.
The Apache2 service could not be started.

A service specific error occurred: 1.

More help is available by typing NET HELPMSG 3547.
не паничи туку прочитај го наредниот дел.

Решавање на грешки после измена на конфигурационите подесувања
Доколку веб серверот не може да биде стартиран одкако си направил некоја измена во конфигурациониот фајл, отвори го Command Prompт, смени го директориумот на Apache bin, и стартирај го apache.exe со -t опцијата

cd "C:\Program Files\Apache Group\Apache2\bin"
C:\Program Files\Apache Group\Apache2\bin>apache -t
apache: could not open document config file C:/Program Files/Apache Group/Apache
2/conf/virtual-host.conf
Во случајот опишан погоре (намерно) е направена грешка во пишување на фајлот virtual-hosts.conf. Поправи го проблемот и пробај повторно. Треба да добиеш Syntax OK одговор.
Сега повторно пробај да го стартираш Apache со командата NET START APACHE2 или користи го Apache service monitor.

Додади виртуелни хостови
Одкако ќе ја додадеш Include директивата во httpd.conf на Apache можеш да додаваш и бришеш виртуелни хостови во фајлот virtual-hosts.conf. Забележи дека за да додадеш нови мораш да го обновиш и hosts фајлот исто така.

Бидејќи virtual-hosts.conf фајлот е празен во моментов, да го додадеме првиот виртуелен хост според името.

# Use name-based virtual hosting.
NameVirtualHost *:80

<VirtualHost *:80>
ServerName lc.primer.com.mk
DocumentRoot "C:/.../My Company/My Sites/primer.com.mk/site/web"

CustomLog logs/lc.primer.com.mk.access.log combined
ErrorLog logs/lc.primer.com.mk.error.log </VirtualHost>
Јас користев три точки (...) наместо да ја пастирам целата локација ама ти мораш да ја внесеш комплетната локација.

Забелешка: наместо \ во опишување на директориум, СЕКОГАШ се користи /. Ова запомнете го бидејќи е многу важно!

Погоре подесивме логовите за грешки и пристап на сајтот да бидат запишани во logs фолдерот, подфолдер дефиниран од ServerRoot директивата. За секој виртуелен хост би требало да користиш единствено име за да ти биде полесно да пристапиш до нив и грешката на еден сајт да ја најдеш полесно. Јас го користев името на домејнот како префикс за секој лог фајл.

NameVirtualHost директивата е барана само еднаш, па затоа поставете ја на почеток на фајлот virtual-hosts.conf. Исто така забележи дека првиот виртуелен хост е оној default, значи ако одиш на http://localhost/ ќе ја видиш индекс страната на првиот виртуелен хост. Можеби ќе сакаш да подесиш различен друг прв виртуелен хост за да биде тој главен а не http://localhost/.

За секој виртуелен хост, копирај ја секцијата со виртуелен хост (<VirtualHost*>..</VirtualHost>), смени го домејнот после ServerName директивата, смени ја патеката до DocumentRoot и смени ги имињата на фајловите логирање нза грешки и записи за пристап до сајтот.

Продолжува во наредниот пост...
 
Тестирање на хостовите според името
Ако посетиш некој од сајтовите кои ги хостираш би требало да добиеш грешка "403 Forbidden", освен ако веќе не си ставил index.html фајл во фолдерот на тој сајт (или било кој друг фајл кој Apache може да го прочита) бидејќи главните подесувања на Apache не дозволуваат листање на содржината на директориумите кои немаат индекс фајл во нив.

Како тест, може да го посетите /manual/ директориумот во вашиот сајт. Пример: http://primer.com.mk/manual/.

Ако се појави некоја грешка, не заборавај да го провериш логот за грешки.


Овде завршувам со упатството и ја отварам темата за коментари и прашања. Секое прашање кое го има одговорот во некој од погорните постови ќе биде избришано (и нормално ќе остане неодговорено). Бидејќи се изнамачив да ви го напишам ова, од вас барам само едно: читајте. Не е срамота да читаш нешто што не го разбираш и што сакаш да го научиш, срамота е при напишано да те мрзи да го прочиташ. Прочитајте и неколку пати по ред, истата работа, ако треба. Па после прашајте, откако ќе бидете сигурни дека одговор на вашиот проблем нема во погорните постови.
Се надевам научивте нешто ново и ќе ви користи и понатаму.
 
Е овака Princ. Го ценам твојот труд многу и по ред како што ги пишуваше постовите така ги следев инструкциите.
1-во што забележав, напишав http://localhost/cgi-bin/printenv.pl и ми дава грешка 500 Internal Server Error. Е сега, еве што ми дава во error.log
[Fri Apr 13 14:38:56 2007] [error] [client 127.0.0.1] (OS 3)The system cannot find the path specified. : couldn't spawn child process: C:/Program Files/Apache Group/Apache2/cgi-bin/printenv.pl
2-ро се направив како што си напишал. Пробав scientist.com.mk (отвори ја страната и види што кажува). Направив index.htm фајл во web кај што ми е scientist.com.mk и пак истото го дава. Поздрав и помагај.
 
1. Ја објаснав посебно грешката 500. Немаш PERL инсталирано или нешто штрчи во подесувањата на серверот. Ти најдобро знаеш што и како си направил. Доколку до детал ги следеше моите упатства немаше да дојде до оваа грешка (освен ако немаш PERL инсталирано а тоа е башка муабет).

2. Ни тука не си ме следел. Треба во hosts фолдерот да го додадеш тој хост + следи го делот со виртуелни хостови. Ако ти се отвата тест страната на апаче кога се обидуваш да пристапиш до http://localhost/ тогаш инсталацијата е добра и барај решение во под-деловите на моите постови.
 
Princ напиша:
1. Ја објаснав посебно грешката 500. Немаш PERL инсталирано или нешто штрчи во подесувањата на серверот. Ти најдобро знаеш што и како си направил. Доколку до детал ги следеше моите упатства немаше да дојде до оваа грешка (освен ако немаш PERL инсталирано а тоа е башка муабет).

2. Ни тука не си ме следел. Треба во hosts фолдерот да го додадеш тој хост + следи го делот со виртуелни хостови. Ако ти се отвата тест страната на апаче кога се обидуваш да пристапиш до http://localhost/ тогаш инсталацијата е добра и барај решение во под-деловите на моите постови.
Види за првото, па тоа и сакав да знам. Како да инсталирам Perl.
За второто, ја отворам http://localhost/ и ми работи. Се пробав по двапати и пак не работи. Се направив како што напиша.
 
Симни го ActivePerl од овде и инсталирај го.
Потоа, едитирај го printenv.pl и најди го
#!/usr/local/bin/perl
па смени го со локацијата до perl.exe. Пример
#!C:/perl/bin/perl.exe

Рестартирај Apache па кажи што си направил.
За второто навистина не знам што да ти речам. Верувам одговорот е во делот со виртуелни хостови ама некако не се разбираме.
 
Ок, Perl сега работи. Ама во право си проблемот сега ми е во VirtualHost. Пробав да ставам втор сервер.
<VirtualHost *> ServerName scientist91.com.mk DocumentRoot "C:/Documents and Settings/Mojjuzer/My Documents/Moja kompanija/Moj stranici/scientist91.com.mk/site/web" CustomLog logs/scientist91.com.mk.access.log combined ErrorLog logs/scientist91.com.mk.error.log </VirtualHost>
и ми ја дава следнава порака
2001031275187725041_rs.jpg

Бидејќи неможеше да се стартува преку Apache Monitor-от, пробав преку cmd.exe како што рече, и оттука не работеше, и ми ја даваше погорната порака.
 
Кога сум го пастирал кодот во цитатот, се помешале ентерите.
Имаш грешка во кодот. Вака треба да биде правилно:

# Use name-based virtual hosting.
NameVirtualHost *:80

<VirtualHost *:80>
ServerName lc.primer.com.mk
DocumentRoot "C:/.../My Company/My Sites/primer.com.mk/site/web"

CustomLog logs/lc.primer.com.mk.access.log combined
ErrorLog logs/lc.primer.com.mk.error.log </VirtualHost>
 
Друже, не ме сексај. Требаше одамна да те избришам бидејќи се што праша веќе го има во постовите кои со мака ги напишав!
Зошто го игнорираш портот односно делот *:80 ??
Копирај го мојот код во мојот предходен пост и пастирај го во твојот фајл. После измени само домејн и постави ја патеката до твојот директориум.
 
Симни го </VirtualHost> во нов ред, под ErrorLog да биде поставен и рестартирај Apache.
 
Princ напиша:
Симни го </VirtualHost> во нов ред, под ErrorLog да биде поставен и рестартирај Apache.
Е сега веќе работи. Ама пак кога ќе пишам scientist.com.mk истото го дава. А кога ќе напишам scientist.com.mk/index.htm работи. Што е проблемов?
 

Kajgana Shop

Back
На врв Bottom