ПредишенСледващото

задача
Вие искате да стартирате програмата за Perl, PHP или Python в уеб среда.

решение
Пусни ги с помощта на сървъра Apache.

дискусия
Този раздел описва как да конфигурирате Apache да тече Perl скриптове, PHP, Python, и показва примери на уеб скриптове на всеки един от тези езици.

В главната директория на Apache (приемаме, че директорията / ЮЕсАр / местни / Apache) включва следните директории:

кофа за боклук
Съдържа уеб-, т.е. себе си Apache, както и други изпълним programmy.conf
Конфигурационни файлове, включително httpd.conf, главният файл се използва от Apache.

htdocs
Коренът на дървото с документи.

трупи
Регистрационни файлове.
За да конфигурирате Apache за изпълнение на скриптове, редактирате httpd.conf файла в директорията на конф. Обикновено изпълними скриптове се характеризират с или местоположение или разширение на името на файла. Местоположение на файла може или не може да зависи от езика.

Apache конфигурация често се съдържа в основната директория на CGI-бен директория на сървъра, където инсталираните скриптове, които трябва да бъдат изпълнявани от външна програма.


Той определя с помощта на директивата за ScriptAlias:

ScriptAlias ​​/ CGI-хамбар / / ЮЕсАр / местни / Apache / CGI-хамбар /

В тази конфигурация директорията на CGI-бен може да съдържа скриптове на всички езици. Затова каталога е неутрален по отношение на езика и на Apache сървъра трябва по някакъв начин да разбера как да се използва интерпретатор за изпълнение на всеки един от сценариите са в указателя. За да се осигури тази информация е на първия ред на скрипта трябва да започва с #! и пътя до програмата, която изпълнява скрипта, както и евентуално някои опции. Например, скрипт, който започва с една линия по-долу, ще се стартира с помощта на Perl, както и опция -w Perl показва необходимостта от издаване на предупреждения за съмнителна
Telnyh езикови конструкции:

На UNIX скрипт, за да работи правилно, което трябва да се направи скрипт изпълним (коригират + х от екипа).


Горният ред #! подходящ за система, в която е инсталиран Perl, както / ЮЕсАр / хамбар / Perl. Ако интерпретатора на Perl е инсталиран в друга директория, промени начина, по низа. Ако не е зададено като D на Windows, и Perl:

\ Perl \ бин \ perl.exe, линията #! Тя трябва да изглежда така:

#! D: \ Perl \ бин \ Perl -wU потребители на Windows има и друга възможност - да съответства на разширение на името на .pl Perl преводач файл. След това сценарият може да започне по този начин:

#! Perl -w
Директивата за ScriptAlias ​​посочва директорията, която може да се използва за скриптове, написани на всеки език. Налице е също така възможност да се сравни каталога всеки конкретен език процесор, тогава всяка директория скрипт ще се счита за писмено на този език. Например, за да зададете директорията / ЮЕсАр / местни / Apache / CGI-Perl директория mod_perl на, Apache може да бъде конфигуриран, както следва:


Alias ​​/ CGI-Perl / / ЮЕсАр / местни / Apache / CGI-Perl /

SetHandler Perl скрипт
PerlHandler Apache :: Registry
PerlSendHeader на
Опции + ExecCGI

След това можете да се обадите директория намира в скрипт, Perl, както следва:

Използването mod_perl е извън обхвата на нашата дискусия, така че нека не говорим повече за това.


Някои източници на полезна информация за mod_perl са изброени в допълнение В.

Каталози, които се използват изключително за съхранение на скриптове, обикновено намиращи се извън документ дървото на Apache. Една алтернатива на използването на специални директории за скриптове може да служи като идентификация на сценарии за разширяване на името на файла: имената са съчетани с определено разширение определен език процесор. След това тези файлове могат да бъдат поставени в дървото с документи навсякъде. Обикновено това е така, защото се работи с PHP. Например, ако вашият Apache сървъра е конфигуриран с построена в PHP поддръжка чрез mod_php модул, можете да му покажа, че имената на скриптове, които завършват с .php, трябва да се тълкуват като PHP скриптове. За да направите това, добавете в httpd.conf този ред:

