>>статьи

Автор - Green Kakadu

Установка CGI скриптов - не вляпайся!

Эту статью я написал, т.к. почувствовал необходимость в этом: сам я с cgi скриптами намучался, и многие читатели меня спрашивали. Скажу сразу, что я вовсе не профессионал (как думают некоторые мои читатели), а простой Вася Пупкин, который вознамерился покорить Интернет. После некоторых потуг, у меня что-то стало получаться (далеко не все!), я заметил, что с проблемой "первого знакомства" со скриптами (и не только cgi) постоянно сталкивается множество людей - меня постоянно просят "помочь со скриптами" … И вот я решил изложить основные моменты по их установке, ничего особенного здесь нет, все это вы сможете найти и в инструкции, прилагаемой к каждому скрипту, но я попытался написать это нормальным человеческим языком...

Когда я сказал, что я не профи, то соврал! Есть у меня одно умение, в котором я признанный профессионал - это совершать все возможные и самые наиглупейшие ошибки!!! Поковыпявшись в CGI скриптах всего три недельки, я умудрился совершить почти все ошибки при их усановке: все что можно сделать неправильно - я сделал! Поэтому, чтоб уберечь вас от неверных действий, я изложу вам основные моменты по установке CGI скриптов. Не пугайтесь, это не так сложно как кажется - даже у меня что-то получилось, а я сам услышал о них недавно! Приступим....

Зачем нам нужны эти скрипты?

Форум, чат, доска объявлений, голосование, гостевуха, каталог, топ, магазин и аукцион - все это можно сделать с помощью CGI. Возникает вопрос, что такое скрипт? Грубо говоря, скрипт - это программка, которая запускается не на вашем компьютере, а на сервере. В результате работы скрипта, сайт превращается из существа пассивного, в существо активное, у вас появляется больше возможностей как для общения с посетителями (форумы, чаты, mail формы, опросы, голосования, рассылки), так и в управлении сайтом (организация оперативно обновляемых новостей, баннерокрутилка, публикация статей через веб и т.д.) Кроме того, некоторые скрипты могут стать основой вашего сайта (например, каталог, топ-рейтинг, служба поздравительных открыток, поисковая машина…) - у вас уже загорелись глаза? То-то же, скрипты открывают новые горизонты, у кого-то появляются нездоровые желания создать свой Yahoo!, а кто-то просто хочет сделать на сайте гостевую книгу.

Нужно ли для этого знать языки программирования?

Э....я например только в школе Basic проходил - вопросы есть? Конечно, если что-то знаешь, то хорошо, но эти советы не для знающих ;-) Вот что желательно, так это понимать хоть примерно (процентов на 60) надписи на английском - существует огромное количество бесплатных скриптов (см. ссылки в конце статьи), почти все они имеют подробные инструкции по установке, кроме того, в самом коде присутствуют подробные комментарии. Стоит добавить, что наиболее распространенный язык для написания CGI скриптов - это Perl, но не надо думать, что "Говорим CGI - подразумеваем Perl!" Совсем нет! Perl cgi скрипты просто более популярны (возможно из-за того, что Perl - язык программирования под Unix, а большинство серверов в Сети работает под юниксоидными системами, и Perl к тому же, не самый сложный в освоении язык, но при этом предоставляющий мощные и довольно простые в использовании возможности при работе с текстом, строковыми данными и т.д.). Есть CGI скрипты и на C/C++, но это уже для windows'ких серверов, а там более популярна технология ASP, а сейчас речь не об этом…

Где ставить cgi скрипты?

