Я пытаюсь заставить веб-сервер Yaws работать в облачном сервисе (Amazon AWS). Я скомпилировал и установил локальную копию на сервере. Моя проблема в том, что я не могу запустить Yaws при работе на порте 8000 или 80.
У меня в yaws.conf есть следующая конфигурация:
port = 8000
listen = 0.0.0.0
docroot = /home/ubuntu/yaws/www/test
dir_listings = true
Это дает следующий успешный запуск / результат:
Eshell V5.8.5 (abort with ^G)
=INFO REPORT==== 16-Sep-2012::17:21:06 === Yaws: Using config file /home/ubuntu/yaws.conf
=INFO REPORT==== 16-Sep-2012::17:21:06 === Ctlfile : /home/ubuntu/.yaws/yaws/default/CTL
=INFO REPORT==== 16-Sep-2012::17:21:06 === Yaws: Listening to 0.0.0.0:8000 for <3> virtual servers: - http://domU-12-31-39-0B-1A-F6:8000 under /home/ubuntu/yaws/www/trial -
=INFO REPORT==== 16-Sep-2012::17:21:06 === Yaws: Listening to 0.0.0.0:4443 for <1> virtual servers: -
Когда я пытаюсь получить доступ к URL-адресу (http://ec2-72-44-47-235.compute-1.amazonaws.com), он никогда не подключается. Я пробовал использовать paping, чтобы проверить, открыт ли порт 80 или 8000 (http://code.google.com/p/paping/), и я получаю сообщение об ошибке «Хост не может быть разрешен», так что, очевидно, что-то не работает.
Я также пробовал установить yaws.conf так, чтобы он был на порту 80, как это выглядит:
port = 8000
listen = 0.0.0.0
docroot = /home/ubuntu/yaws/www/test
dir_listings = true
и я получаю следующую ошибку:
=ERROR REPORT==== 16-Sep-2012::17:24:47 === Yaws: Failed to listen 0.0.0.0:80 : {error,eacces}
=ERROR REPORT==== 16-Sep-2012::17:24:47 === Can't listen to socket: {error,eacces}
=ERROR REPORT==== 16-Sep-2012::17:24:47 === Top proc died, terminate gserv =ERROR REPORT==== 16-Sep-2012::17:24:47 === Top proc died, terminate gserv =INFO REPORT==== 16-Sep-2012::17:24:47 === application: yaws exited: {shutdown,{yaws_app,start,[normal,[]]}} type: permanent {"Kernel pid terminated",application_controller," {application_start_failure,yaws,>>>>>>{shutdown,>{yaws_app,start,[normal,[]]}}}"}
Я также открыл порт 80 с помощью iptables. Запуск sudo iptables -L дает следующий результат:
Chain INPUT (policy ACCEPT) target prot opt source destination
ACCEPT tcp -- ip-192-168-2-0.ec2.internal ip-192-168-2-16.ec2.internal tcp dpt:http
ACCEPT tcp -- 0.0.0.0 anywhere tcp dpt:http ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED ACCEPT tcp -- anywhere anywhere tcp dpt:http ACCEPT tcp -- anywhere anywhere tcp dpt:http
Chain FORWARD (policy ACCEPT) target prot opt source destination
Chain OUTPUT (policy ACCEPT) target prot opt source destination
Кроме того, я перешел на панель группы безопасности в области конфигурации Amazon AWS и добавил порты 80, 8000 и 8080 в источник IP 0.0.0.0.
Обратите внимание: если вы попытаетесь получить доступ к URL-адресу виртуального сервера сейчас, он, скорее всего, не подключится, потому что я в настоящее время не использую демон yaws. Я тестировал это, когда у меня было рыскание через рыскание или рыскание -i
Спасибо за терпение
Если вы поместите службу на порт 8000, вам необходимо использовать порт 8000 в своем URL-адресе. Например:
http://ec2-72-44-47-235.compute-1.amazonaws.com:8000/
Также проверьте свой эластичный IP-адрес и убедитесь, что он все еще связан с экземпляром.