Установка CGI
скриптов - не вляпайся!
Источник: http://kakadu.al.ru
Эту статью я написал, т.к.
почувствовал необходимость в этом: сам я с 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