Установка CGI скриптов - не вляпайся!
Установка 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 будет выглядеть обычно,
т.е. примерно так: //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 //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, скачать можно здесь:
//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. //webscript.ru - мне действительно
нравится этот каталог! На первый взгляд, скриптов тут не очень-то и много (всего
пару сотен), но должен признать, что тут подобраны наиболее интересные и популярные
скрипты, существующие в Сети. Да и сайт русскоязычный, что для многих весьма
важно.
2. //hotscripts.com - а вот это мировой
гигант, собравший не только perl cgi скрипты, но и скрипты, написанные на языках
C/C++, Python, есть там и PHP скрипты, и Java, и DHTML… Вам же следует пройти
в раздел Perl (большинство скриптов написано на этом языке) //hotscripts.com/perl
, после чего вы сможете лицезреть несколько тысяч скриптов! Там перечислены
не только бесплатные, но и платные скрипты (но об этом там написано, думаю,
что слово "Free!" никто не пропустит).
Есть и еще множество каталогов скриптов, но, мне кажется, они все уступают
HotScripts.com или WebScript.ru (если говорить о русскоязычных ресурсах), как
по подборке скриптов, так и по удобству пользования сайтом. Среди достойных
внимания назову еще :
The CGI Resource Index (//www.cgi-resources.com)
- весьма нравился мне, пока я не нашел Hotscripts.com
CGI City ( //www.icthus.net/CGI-City/
) - не самая удобная навигация, но попадаются довольно интересные скрипты.
FreePerlCode ( //www.freeperlcode.com/guide/
) - Как и следует из названия, здесь вы можете получить CGI PERL скрипты - они
бесплатные, их можно скачать.
КОНЕЦ!
Green Kakadu, прямая трансляция с сайта Гнездо: каталог для
вебмастеров [//kakadu.al.ru].
P.S. Все испробовал на себе - при проведении эксперимента пострадал только один
Kakadu, т.е. Я! Исход, к счастью, не смертельный. Пишите письма! green_kakadu@mailru.com
|