Использование пользовательского IP-адреса для news.arc на Openshift

Я пытаюсь запустить news.arc на Redhat Openshift. (Картридж DIY с использованием инструкций Raycine для запуска ракетки)

Вот шаги, которые я выполнил

  1. Запустите самодельный картридж, следуя инструкциям Raycine отсюда — https://github.com/RayRacine/rackos/wiki/Quick-Start

  2. Получите файл news.arc от anarki отсюда https://github.com/arclanguage/anarki/.

При развертывании кода ракетка устанавливается, однако я не знаю, как передать аргументы подсказки дуги. Итак, я подключаюсь по ssh к серверу openshift и делаю следующее

$racket -f as.scm 
arc>(load "lib/news.arc") 
arc>(nsv) 
Error: "tcp-listen: listen failed\n port number: 8080\n system error: Permission denied; errno=13"

Я нашел эту тему - http://arclanguage.com/item?id=7731, в которой аналогичная ошибка.

Openshift позволяет использовать порт 8080, который использует news.arc по умолчанию. Однако Openshift требует использования их внутреннего IP-адреса ($OPENSHIFT_DIY_IP).

Я попытался найти способ указать ip для tcp-listen. (Документация Racket по tcp-listen находится здесь — http://docs.racket-lang.org/reference/tcp.html)

Вот несколько соответствующих строк из ac.scm (https://github.com/arclanguage/anarki/blob/master/ac.scm)

(xdef open-socket  (lambda (num) (tcp-listen num 50 #t)))

(xdef socket-connect (lambda (host port)
                   (ar-init-socket
                     (lambda () (tcp-connect host port)))))

(xdef ssl-connect (lambda (host port)
                (ar-init-socket
                  (lambda () (ssl-connect host port)))))

В lang.arc есть эти строки, однако я сомневаюсь, что lib/lang.arc вызывается при загрузке news.arc (я пытался заменить ip на значение $OPENSHIFT_DIY_IP, но результат тот же)

reactor.connectTCP("localhost", «lang-control-port», ControlClientFactory())         
reactor.listenTCP(«lang-listen-port!python», site, interface='127.0.0.1')

В news.arc есть эти строки, где упоминается порт 8080

(def nsv ((o port 8080))
  (map ensure-dir (list arcdir* newsdir* storydir* votedir* profdir*))
  (unless stories* (load-items))
  (if (and initload-users* (empty profs*)) (load-users))
  (asv port))

В ссылке Racket TCP упоминается использование имени хоста.

    (tcp-connect        hostname                 
            port-no              
         [  local-hostname               
            local-port-no])     →       
    input-port?     output-port?

  hostname : string?
  port-no : (integer-in 1 65535)
  local-hostname : (or/c string? #f) = #f
  local-port-no : (or/c (integer-in 1 65535) #f) = #f

Может ли кто-нибудь предложить решение? Как указать имя хоста для tcp-listen в файле news.arc?

(Начинающий с Arc/Racket. Я уверен, что задаю здесь неправильный вопрос и, должно быть, делаю что-то не так. Спрашиваю, чтобы мне стало немного понятнее)

(news.arc — cms/forum, который используется arclanguage.com/ и news.ycombinator.com)


person abel    schedule 17.12.2013    source источник