Як можна змусити мікро екземпляр EC2 обслуговувати CGI-скрипти з lighthttpd? Наприклад, Python CGI?
Ну, це пройшло пів дня, але я отримав cgi Python, який працює на безкоштовній мікроаппаратурі Amazon AWS EC2, використовуючи сервер lighttpd. Я думаю, що це допоможе моїм колегам-нобі, щоб поставити всі кроки на одне місце. Озброївшись простими кроками нижче, для налаштування речей знадобиться лише 15 хвилин!
Моє запитання для більш досвідчених користувачів, які читають це: Чи є якісь вади безпеки в тому, що я робив? (Див. Дозволи на файли та каталоги.)
Крок 1: Запустіть свій екземпляр EC2 і введіть його.
[Очевидно, вам потрібно буде зареєструватися в Amazon EC2 і зберегти свої ключові пари у файлі * .pem. Я не перейду над цим, як Amazon каже вам, як це зробити.]
Увійдіть у свій обліковий запис AWS та запустіть свій екземпляр EC2. В Інтернеті є навчальні посібники щодо цього. Зауважте, що розмір екземплярів за замовчуванням, який Amazon представляє вам, "невеликий" Це не "мікро", і це коштуватиме вам грошей. Не забудьте вручну вибрати "мікро". (Мікро екземпляри безкоштовні лише перший рік ...)
Знайдіть загальнодоступний код DNS для вашого запущеного екземпляра. Для цього натисніть на екземпляр у верхній панелі приладової панелі, і ви зрештою побачите поле "Загальнодоступний DNS", заповнене на нижній панелі. (Можливо, вам доведеться трохи скрипнути.) Загальнодоступний DNS виглядає приблизно так:
ec2-174-129-110-23.compute-1.amazonaws.com
Запустіть консольну програму Unix. (У Max OS X це називається Terminal, і він знаходиться в папці Applications -> Utilities.)
cd до каталогу вашої робочої системи з файлом * .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, вам знадобиться кореневий доступ у вашому екземплярі EC2. Проблема полягає в тому, що Amazon не дозволить вам входити як root. (Принаймні не прямо, принаймні.) Але є рішення. Введіть цю команду:
sudo /bin/bash
Символ підказки системи зміниться з $ в #. Ми не виходимо з "судо" до останнього кроку у всьому цьому процесі.
Встановіть додаток 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.
Поверніться до консольної програми, cd до каталогу конфігурації для lighttpd:
cd /etc/lighttpd
Щоб увімкнути CGI, потрібно відмітити один рядок у файлі <module.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, що я хотів щось повернути.