Как сделать так, чтобы микроэкземпляр EC2 обслуживал CGI-скрипты из lighthttpd? Например Python CGI?
Ну, это заняло полдня, но я запустил Python cgi на бесплатном микроэкземпляре Amazon AWS EC2, используя сервер lighttpd. Я думаю, что это поможет моим собратьям собрать все шаги в одном месте. Вооружившись простыми шагами ниже, вам потребуется всего 15 минут, чтобы все настроить!
Мой вопрос к более опытным пользователям, читающим это: есть ли недостатки в том, что я сделал? (См. Права доступа к файлам и каталогам.)
Шаг 1: Запустите свой экземпляр EC2 и вставьте в него ssh.
Очевидно, что вам нужно зарегистрироваться на Amazon EC2 и сохранить пары ключей в файле * .pem. Я не буду это обсуждать, так как Amazon говорит вам, как это сделать.]
Войдите в свою учетную запись AWS и запустите свой экземпляр EC2. В Интернете есть учебники по этому вопросу. Обратите внимание, что размер экземпляра по умолчанию, который вам представляет Amazon, «маленький». Это не «микро» и поэтому это будет стоить вам денег. Обязательно вручную выберите «микро». (Микро экземпляры бесплатны только на первый год ...)
Найдите общедоступный код DNS для вашего работающего экземпляра. Чтобы сделать это, нажмите на экземпляр в верхней панели панели инструментов, и вы в конце концов увидите поле «Общедоступный DNS», заполненное в нижней панели. (Возможно, вам придется немного поковыряться.) Public DNS выглядит примерно так:
ec2-174-129-110-23.compute-1.amazonaws.com
Запустите консольную программу Unix. (В Max OS X он называется Terminal и находится в папке Applications -> Utilities.)
Перейдите в каталог на настольном компьютере, в котором находится файл * .pem, содержащий ваши пары ключей AWS.
SSH к вашему экземпляру EC2, используя такую команду:
ssh -i <<your *.pem filename>> ec2-user@<< Public DNS address >>
Итак, для меня это было:
ssh -i amzn_ec2_keypair.pem ec2-user@ec2-174-129-110-23.compute-1.amazonaws.com
Ваш экземпляр EC2 должен впустить вас.
Шаг 2: Загрузите lighttpd в ваш экземпляр EC2.
Чтобы установить lighttpd, вам понадобится root-доступ к вашему экземпляру EC2. Проблема в том, что Amazon не позволит вам войти в систему как root. (По крайней мере, не просто.) Но есть обходной путь. Введите эту команду:
sudo /bin/bash
Системный символ приглашения изменится с $ на #. Мы не выйдем из "sudo" до самого последнего шага во всем этом процессе.
Установите приложение lighttpd (версия 1.4.28-1.3.amzn1 для меня):
yum install lighttpd
Установите библиотеки FastCGI для lighttpd (не нужно, но почему бы и нет?):
yum install lighttpd-fastcgi
Проверьте, что ваш сервер работает:
/etc/init.d/lighttpd start
Шаг 3: Пусть внешний мир увидит ваш сервер.
Если вы сейчас попытаетесь подключиться к вашему серверу из браузера на рабочем столе, произойдет сбой. Причина: по умолчанию Amazon AWS не открывает никаких портов для вашего экземпляра EC2. Итак, вы должны открыть порты вручную.
Перейдите на панель управления EC2 в браузере на рабочем столе. Нажмите «Группы безопасности» на левой панели. В верхней правой панели появится одна или несколько групп безопасности. Выберите тот, который был назначен вашему экземпляру EC2 при запуске вашего экземпляра.
В нижней правой панели появится таблица «Разрешенные подключения». Всплывающее меню позволит вам выбрать «HTTP» в качестве метода подключения.
Другие значения в этой строке таблицы должны быть: tcp, 80, 80, 0.0.0.0/0
Теперь поразите сервер вашего экземпляра EC2 с рабочего стола в вашем браузере. Используйте публичный DNS-адрес, который вы использовали ранее для входа в SSH. Вы должны увидеть общую веб-страницу lighttpd. Если нет, я не могу вам помочь, потому что я такой нуб. :-(
Шаг 4: Настройте lighttpd для обслуживания CGI.
Вернитесь в консольную программу, перейдите в каталог конфигурации для lighttpd:
cd /etc/lighttpd
Чтобы включить CGI, вы должны раскомментировать одну строку в файле <modules.conf>. (Я мог бы включить быструю CGI, но детские шаги лучше всего!) Вы можете сделать это с помощью редактора «ed» следующим образом:
ed modules.conf
/include "conf.d\/cgi.conf"/
s/#//
w
q
Создайте каталог, в котором будут жить CGI-программы. (Файл /etc/lighttpd/lighttpd.conf определяет, где это будет.) Мы создадим наш каталог в расположении по умолчанию, поэтому нам не нужно редактировать файлы конфигурации:
cd /var/www/lighttpd
mkdir cgi-bin
chmod 755 cgi-bin
Почти готово! Конечно, вам нужно поместить тестовую CGI-программу в каталог cgi-bin. Вот один из них:
cd cgi-bin
ed
a
#!/usr/bin/python
print "Content-type: text/html\n\n"
print "<html><body>Hello, pyworld.</body></html>"
.
w hellopyworld.py
q
chmod 655 hellopyworld.py
Перезагрузите сервер lighttpd:
/etc/init.d/lighttpd restart
Протестируйте свою программу CGI. В браузере вашего рабочего стола нажмите этот URL, заменив публичный DNS-адрес вашего экземпляра EC2:
http://<<Public DNS>>/cgi-bin/hellopyworld.py
Для меня это было:
http://ec2-174-129-110-23.compute-1.amazonaws.com/cgi-bin/hellopyworld.py
Шаг 5: Вот и все! Уберись и поблагодари!
Чтобы выйти из команды «sudo / bin / bash», указанной ранее, введите:
exit
Благодарности: Огромное спасибо:
wiki.vpslink.com/Install_and_Configure_lighttpd
www.cyberciti.biz/tips/lighttpd-howto-setup-cgi-bin-access-for-perl-programs.html
aws.typepad.com/aws/2010/06/building-three-tier-architectures-with-security-groups.html
Удачи, амигос! Я прошу прощения за нетрадиционную природу этого «вопроса», но я получил такую большую помощь от Stackoverflow, что мне не терпелось что-то вернуть.