AddType заявление / х-уеб--PHP .php

Ако сега се инсталира PHP скриптове myscript.php htdocs (Apache документ главната директория), в адреса да се обадите на сценария е:

Ако PHP работи като външен самостоятелен програма, е необходимо да се информират Apache, където тя трябва да се търси. Например, ако използвате Windows, и PHP инсталиран като D: \ Php \ php.exe, поставени в httpd.conf-духането след серията (обърнете внимание на използването на пътищата, наклонена черта, а не обратното):

ScriptAlias ​​/ PHP / "D: / Php /"
AddType заявление / х-уеб--PHP .php
прилагане действие / х-уеб--PHP /php/php.exe

Получената URL адреса в примерите, ще приемем, че Perl и Python скриптове се намират в CGI-бен директория, и PHP скриптове - МСВ дърво директория на вашия документ, както и да имат .php разширение. Т.е. URL скриптове в следните езици ще изглежда така:

Ако имате намерение да използвате тези настройки, уверете се, че Apache главната директория има CGI-бен директория, в Apache документ основната директория - МСВ директория. След това, да се работи с Perl уеб скриптове или Python трябва да ги копирате в CGI-касета и PHP скриптове - в mcb.Esli вие влизате в мрежата сценарий, а в замяна получи страница с грешка, обърнете се към дневника грешка Apache, от които можете да важна информация за това, защо скрипта не работи. Обикновено дневника грешка се съхранява в директорията с файлове error_log трупи. Ако не можете да намерите такъв файл, погледнете във файла httpd.conf конфигурационния както е директива ErrorLog.

Конфигуриране на Apache за изпълнение на скриптове, можете да започнете да ги пишете за генериране на уеб страници. Останалата част от този раздел ви казва как да го направя в Perl, PHP и Python. В примерите за всеки от езиците, които се свързват към сървъра MySQL, пуснете запитване таблици, показващи, а резултатът се показва в уеб страница.

Сценариите, представени тук, съдържа допълнителни модули и библиотеки, които трябва да бъдат включени в него. (По-нататък ние приемаме, че съответните модули вече са свързани, и да се покаже само фрагменти от скриптове.)

Perl
По-долу е нашата първа уеб скрипт в Perl, show_tables.pl. Той създава глава в съответствие с определения тип съдържание. празен ред отделяне на заглавието от тялото на страницата и началната част на страницата. След това скриптът извлича и показва списък с таблици база данни готварска книга. След приключване на списъка с таблици показва HTML-тагове, покриване на страницата:

#! / ЮЕсАр / хамбар / Perl -w
# Show_tables.pl - Изпълняване на заявка таблици, показващи, и да покаже резултата,
# Генериране на HTML
използването на строг режим;
използвате неограничено QW (/ ЮЕсАр / местни / Apache / ИЪ / Perl);
Рецепти използва;
# Показва заглавието, празен ред и горната част на страницата
печат

Маси в готварска книга Database

Маси в готварска книга на базата данни:


EOF
# Свърже с базата данни, показва и списък на таблиците, прекъсване на връзката
ми $ гръдна = Cookbook :: свържете ();
ми $ STH = $ dbh-> подготви ( "таблици, показващи");
$ Sth-> изпълнение ();
а (моя @row = $ sth-> fetchrow_array ())
печат "$ ред [0]
\ N ";>
$ Dbh-> Прекъсване ();
# Посочете крайния маркер
печат

EOF
изход (0);

За да тествате сценария, поставете го в директорията на CGI-бен и се обадете от браузър, както следва:

В HTML сценария show_tables.pl генерирани от включването в литерали изявление показва, че представляват маркери. Друг подход за генериране на уеб страници, приложени в CGI.pm модул, който опростява създаването на уеб скриптове без да се изисква буквалните таговете писане. CGI.pm модул предоставя обектно-ориентиран и функционален интерфейс, който ви позволява да създадете уеб страници в някой от тези методи. show_tables_oo.pl скрипт използва обектно-ориентиран интерфейс за създаване на един и същи отчетен като show_tables.pl:

