Назад | Перейти на главную страницу

Как правильно настроить веб-сервис (ubuntu 12.04)?

У меня есть веб-проект (веб-сайт), на котором работает собственный веб-сервер (в моем случае я использую сервер оснастки Haskell, но это не имеет отношения к цели этого вопроса).

Как заставить его работать на системном порте 80, чтобы предоставлять его содержимое широкой публике? В частности меня интересуют:

  1. Куда в системе поставить? /var/blah? А в линуксе для этого есть стандартное место?
  2. От имени какого пользователя и / или группы должна работать служба? Я знаю, что для работы на 80 необходимо быть root.
  3. Какие разрешения / права собственности должны быть у этой папки (на шаге 1)?
  4. Как мне запустить мою службу автоматически и продолжить ее работу после выхода из моего ssh-соединения? (Например, в Windows это делается с помощью sc.exe)

Приветствуется любая помощь или указание в правильном направлении. Спасибо!

P.S .: Я использую Ubuntu 12.04 64bit, если это помогает.

Для этого я использовал выскочку из Ubuntu.

  1. Создайте /etc/init/mysite.conf (как корень)
  2. Добавить описание услуги (должности):

    chdir /home/john/webapps/mysite
    exec /home/john/webapps/mysite/bin/snap-app -p 80
    
  3. Проверьте, работает ли он, и запустите его вручную, если необходимо:

    initctl list | grep mysite
    initctl start mysite
    

Обратите внимание, что здесь я использовал выскочку chdir директива, указывающая ему запускать процесс из этого каталога. Это необходимо, потому что этот каталог содержит все необходимые шаблоны (html и т. Д.) Для двоичного файла (который находится в bin папка).

Проект принадлежит пользователю john, так что я думаю, что это нормально.

Можно положить куда угодно. / usr / bin - стандартное расположение сервера; / var / www - стандартное расположение содержимого сайта или CGI.

Хорошо написанная служба запускается как root, привязывается к порту 80 и отказывается от привилегий либо менее привилегированному пользователю, либо никому. Вот как он использует привилегированный порт. Если он использует сертификаты SSL, он также должен прочитать их как root, а затем отказаться от привилегий. Поэтому вы должны запустить его как root.

Корневой каталог (обычно / var / www) должен иметь доступ на чтение + выполнение для любого пользователя, которому ваш демон передает права. В любом случае доступность для чтения и выполнение во всем мире редко бывает плохой идеей для материалов, которые вы обслуживаете в Интернете.

Вы можете запустить его автоматически с помощью сценария инициализации. Существует демон вызова C (по крайней мере, в GNU C), который заставляет процесс сбрасывать свои терминалы и игнорировать hups, что означает, что он будет запущен после закрытия сеанса ssh и прекращения tty. Если это не так написано, вы можете добавить к команде амперсанд (&), чтобы она работала в фоновом режиме, и она будет сохраняться после смерти вашей оболочки.

Я также использую сервер оснастки в Ubuntu 12.04, и простое, я не знаю, «лучше» ли решение могло бы настроить такое задание cron.

sudo crontab -e

sudo если вы действительно хотите порт 80, а затем добавьте эту строку

@reboot cd /home/path/yourapp; sudo /home/path/.cabal/bin/yourapp -p  80

Ctrl+x и yes или y чтобы сохранить его (это редактор vi), и вы можете перезагрузиться и посмотреть. Фактическая перезагрузка - это запускаемый экземпляр. Теперь, если вы не остановите его, измените задание cron или выключите компьютер, он будет работать на порту 80.

Он также может работать с exec из проекта, но это проверено.

Версия Upstart также работает, но она простая.