Я пытаюсь настроить веб-сервер 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,[]]}}}"}
I ' Мы также открыли порт 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
Спасибо за терпение
Клайв ван Хильтен опубликовал комментарий , в котором содержится наилучший доступный ответ на этот вопрос. Он сказал (с небольшими изменениями):
Я ничего не знаю о челюстях, но читая вывод выше, я замечаю пару вещей:
Ваш docroot /home/ubuntu/yaws/www/test
, но Eshell сообщает:
=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 -
Обратите внимание на test
в ваших docroot
и trial
в выходных данных Eshell. [+1121]
Вы утверждаете, что « Я также открыл порт 80 с помощью iptables ». Но ваш номер порта в yaws.conf
- это 8000
, а не 80
.
Кажется, исправление этих расхождений вполне может решить проблему.