#! / ЮЕсАр / хамбар / Perl -w
# Show_tables_oo.pl - Изпълняване на заявка таблици, показващи, и да покаже резултата,
# С помощта на обектно-ориентиран интерфейс CGI.pm
използването на строг режим;
използвате неограничено QW (/ ЮЕсАр / местни / Apache / ИЪ / Perl);
използват CGI;
Рецепти използва;
# Създаване на CGI обект на методи за достъп CGI.pm
ми $ CGI = нов CGI;
# Показва заглавието, празен ред и горната част на страницата
печат $ cgi-> глава ();
печат $ cgi-> START_HTML (-title => "Таблици в готварска книга Database", -bgcolor => "бял");
печат $ cgi-> р ( "таблици в базата данни: готварска книга");
# Свърже с базата данни, показва и списък на таблиците, прекъсване на връзката
ми $ гръдна = Cookbook :: свържете ();
ми $ STH = $ dbh-> подготви ( "таблици, показващи");
$ Sth-> изпълнение ();
а (моя @row = $ sth-> fetchrow_array ())
печат $ ред [0]. $ Cgi-> BR ();
>
$ Dbh-> Прекъсване (); # Output крайния маркер
печат $ cgi-> END_HTML ();
изход (0);

Сценарият включва модул CGI.pm използване директива използване CGI, а след това създава CGI- $ обект на CGI, с помощта на който се позовава на различни методи за генериране на HTML. глава () метод създава глава тип съдържание. и START_HTML () образува началната част на страницата до метод за откриване на маркер (тяло). След създаването на първата страница на сценария получава информация от сървъра на базата данни и я показва. Името на всяка маса е съпроводено с етикет
, образувана метод BR () се обажда. END_HTML () метод връща маркера и завършване. Настройване на скрипта в CGI-бен директория, и го наричат ​​от браузъра, ще видите, че тя генерира същата страница като show_tables.pl.

CGI.pm функции могат да приемат различни параметри, някои от които са по избор. За да се позволи да посочите само необходимите параметри, CGI.pm позволява използването на списък нотация параметър -name => стойност. Така например, в START_HTML на повикване () параметър задава заглавна страница и BGCOLOR - цвят на фона. Notation -name => стойност ви позволява да определите параметрите в произволен ред, така че следните две изречения са еквивалентни:

печат $ cgi-> START_HTML (-title => "My Page Title", -bgcolor => "бял");
печат $ cgi-> START_HTML (-bgcolor => "бяло", -title => "My Page Title");

За да използвате функцията, а не обектно-ориентиран интерфейс към CGI.pm, трябва леко да промени сценария. използвате низ, който се отнася до CGI.pm, внася имената на методите в сценария на пространство от имена, и можете да го наречем, като функция, без да се създава обект CGI. Например, за да импортирате най-често срещаните методи, сценарият трябва да съдържа следното изречение:

използват CGI QW (: стандарт);

show_tables_fc.pl сценарий - това е еквивалентно на само считат show_tables_oo.pl, но написан с помощта на функцията повиквания. Прилага същите методи на CGI.pm, но те се позовават като функция самостоятелно, а не чрез обект $ CGI на:

#! / ЮЕсАр / хамбар / Perl -w
# Show_tables_fc.pl - Изпълняване на заявка таблици, показващи, и да покаже резултата,
# Използване функционален интерфейс CGI.pm
използването на строг режим;
използвате неограничено QW (/ ЮЕсАр / местни / Apache / ИЪ / Perl);
използват CGI QW (: стандарт); # Внос имената на стандартните методи
# Namespace сценарий
Рецепти използва;
# Показва заглавието, празен ред и горната част на страницата
печатащата глава (); печат START_HTML (-title => "таблици в готварска книга Database", -bgcolor => "бял");
печат р ( "таблици в базата данни: готварска книга");
# Свърже с базата данни, показва и списък на таблиците, прекъсване на връзката
ми $ гръдна = Cookbook :: свържете ();
ми $ STH = $ dbh-> подготви ( "таблици, показващи");
$ Sth-> изпълнение ();
а (моя @row = $ sth-> fetchrow_array ())
печат $ ред [0]. BR ();
>
$ Dbh-> Прекъсване ();
# Посочете крайния маркер
печат END_HTML ();
изход (0);

