Журнал LinuxFormat - перейти на главную

LXF167:Руб­ри­ка си­сад­ми­на

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(Open Build Service)
(Open Build Service)
Строка 22: Строка 22:
 
''Мно­гие раз­ра­бот­чи­ки пор­ти­ру­ют свой код на несколь­ко плат­форм че­рез этот сер­вис от SUSE.''
 
''Мно­гие раз­ра­бот­чи­ки пор­ти­ру­ют свой код на несколь­ко плат­форм че­рез этот сер­вис от SUSE.''
  
[[Файл:LXF167.sysadmin.obsscr_opt.jpeg|400px|left|thumb| ]]
+
[[Файл:LXF167.sysadmin.obsscr_opt.jpeg|300px|left|thumb| ]]
 
По­сто­ян­ные чи­та­те­ли этой руб­ри­ки пом­нят, как я се­то­вал на труд­но­сти раз­ра­бот­ки учеб­ных про­грамм из-за раз­ветв­ления тех­но­ло­гий в ди­ст­ри­бу­ти­вах Linux. Рост ко­ли­че­­ст­ва вер­сий, ди­ст­ри­бу­ти­вов и ап­па­рат­ных плат­форм соз­да­ет труд­но­сти и для раз­ра­бот­чи­ков про­грамм, же­лаю­щих сде­лать свои при­ло­жения доступ­ны­ми мак­си­маль­но­му чис­лу поль­зо­ва­те­лей в ви­де го­то­вых па­ке­тов. Тео­ре­ти­че­­ски это оз­на­ча­ет сбор­ку про­грамм для до­воль­но боль­шо­го ко­ли­че­­ст­ва ди­ст­ри­бу­ти­вов, боль­шин­ст­ва из ко­то­рых ско­рее все­го да­же нет на ва­шем ком­пь­ю­те­ре. Ес­ли вы раз­ра­бот­чик и ока­за­лись в та­кой си­туа­ции, взгляните на Open Build Service [Сер­вис от­кры­тых сбо­рок] от SUSE (http://openbuildservice.org). Это про­ект openSUSE, пе­ре­де­лан­ный в 2005 го­ду из внут­ренней сис­те­мы сбор­ки SUSE. Вкрат­це, вы за­гру­жае­те ис­ход­ный код про­ек­та на сер­вис, вы­би­рае­те плат­фор­мы, для ко­то­рых нуж­ны сбор­ки, на­жи­мае­те кноп­ку и жде­те, по­ка за­дания на сбор­ку не по­па­дут в один из 400 «сло­тов сбор­ки». По окон­чании про­цес­са вы по­лу­чи­те несколь­ко неболь­ших ре­по­зи­то­ри­ев с го­то­вы­ми па­ке­та­ми и ссыл­ка­ми на них, и поль­зо­ва­те­ли смо­гут уста­но­вить эти па­ке­ты в сво­их ди­ст­ри­бу­ти­вах с по­мо­щью обыч­ных ути­лит управ­ления па­ке­та­ми.
 
По­сто­ян­ные чи­та­те­ли этой руб­ри­ки пом­нят, как я се­то­вал на труд­но­сти раз­ра­бот­ки учеб­ных про­грамм из-за раз­ветв­ления тех­но­ло­гий в ди­ст­ри­бу­ти­вах Linux. Рост ко­ли­че­­ст­ва вер­сий, ди­ст­ри­бу­ти­вов и ап­па­рат­ных плат­форм соз­да­ет труд­но­сти и для раз­ра­бот­чи­ков про­грамм, же­лаю­щих сде­лать свои при­ло­жения доступ­ны­ми мак­си­маль­но­му чис­лу поль­зо­ва­те­лей в ви­де го­то­вых па­ке­тов. Тео­ре­ти­че­­ски это оз­на­ча­ет сбор­ку про­грамм для до­воль­но боль­шо­го ко­ли­че­­ст­ва ди­ст­ри­бу­ти­вов, боль­шин­ст­ва из ко­то­рых ско­рее все­го да­же нет на ва­шем ком­пь­ю­те­ре. Ес­ли вы раз­ра­бот­чик и ока­за­лись в та­кой си­туа­ции, взгляните на Open Build Service [Сер­вис от­кры­тых сбо­рок] от SUSE (http://openbuildservice.org). Это про­ект openSUSE, пе­ре­де­лан­ный в 2005 го­ду из внут­ренней сис­те­мы сбор­ки SUSE. Вкрат­це, вы за­гру­жае­те ис­ход­ный код про­ек­та на сер­вис, вы­би­рае­те плат­фор­мы, для ко­то­рых нуж­ны сбор­ки, на­жи­мае­те кноп­ку и жде­те, по­ка за­дания на сбор­ку не по­па­дут в один из 400 «сло­тов сбор­ки». По окон­чании про­цес­са вы по­лу­чи­те несколь­ко неболь­ших ре­по­зи­то­ри­ев с го­то­вы­ми па­ке­та­ми и ссыл­ка­ми на них, и поль­зо­ва­те­ли смо­гут уста­но­вить эти па­ке­ты в сво­их ди­ст­ри­бу­ти­вах с по­мо­щью обыч­ных ути­лит управ­ления па­ке­та­ми.
  

Версия 07:28, 9 ноября 2018

Содержание

По рецептам доктора Брауна

Эзо­те­ри­че­ское сис­тем­ное ад­ми­ни­ст­ри­ро­ва­ние из при­чуд­ли­вых за­во­ро­тов ки­шок сер­вер­ной

(thumbnail)
Д-р Крис Браун. Доктор обучает, пишет и консультирует по Linux. Ученая степень по физике элементарных частиц ему в этом совсем не помогает.


Open Build Service

Мно­гие раз­ра­бот­чи­ки пор­ти­ру­ют свой код на несколь­ко плат­форм че­рез этот сер­вис от SUSE.

LXF167.sysadmin.obsscr opt.jpeg

По­сто­ян­ные чи­та­те­ли этой руб­ри­ки пом­нят, как я се­то­вал на труд­но­сти раз­ра­бот­ки учеб­ных про­грамм из-за раз­ветв­ления тех­но­ло­гий в ди­ст­ри­бу­ти­вах Linux. Рост ко­ли­че­­ст­ва вер­сий, ди­ст­ри­бу­ти­вов и ап­па­рат­ных плат­форм соз­да­ет труд­но­сти и для раз­ра­бот­чи­ков про­грамм, же­лаю­щих сде­лать свои при­ло­жения доступ­ны­ми мак­си­маль­но­му чис­лу поль­зо­ва­те­лей в ви­де го­то­вых па­ке­тов. Тео­ре­ти­че­­ски это оз­на­ча­ет сбор­ку про­грамм для до­воль­но боль­шо­го ко­ли­че­­ст­ва ди­ст­ри­бу­ти­вов, боль­шин­ст­ва из ко­то­рых ско­рее все­го да­же нет на ва­шем ком­пь­ю­те­ре. Ес­ли вы раз­ра­бот­чик и ока­за­лись в та­кой си­туа­ции, взгляните на Open Build Service [Сер­вис от­кры­тых сбо­рок] от SUSE (http://openbuildservice.org). Это про­ект openSUSE, пе­ре­де­лан­ный в 2005 го­ду из внут­ренней сис­те­мы сбор­ки SUSE. Вкрат­це, вы за­гру­жае­те ис­ход­ный код про­ек­та на сер­вис, вы­би­рае­те плат­фор­мы, для ко­то­рых нуж­ны сбор­ки, на­жи­мае­те кноп­ку и жде­те, по­ка за­дания на сбор­ку не по­па­дут в один из 400 «сло­тов сбор­ки». По окон­чании про­цес­са вы по­лу­чи­те несколь­ко неболь­ших ре­по­зи­то­ри­ев с го­то­вы­ми па­ке­та­ми и ссыл­ка­ми на них, и поль­зо­ва­те­ли смо­гут уста­но­вить эти па­ке­ты в сво­их ди­ст­ри­бу­ти­вах с по­мо­щью обыч­ных ути­лит управ­ления па­ке­та­ми.

Сбор­ка в OBS не ог­раниче­на ди­ст­ри­бу­ти­ва­ми SUSE – спи­сок под­дер­жи­вае­мых плат­форм об­ши­рен и вклю­ча­ет мно­же­ст­во вер­сий Debian, Fedora, RedHat, CentOS, Mandriva и Ubuntu. Что­бы вы пред­став­ля­ли его мас­штаб, сей­час сер­вис со­дер­жит 28 600 про­ек­тов с 18 9197 па­ке­та­ми в 42 693 ре­по­зи­то­ри­ях, и им поль­зу­ют­ся 34 029 под­твер­жден­ных раз­ра­бот­чи­ков.

У сер­ви­са есть и web-ин­тер­фейс, и ути­ли­та команд­ной стро­ки osc. Ис­ход­ный код OBS от­крыт (под GPL2), и это аль­тер­на­ти­ва сер­ви­су, раз­ме­щен­но­му на сер­ве­рах SUSE – за­гру­зив и ском­пи­ли­ро­вав про­грам­му из ис­ходников или восполь­зо­вав­шись раз­вер­ты­вае­мой сис­те­мой (в ви­де об­раза VMware или Live CD), вы смо­же­те уста­но­вить сер­вис и ра­бо­тать с ним локаль­но. Это хо­ро­ший ва­ри­ант для тех, кто не хо­чет вы­да­вать ис­ход­ные ко­ды про­грам­мы и при­ло­жение в от­кры­тый доступ.

Стек LAMP

Зна­ме­ни­тая чет­вер­ка из ми­ра от­кры­то­го ПО, LAMP со­дер­жит все не­об­хо­ди­мое для управ­ле­ния ком­мер­че­ским сай­том. Пер­вая из че­ты­рех ста­тей в се­рии.

LAMP – по­жа­луй, од­на из са­мых из­вест­ных аб­бре­виа­тур в ми­ре от­кры­то­го ПО, но ес­ли вы ее не слы­ша­ли, то L – это Linux, A – Apache, M – MySQL, а P – хм... это за­ви­сит от то­го, ко­го вы спра­ши­вае­те. Боль­шин­ст­во, на­вер­ное, ска­жут «PHP», но Perl и Python то­же час­то ис­поль­зу­ют­ся для на­пи­сания скрип­тов на сер­ве­ре. Вме­сте эти че­ты­ре тех­но­ло­гии по­зво­ля­ют соз­да­вать на­деж­ные ди­на­ми­че­­ские сай­ты на осно­ве ис­клю­чи­тель­но сво­бод­ных про­грамм с от­кры­тым ис­ход­ным ко­дом.

Что та­кое «ди­на­ми­че­­ский» сайт? Ну, из­на­чаль­но со­дер­жи­мое сай­тов бы­ло ста­ти­че­­ским. На­при­мер, лю­ди пи­са­ли свои ис­сле­до­ва­тель­ские от­че­ты в ви­де web-страниц, а web-сер­вер достав­лял их в брау­зер. При ка­ж­дом по­се­щении страницы вы ви­ди­те од­но и то же, ес­ли, конеч­но, кто-то не за­шел и не от­ре­дак­ти­ро­вал ее. На ди­на­ми­че­­ском сай­те, на­про­тив, по крайней ме­ре часть со­дер­жи­мо­го соз­да­ет­ся на ле­ту, обыч­но с по­мо­щью ко­да (на сто­роне сер­ве­ра), ко­то­рый ка­ким-то об­ра­зом свя­зан с web-страницей. Про­стой при­мер – страница www.whattimeisit.com, ко­то­рая со­об­ща­ет те­ку­щее вре­мя и яв­ля­ет­ся ис­тин­но ди­на­ми­че­­ской, т. е. вы не ви­ди­те од­но и то же ка­ж­дый раз, когда от­кры­вае­те ее (мне при­хо­дит на ум ста­рый скетч из «Шоу ту­пиц» [ра­дио­пе­ре­да­ча BBC, вы­хо­див­шая в 1951 – 1960 г., – прим. пер.], в ко­то­ром Эклс [Eccles] за­пи­сал вре­мя на ли­ст­ке бу­ма­ги, что­бы по­том с ним све­рять­ся).

Трех­уровневая ар­хи­тек­ту­ра

Обыч­но у ди­на­ми­че­­ско­­го сай­та есть ба­за дан­ных на сто­роне сер­ве­ра. На­при­мер, зай­дя на nationalrail.co.uk, сна­ча­ла вы уви­ди­те бо­лее или менее ста­ти­че­скую страницу, где мож­но вве­сти ме­сто на­зна­чения и вре­мя от­прав­ления по­езд­ки. По­сле на­жа­тия на кноп­ку Go [Най­ти] от­кро­ет­ся сле­дую­щая страница с рас­пи­санием по­ез­дов, и она по боль­шей час­ти генери­ру­ет­ся на ле­ту с по­мо­щью об­ра­щения к ба­зе дан­ных на сер­ве­ре. Это клас­си­че­­ская трех­уровневая ар­хи­тек­ту­ра: пер­вый уро­вень – уро­вень пред­став­ления, это ин­тер­фейс, ко­то­рый со­би­ра­ет ин­фор­ма­цию у поль­зо­ва­те­ля и по­ка­зы­ва­ет ему ре­зуль­тат. Средний уро­вень – уро­вень бизнес-ло­ги­ки, на нем на­хо­дит­ся вся ло­ги­ка при­ло­жения. На­при­мер, ес­ли вам нуж­но уз­нать рас­пи­сание по­ез­дов от Лид­са до Лу­то­на, и вам нуж­ны толь­ко «са­мые бы­ст­рые по­ез­да» (по­ез­да, ко­то­рые не опе­ре­жа­ют­ся дру­ги­ми по­ез­да­ми), то что­бы это уз­нать, при­дет­ся кое-что вы­чис­лить. Это на­зы­ва­ет­ся «бизнес-ло­ги­кой». На­конец, на уровне сер­ве­ра раз­ме­ша­ют­ся дан­ные – в дан­ном слу­чае, ба­за дан­ных рас­пи­саний по­ез­дов. Это три уров­ня ар­хи­тек­ту­ры, пре­достав­ляе­мые сте­ком LAMP, хо­тя, как по­ка­зы­ва­ет мой ри­су­нок, чет­кой свя­зи ме­ж­ду L, A, M и P и тре­мя уров­ня­ми ар­хи­тек­ту­ры нет.


Эту се­рию мы начнем с уста­нов­ки CentOS 6.2. Мы уста­но­вим и на­стро­им ком­понен­ты сте­ка A, M и P и сре­ду раз­ра­бот­ки. По хо­ду де­ла мы по­зна­ко­мим­ся с ба­за­ми дан­ных и язы­ком SQL (Structured Query Language – язык струк­ту­ри­ро­ван­ных за­про­сов), осво­им HTML, хо­тя бы немно­го, и изу­чим PHP на­столь­ко, что­бы вы­полнить за­да­чу. На­стоя­тель­но ре­ко­мен­дую уста­но­вить CentOS (на­при­мер, в вир­ту­аль­ную ма­ши­ну) и сле­до­вать за мной.

LAMP так ши­ро­ко ис­поль­зу­ет­ся, что во мно­гих ди­ст­ри­бу­ти­вах Linux мож­но уста­но­вить его одним щелч­ком мы­ши. На­при­мер, в Ubuntu есть ко­ман­да tasksel – она уста­нав­ли­ва­ет за­дан­ные на­бо­ры про­грамм для ука­зан­ной ра­бо­чей за­груз­ки сер­ве­ра и формирует за­дание LAMP, уста­нав­ли­ваю­щее весь стек од­ной ко­ман­дой. Дру­гой при­мер: ес­ли вы планируе­те раз­ме­щать сайт на «об­ла­ке» AWS, от­крой­те мас­тер соз­дания но­вой сис­те­мы [New Instance], вы­бе­ри­те вклад­ку Community AMIs [Об­ра­зы со­об­ще­ст­ва] и вве­ди­те “LAMP” в стро­ку по­ис­ка. Вы уви­ди­те бо­лее 200 пре­достав­лен­ных со­об­ще­ст­вом об­ра­зов, в основ­ном на ба­зе Ubuntu или CentOS. Но уста­нов­ка ком­понен­тов сте­ка по от­дель­но­сти по­зво­лит луч­ше по­нять, что про­ис­хо­дит, по­это­му так и по­сту­пим.

Начнем с Apache. Он есть в стан­дарт­ных ре­по­зи­то­ри­ях CentOS, и уста­но­вить его лег­ко:

  1. yum install httpd

Поя­вит­ся несколь­ко за­ви­си­мо­стей, в основ­ном для под­держ­ки сре­ды вре­мени вы­полнения Apache. Вам так­же мо­жет по­на­до­бить­ся до­ку­мен­та­ция, ко­то­рая, ока­зы­ва­ет­ся, в от­дель­ном па­ке­те:

  1. yum install httpd-manual

Глав­ный файл кон­фи­гу­ра­ции Apache – /etc/httpd/conf/httpd.conf. Рас­смот­рим основ­ные ди­рек­ти­вы (уч­ти­те, что это не пол­ный файл, а но­ме­ра строк до­бав­ле­ны для ссы­лок).

1. ServerRoot “/etc/httpd”

2. Listen 80

3. User apache

4. Group apache

5. LoadModule auth_basic_module modules/mod_auth_basic.so

6. LoadModule auth_digest_module modules/mod_auth_digest.so

7. Include conf.d/*.conf

8. LogLevel warn

9. DocumentRoot “/var/www/html”

10. <IfModule prefork.c>

11. StartServers 8

12. MinSpareServers 5

13. MaxSpareServers 20

14. ServerLimit 256

15. MaxClients 256

16. MaxRequestsPerChild 4000

17. </IfModule>

В стро­ке 1 за­да­ет­ся рас­по­ло­жение фай­лов на­строй­ки, лог-фай­лов и фай­лов оши­бок сер­ве­ра. Во­об­ще-то /etc – со­всем не под­хо­дя­щее ме­сто для лог-фай­лов, и вы об­на­ру­жи­те, что /etc/httpd/logs – на са­мом де­ле сим­во­ли­че­­ская ссыл­ка на /var/log/httpd, это бо­лее об­ще­при­ня­тый ка­та­лог для лог-фай­лов. В стро­ке 2 ука­зан но­мер про­слу­ши­вае­мо­го пор­та. Ра­зу­ме­ет­ся, это порт 80 – стан­дарт­ный порт HTTP. В стро­ках 3 и 4 за­да­ют­ся поль­зо­ва­тель и груп­па, от имени ко­то­рых бу­дет за­пускать­ся сер­вер (учет­ная запись “apache” бы­ла до­бав­ле­на во вре­мя уста­нов­ки па­ке­та). На са­мом де­ле ме­ханизм бо­лее слож­ный: при за­пуске сер­ве­ра пер­во­на­чаль­ный (ро­ди­тель­ский) про­цесс вы­пол­ня­ет­ся от имени root, что­бы мож­но бы­ло под­клю­чить­ся к пор­ту 80 (в UNIX и Linux пор­ты с но­ме­ром мень­ше 1024 яв­ля­ют­ся «при­ви­ле­ги­ро­ван­ны­ми»: под­клю­чать­ся к ним мо­жет толь­ко про­цесс, за­пу­щен­ный от имени root). За­тем ро­ди­тель­ский про­цесс соз­да­ет несколь­ко до­черних про­цес­сов для об­ра­бот­ки за­про­сов, и эти про­цес­сы опуска­ют свой уро­вень при­ви­ле­гий до обыч­но­го поль­зо­ва­те­ля, за­дан­но­го в ди­рек­ти­вах “User” и “Group”. Спе­циа­ли­сты по безо­пас­но­сти на­зва­ли бы это «прин­ци­пом наи­мень­ших при­ви­ле­гий».

В стро­ках 5 и 6 по­ка­за­ны только две из боль­шо­го ко­ли­че­­ст­ва строк, в ко­то­рых за­гру­жа­ют­ся мо­ду­ли Apache. Ис­пол­няе­мый файл apache со­дер­жит лишь минималь­ный на­бор мо­ду­лей (оп­ре­де­лен­ный пар­ня­ми в CentOS при его сбор­ке), и боль­шая часть функ­цио­на­льности Apache обес­пе­чи­ва­ет­ся эти­ми ди­на­ми­че­­ски за­гру­жае­мы­ми мо­ду­ля­ми. Стро­ка 7 – при­мер то­го, что я обыч­но на­зы­ваю здесь «бо­лез­нью .d»; она ве­лит сер­ве­ру так­же про­чи­тать все фай­лы на­строй­ки в /etc/httpd/conf.d. Поз­же мы рас­смот­рим при­мер ис­поль­зо­вания этой воз­мож­но­сти. В стро­ке 8 оп­ре­де­ля­ет­ся уро­вень жур­на­ли­ро­вания – в жур­нал за­пи­сы­ва­ют­ся со­об­щения толь­ко уров­ня “warn [пре­ду­пре­ж­дения]” и вы­ше. В стро­ке 9 за­да­ет­ся ка­та­лог верхнего уров­ня, со­дер­жа­щий об­слу­жи­ва­мый кон­тент. На­конец, стро­ки с 10 по 17 свя­за­ны с на­строй­кой про­из­во­ди­тель­но­сти. Что­бы га­ран­ти­ро­вать немед­лен­ный от­вет при по­сту­п­лении за­про­са, Apache ста­ра­ет­ся под­дер­жи­вать пул за­пас­ных про­цес­сов, го­то­вых к об­ра­бот­ке но­вых за­про­сов. Эти па­ра­мет­ры управ­ля­ют раз­ме­ром пу­ла. Об­ра­ти­те внимание на роб­кую по­пыт­ку восполь­зо­вать­ся син­так­си­сом XML с от­кры­ваю­щим и за­кры­ваю­щим тэ­га­ми. Дру­гие при­ме­ры этих ди­рек­тив кон­тейнера мы уви­дим поз­же.

Это­го фай­ла на­строй­ки вполне доста­точ­но для на­ших те­ку­щих по­треб­но­стей, по­это­му за­пустим сер­вис:

  1. service httpd start

Сде­ла­ем так, что­бы сер­вер за­пус­кал­ся при за­груз­ке сис­те­мы:

  1. chkconfig httpd on

Про­сто что­бы убе­дить­ся, что это ра­бо­та­ет, соз­да­дим немно­го кон­тен­та в ви­де фай­ла /var/www/html/greet.html со сле­дую­щим со­дер­жи­мым:

Hello World!

Да, стро­го го­во­ря, здесь нуж­но бы­ло ука­зать пра­виль­ные HTML-тэ­ги: <head>, <body> и дру­гие, но брау­зер пре­крас­но спра­вит­ся с вы­во­дом этой про­стой стро­ки тек­ста. Соз­дав этот файл, от­крой­те брау­зер и пе­рей­ди­те на http://localhost/greet.html –долж­на от­крыть­ся страница «Hello World!». Ес­ли ее нет, во врез­ке есть несколь­ко со­ве­тов по уст­ранению оши­бок.

До­ку­мен­та­ция

Ес­ли от­крыть ад­рес httpd://localhost/manual, вы долж­ны пе­рей­ти на «до­маш­нюю страницу» он­лайн-до­ку­мен­та­ции. На ней вы най­де­те на­бор ру­ко­водств и ин­ст­рук­ций с мас­сой пе­ре­кре­ст­ных ссы­лок, а так­же под­роб­ный спи­сок всех ди­рек­тив кон­фи­гу­ра­ции.

От­ку­да все это бе­рет­ся? Если вы вы­ве­дете спи­сок фай­лов па­ке­та httpd-manual –

  1. rpm -ql httpd-manual

то уви­ди­те, что па­кет раз­ме­ща­ет мно­же­ст­во сво­их фай­лов в ка­та­ло­ге /var/www/manual. На пер­вый взгляд это непра­виль­но, по­то­му что этот ка­та­лог на­хо­дит­ся не в корневом ка­та­ло­ге сер­ве­ра DocumentRoot (/var/www/html) и, ве­ро­ят­но, недосту­пен. Что же про­ис­хо­дит? Ока­зы­ва­ет­ся, что па­кет httpd-manual до­ба­вил и файл на­строй­ки /etc/httpd/conf.d/manual.conf. В нем за­да­ет­ся али­ас:

Alias /manual /var/www/manual

(На са­мом де­ле эта стро­ка сложнее. Она хит­ро раз­би­ра­ет ре­гу­ляр­ное вы­ра­жение с тэ­га­ми, что­бы вы­б­ра­лась до­ку­мен­та­ция на нуж­ном язы­ке. Но и уп­ро­щен­ный ва­ри­ант, при­ве­ден­ный вы­ше, бу­дет ра­бо­тать от­лич­но.) Имен­но этот али­ас свя­зы­ва­ет ад­рес вро­де http:// localhost/manual/bind.html с фай­лом /var/www/manual/bind.html.

Мож­но мне на бу­к­ву “P”?

Итак, часть «A» сте­ка LAMP уста­нов­ле­на и ра­бо­та­ет. По­смот­рим на “P”. Все необ­хо­ди­мое опять же есть в ре­по­зи­то­ри­ях CentOS, по­это­му уста­нов­ка про­ста:

  1. yum install php

На­ша конеч­ная цель – на­пи­сать на PHP сер­вер­ную часть на­ше­го web-при­ло­жения, но скрип­ты на PHP мож­но за­пускать и от­дель­но, как скрип­ты на Perl или скрип­ты Bash. Начнем с “Hello world” в ви­де от­дель­но­го скрип­та:

  1. !/usr/bin/php

<?php echo “Hello World\n”; ?>

Пер­вая стро­ка – обыч­ная «шап­ка», ко­то­рая со­об­ща­ет Linux, ка­кой ин­тер­пре­та­тор ис­поль­зо­вать. Уч­ти­те: что­бы ин­тер­пре­та­тор вы­полнил код во вто­рой стро­ке, его нуж­но за­клю­чить в тэ­ги <?php ...?>. Все, что вне этих тэ­гов, бу­дет про­сто ко­пи­ро­вать­ся в стан­дарт­ный вы­вод. По­это­му соз­дай­те файл greet.php с ука­зан­ным со­дер­жи­мым, за­тем сде­лай­те его ис­пол­няе­мым и за­пусти­те:

$ chmod u+x greet.php

$ ./greet.php

Па­кет php, ко­то­рый мы толь­ко что уста­но­ви­ли, со­дер­жит файл /etc/httpd/conf.d/php.conf. Помните, как я го­во­рил, что httpd стра­да­ет бо­лез­нью «точ­ка-d»? У нее есть и пре­му­ще­ст­­во: при уста­нов­ке па­ке­та он мо­жет про­сто до­ба­вить файл на­строй­ки в ка­та­лог conf.d, и сер­вер под­хва­тит его. Ра­зу­ме­ет­ся, что­бы из­менения всту­пи­ли в си­лу, нуж­но пе­ре­за­пустить сер­вис:

  1. service httpd restart

В этом фай­ле php.conf на­страи­ва­ет­ся ис­поль­зо­вание мо­ду­ля php в Apache; он вклю­ча­ет ди­рек­ти­ву LoadModule для уста­нов­ки мо­ду­ля apache-mod_php5 и ди­рек­ти­ву AddHandler, ко­то­рая свя­зы­ва­ет об­ра­бот­чик скрип­тов PHP с фай­ла­ми .php. Те­перь наш сайт мо­жет об­ра­ба­ты­вать ди­на­ми­че­­ски генери­руе­мый кон­тент с по­мо­щью PHP. Вот при­мер, по­хо­жий на сайт www.whattimeisit.com, о ко­то­ром я го­во­рил ранее. В нем ис­поль­зу­ет­ся бо­лее пол­ный на­бор тэ­гов HTML:

<html>

<head>

<title> What time is it?</title>

</head>

<body>

The time is:

<?php

date_default_timezone_set(“UTC”);

echo date(“F j, Y, g:i a”);

?>

</body>

</html>

Об­ра­ти­те внимание, что, как и в от­дель­ном скрип­те на PHP, мы долж­ны за­клю­чить код PHP в тэ­ги <?php ...?>, что­бы он был об­ра­бо­тан. Для про­вер­ки соз­дай­те файл /var/www/html/time.php с ука­зан­ным со­дер­жи­мым и от­крой­те в брау­зе­ре ад­рес http:// localhost/time.php. За­тем до­бавь­те код

phpinfo();

в тэ­гах php. Об­но­ви­те страницу в брау­зе­ре, и вы долж­ны уви­деть мно­же­ст­во ак­ку­рат­но оформ­лен­ных па­ра­мет­ров, от­но­ся­щих­ся к сбор­ке PHP и ра­бо­чей сре­де.

Ес­ли вы и вправ­ду сле­ди­те за мо­им рас­ска­зом (а мне хо­те­лось бы ду­мать, что та­кие лю­ди есть), вы мо­же­те по­ду­мать, что мы не достиг­ли поч­ти ниче­го. Но по су­ти мы достиг­ли мно­го­го. Мы убе­ди­лись, что и сер­вер Apache, и ин­тер­пре­та­тор PHP ра­бо­та­ют, и что с по­мо­щью PHP мы мо­жем генери­ро­вать ди­на­ми­че­­ское со­дер­жи­мое.

Сре­да раз­ра­бот­ки

Это Linux, и по­это­му для раз­ра­бот­ки ди­на­ми­че­­ских сай­тов вам ну­жен толь­ко тек­сто­вый ре­дак­тор, на­при­мер, ста­рый до­б­рый Vi. Но су­ще­ст­ву­ют и от­кры­тые сре­ды раз­ра­бот­ки, ко­то­рые по­вы­сят ва­шу про­дук­тив­ность. Од­на из них – Eclipse, сре­да раз­ра­бот­ки, под­дер­жи­вающая мно­же­ст­во язы­ков за счет боль­шо­го на­бо­ра мо­ду­лей рас­ши­рения. Вот как ее уста­но­вить:

» От­крой­те www.eclipse.org.

» Щелкните по ссыл­ке “Download Eclipse [За­гру­зить Eclipse]” и вы­бе­ри­те Eclipse Classic. Ес­ли у вас 32-бит­ная сис­те­ма, убе­ди­тесь, что вы вы­бра­ли 32-бит­ную вер­сию.

» За­гру­зи­те и со­храните файл – его на­звание бу­дет напоминать та­кое: eclipse-SDK-4.2.1-linux-gtk.tar.gz.

» От­крой­те тер­ми­нал, пе­рей­ди­те в свой до­машний ка­та­лог и рас­па­куй­те за­гру­жен­ный ар­хив, при­мер­но так:

$ cd

$ tar xvf ~/Downloads/eclipse-SDK*.tar.gz

Те­перь мож­но за­пус­тить eclipse с ко­манд­ной стро­ки:

$ cd eclipse

$ ./eclipse

Мож­но до­ба­вить икон­ку за­пуска eclipse на ра­бо­чий стол или на верх­нюю панель. А мож­но уста­но­вить мо­дуль PHP для eclipse:

» В ме­ню Help [Справ­ка] eclipse вы­бе­ри­те Install New Software [Ус­та­нов­ка но­вых про­грамм].

» В окне Available Software [Доступ­ные про­грам­мы] вы­бе­ри­те juno из вы­па­даю­ще­го спи­ска Work with: [Ра­бо­та­ет с:].

» От­кройте ка­те­го­рию Programming Languages [Язы­ки про­грам­ми­ро­вания] и вы­бе­ри­те PHP Development Tools [Сред­ст­ва раз­ра­бот­ки PHP].

» При­ми­те ли­цен­зи­он­ное со­гла­шение и на­жми­те Finish [Го­то­во]

Че­рез ме­сяц мы по­гру­зим­ся в тай­ны HTML и на­пи­шем настоящее web-при­ло­жение для об­ра­бо­тки дан­ных, отправ­лен­ных с фор­мы. Увидимся! |

> Соз­да­ние ти­пич­ной трех­уров­не­вой web-ар­хи­тек­ту­ры с по­мо­щью сте­ка LAMP.

Персональные инструменты
купить
подписаться
Яндекс.Метрика