На своем сервере, надо чтобы он поддерживал CGI, кроме того, узнайте полный путь к папке cgi-bin (что-то типа "home/home-webservis/kakadu/public_html/cgi-bin" не путайте это с URL, в приведенном случае, URL папки CGI будет выглядеть обычно, т.е. примерно так: http://kakadu.al.ru/cgi-bin) - обо всем этом вы сможете прочитать в FAQ вашего хостинга, посмотрите путь к почтовой папке (например /usr/sbin/sendmail), и ГЛАВНОЕ, узнайте путь к Perl, по умолчанию считается #!/usr/bin/perl, но могут быть вариации… "

Сheck that the Path to perl is correct. Links defaults with #!/usr/local/bin/perl".

Многие прекращают знакомство со скриптами после подобной фразы. Вас просят убедиться, что правильно прописан путь к perl (а этот путь вы посмотрели - в пред.пункте). Теперь, чем вскрыть скрипт (*.cgi, *.pl)? Можно сделать это в текстовом редакторе, но это не лучший способ для новичков. Я делаю это с помощью PerlBuilder http://www.solutionsoft.com/ (для его функционирования вам придется скачать ActivePerl, его предлагают прям там). Чем он хорош (т.е. Perl Builder)? Проверка синтаксиса, вскрывает все: *.cgi, *.pl, *.html, *.cfg, *.def, *.php, *.html и т.д. Вы сможете проверить работоспособность скрипта прямо у себя дома на компьютере! Правда, особо не обольщайтесь - топ дома вы не запустите, но добьетесь вывода кода html - значит работает!

Итак, открываете файл, там в самом верху строка: #!/usr/bin/perl - исправляете ее на нужную! И все! Если, что-то надо прописать в самом скрипте (опции, например, или пути к папкам(!) - весьма часто встречается) - то внимательно следуйте инструкциям! Если что-то добавляете в код, то перед этим делайте резервную копию - а вдруг? Мы то не программисты!

"...Upload everything in cgi-bin in ASCII mode to a directory on your server that can run cgi..."

Теперь надо создать на сервере необходимые директории и загрузить туда файлы - четко следуйте инструкциям! Загружать надо в ASCII режиме! Что это? Есть два режима: ASCII и Binary - обычно для закачки/перекачки используется второй, но со *.cgi, *.pl файлами это не пройдет: 500 Server Errors - эта ошибка чаще всего появляется из-за неправильного режима загрузки! Выбор режима загрузки производится с помощью вашего ftp клиента (у меня Сutftp, скачать можно здесь: http://www.cuteftp.com/products/cuteftp/) - есть там нечто вроде Transfer Type - это оно самое, часто стоит на автомате (Auto), но иногда выбирает не тот режим (убедился лично) - лучше поставьте ASCII и не мучайтесь!

Set permissions:

chmod 755 (-rwxr-xr-x) on all .cgi files.
chmod 666 (-rw-rw-rw-) on all files in the data directory.
chmod 777 (drwxrwxrwx) on the public directory

Тоже многие тут спотыкаются - а что я вытворял!!! Бедный сервер наверное свихнулся - о существовании таких прав доступа, что я ставил, он и не подозревал! Итак, теперь надо установить права доступа: 755 - наивысший приоритет, всем файлам *.cgi, *.pl надо установить его. В инструкциях все пишут - следуйте им! Если есть сомнения, то можно действовать по такому принципу - всем файлам, которые для массового использования ставим 777 , всем исполнительным (*.cgi, *.pl) -755, а тем, которые непонятно какие - 666. Если скрипт не запускается и выдает ошибку (500 Server Errors - очень часто ;-) ), то возможно вы не правильно расставили права, проверьте все (*.cgi, *.pl) в первую очередь! Как эти права расставлять? Опять с помощью FTP клиента: Change File Attributes - и пишете в появившемся окошке необходимые права! Теперь дополнение одного из моих читателей:

................

Было бы неплохо не просто порекомендовать какие права доступа ставить (и для каких файлов), а подробно объяснить, что обозначает каждая буковка в записи "drwxrwxrwx" и цифра в команде "CHMOD" . Это позволило бы новичкам, прочитавшим статью, сэкономить кучу времени и нервов (GK: как он прав!).

Так вот, права доступа определяют: кто и что он может сделать с файлами/папками, размещенными на сервере.

"Кто" подразделяются на три вида:

  • "Owner" - владелец файла/папки
  • "Group" - группа, к которой относится владелец
  • "Everyone" - все остальные пользователи

"Что" подразумевает: какие действия с файлами/папками могут производить Пользователи, Группа или Владелец, а именно:

  • "Read" - чтение
  • "Write" - запись
  • "Execute/Search" - выполнение (для файлов) и поиск (для каталогов).

Число, следующее после команды "chmod xyz имя_файла/папки" расшифровывается следующим образом:
- первая цифра (x) - это права владельца
- вторая (y) - права группы
- третья (z) - права доступа для остальных пользователей.
Каждая цифра - состоит из суммы чисел, которыми эти права обозначаются:

  • Чтение - число 4
  • Запись - число 2
  • Выполнение/поиск - число 1

То есть, если нужно предоставить владельцу право читать, записывать и выполнять файл, то число x получается из суммы 4+2+1 = 7. Если нужно установить права доступа только для чтения и выполнения, то 4+0+1 = 5.

Рассмотрим конкретный пример: что означает это преславутое число 755?
Первая цифра - 7 - право доступа для Владельца (4+2+1) чтение+запись+выполнение.
Вторая цифра - 5 - право доступа для Группы (4+0+1) чтение+выполнение.
Третья цифра - 5 - право доступа для остальных Пользователей (4+0+1) чтение+выполнение. Данное число (755) рекомендуется устанавливать для CGI скриптов, а остальным файлам - 660 (GK: подразумеваются только скриптовые файлы, а не все остальные! Ваши публичные документы имеют доступ 777 - то есть самые широкие права). Также, если есть файлы, в которых хранятся данные "не для чужих глаз" (а именно: шаблоны, файлы регистрации и т.д), то для них я бы порекомендовал установить права доступа - 600 (GK: а часто им ставят 666).

Теперь рассмотрим, что означают буковки "drwxrwxrwx" при выдаче листинга файлов в каталоге. Тут все очень просто:
d - указывает на то, что это папка. Если стоит "-" - значит это файл.
rwx - права доступа для владельца - "r"ead, "w"rite и e"x"ecute, если вместо какой-либо буквы стоит "-", то это означает, что данное право отсутствует.
Cледующая троица "rwx" аналогична предыдущей, только она определяет права доступа для группы.
И последняя троица "rwx" также определяет права доступа для остальных пользователей. Следовательно, права доступа к файлу 755 выглядят так: "-rwxr-x-r-x"

. .........

Я могу лишь выразить благодарность!

А что дальше?

По идее, если все вы сделали правильно, то скрипт установлен - его можно запускать и, возможно, настроить какие-нибудь опции, но все это происходит уже в привычной форме, через окно броузера. Очень вероятно, что скрипт не запустится и выдаст ошибку - проверьте, правильно ли вы все сделали! Все мои ошибки, возникали из-за моей невнимательности или когда я, изображая Билл Гейтса, пытался маааленько изменить код - а Perl то я не знаю ;-)
В общем, что-то я поставил, кое с чем еще извращаюсь - зайдите ко мне на сайт, посмотрите!