Поставете сценария show_tables_fc.pl CGI-бен директория, и се уверете, че тя произвежда същата мощност като show_tables_oo.pl.

По-късно в книгата за Perl уеб скриптове използва функционален интерфейс CGI.pm. Ако се интересувате от повече информация за CGI.pm, можете да стартирате от командния ред следната команда, която ще осигури достъп до наличната документация:

% Perldoc CGI
% Perldoc CGI :: Carp

Други източници на информация за модула, както и отпечатани на разположение в интернет, са изброени в Приложение C.

PHP
Изненадващо за уеб ориентиран език, PHP не дава възможност за намаляване на маркер задача. Но тъй като PHP е вграден език, можете просто просто напишете HTML в сценарий без да се използват за печат оферта. Помислете сценарий show_tables.php, който превключва между HTML и PHP:




Маси в готварска книга Database

(Тяло BGCOLOR = "бял")

Маси в готварска книга на базата данни:

За да тествате сценария, сложи го в документа на дърво директория МСВ уеб сървъра и го наричат ​​по този начин:

За разлика от Perl-версии на MySQL таблици изброяват изход скрипт, PHP скрипт не съдържа код за удар с глава на изход Content-Type. тъй като PHP тя генерира автоматично. (Ако не ви харесва тази ситуация, и искате да покажете своите заглавия се отнасят до описанието на функцията за хедър () в инструкцията за PHP.)

С изключение на нов ред тагове, всички HTML съдържание в show_tables.php скриптове, намиращи се извън на маркера. така че PHP интерпретатор просто го премахва без интерпретация. Ето версия скрипт, който е на целия HTML код, използвайки оферти за печат:

\ N ");
печат ( "\ Н");
печат ( "Таблици в готварска книга Database \ Н");
печат ( "\ Н");
печат ( "\ Н");
печат ( "

Маси в готварска книга на базата данни:

\ N ");
# Свърже с базата данни, показва и списък на таблиците, прекъсване на връзката
$ Conn_id = cookbook_connect ();
$ Result_id = mysql_query ( "Автор ТАБЛИЦИ", $ conn_id);
докато (списък ($ tbl_name) = mysql_fetch_row ($ result_id))
печат ( "$ tbl_name
\ N ");
mysql_free_result ($ result_id);
mysql_close ($ conn_id);
печат ( "\ Н");
печат ( "\ Н");
?>

Понякога е разумно да се прилага един подход, понякога - от друга, а понякога и двете едновременно в един и същ сценарий. Ако частта HTML не се отнася за всички стойности на променливи и изрази, вероятно ще е за предпочитане да го напиша в HTML режим. В противен случай е по-добре да се използва за печат или ехо на предложението, за да се избегне честото превключване между HTML и PHP.

Питон
Python стандартната инсталация включва полезна за уеб програмиране и CGI модули urllib. Въпреки това, в действителност са те, ние сме не е необходимо, защото единственото нещо, което ще направим първата уеб скрипт в Python, - генериране на обикновен HTML код. Напиши от версията на Python скрипт, който показва списък с MySQL таблица:

#! / ЮЕсАр / хамбар / питон
# Show_tables.py - Изпълняване на заявка Автор на таблици и показват резултати
сис внос
sys.path.insert (0, "/ ЮЕсАр / местни / Apache / ИЪ / питон")
внос MySQLdb
внос Cookbook
# Показва заглавието, празен ред и горната част на страницата
печат "" "Content-Type: текст / HTML


Маси в готварска книга Database

(Тяло BGCOLOR = "бял")

Маси в готварска книга на базата данни:


"" "
# Свърже с базата данни, показва и списък на таблиците, прекъсване на връзката
Връзка = Cookbook.connect ()
курсора = conn.cursor ()
cursor.execute ( "Автор ТАБЛИЦИ")
за (tbl_name,) в cursor.fetchall ():
печат tbl_name + "
"
cursor.close ()
conn.close ()
# Посочете крайния маркер
печат "" "
(/ Тяло)

"" "

Поставете скрипта в директорията на Apache CGI-бен и го наричат, както следва:

Подкрепете проекта - споделете линка, благодаря!