Где взять скрипты?

Надеюсь, что все любители отвечать на этот вопрос примерно так: "Потратить часок-другой и написать самому!" уже давно прекратили чтение этой статьи, а оставшиеся, как и я, довольно смутно представляют себя в роли программиста… Не унывайте! Я уже говорил в начале статьи, что существует множество бесплатных скриптов и я не соврал! Более того, таких скриптов очень много, конечно они довольно часто уступают по возможностям скриптам платным, но, к счастью, из-за большого их количества часто удается подобрать то, что нужно. Вот несколько наиболее интересных, на мой взгляд, ссылок на скриптовые ресурсы:

1. http://webscript.ru - мне действительно нравится этот каталог! На первый взгляд, скриптов тут не очень-то и много (всего пару сотен), но должен признать, что тут подобраны наиболее интересные и популярные скрипты, существующие в Сети. Да и сайт русскоязычный, что для многих весьма важно.
2. http://hotscripts.com - а вот это мировой гигант, собравший не только perl cgi скрипты, но и скрипты, написанные на языках C/C++, Python, есть там и PHP скрипты, и Java, и DHTML… Вам же следует пройти в раздел Perl (большинство скриптов написано на этом языке) http://hotscripts.com/perl , после чего вы сможете лицезреть несколько тысяч скриптов! Там перечислены не только бесплатные, но и платные скрипты (но об этом там написано, думаю, что слово "Free!" никто не пропустит). Все скрипты довольно удачно разбиты по категориям, и там нетрудно найти то, что надо. Всем рекомендую!

Есть и еще множество каталогов скриптов, но, мне кажется, они все уступают HotScripts.com или WebScript.ru (если говорить о русскоязычных ресурсах), как по подборке скриптов, так и по удобству пользования сайтом. Среди достойных внимания назову еще :

The CGI Resource Index (http://www.cgi-resources.com) - весьма нравился мне, пока я не нашел Hotscripts.com
CGI City ( http://www.icthus.net/CGI-City/ ) - не самая удобная навигация, но попадаются довольно интересные скрипты.
FreePerlCode ( http://www.freeperlcode.com/guide/ ) - Как и следует из названия, здесь вы можете получить CGI PERL скрипты - они бесплатные, их можно скачать.

КОНЕЦ!

Green Kakadu, прямая трансляция с сайта Гнездо: каталог для вебмастеров [http://kakadu.al.ru].


P.S. Все испробовал на себе - при проведении эксперимента пострадал только один Kakadu, т.е. Я! Исход, к счастью, не смертельный. Пишите письма!

 

>>статьи

[ГЛАВНАЯ СТРАНИЦА]