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

Проблемы с запуском приложения node.js с использованием mongoDB на VPS под управлением CentOS

Я зарегистрировал VPS в DirectAdmin, работаю под управлением CentOS, и я использую домен, который я зарегистрировал с другого сайта. Я выполнил необходимую настройку, чтобы домен отображал страницу VPS по умолчанию. Я также установил node.js и mongoDB с помощью CentOS, но мне не удалось запустить приложение. Я установил файл .conf для MongoDB, где для bind_ip установлен IP-адрес VPS, и когда я пытаюсь запустить MongoDB на порту 27017, я получаю следующее сообщение:

service mongod start
Starting mongod:                                           [  OK  ]
bash: /var/log/mongodb/mongodb.log: Permission denied

Я думаю, это связано с тем, что я не выполнял авторизацию для VPS, но я не мог понять, как это сделать. Что я делаю не так?

Кроме того, я не могу заставить node.js работать правильно. Когда я запускаю базовое приложение node.js на CentOS, порт 3000, все вроде бы нормально, но когда я захожу на свое доменное имя или IP-адрес VPS на порт 3000, сервер не отвечает. Как мне решить эту проблему? Нужно ли мне настраивать порты на моем VPS, чтобы сервер отвечал?

При открытии домена без указания порта в браузере, как я могу настроить VPS для подключения к приложению узла вместо отображения страницы index.html по умолчанию?

У меня нет опыта настройки node.js на VPS, поэтому мой последний вопрос: есть ли какие-либо руководства по запуску node.js с MongoDB на VPS? Заранее спасибо.

Изменить: я решил проблему MongoDB, просто переустановив ее. Я думаю, что что-то пошло не так при установке в первый раз.

Похоже, вы запускаете mongod как непривилегированный пользователь, поэтому он не может открыть файл журнала. Вы должны запустить службу mongod как системную службу, а затем предоставить доступ пользователям (см. Документацию db.addUser).

Для запуска Node.js в продакшене лучше использовать какое-нибудь средство вроде https://github.com/nodejitsu/forever а затем запросы прокси через прокси. Вы можете использовать Apache, поэтому настройте его на прослушивание вашего index.html на другом порту, скажем, 8080 в ports.conf

    Listen 8080

и добавьте виртуальную машину для перенаправления в ваше приложение на 80, что-то вроде:

    <VirtualHost you.example.com:80>
        ProxyRequests off

        <Proxy *>
           Order deny,allow
           Allow from all
        </Proxy>
        <Location />
            ProxyPass http://localhost:3000/
            ProxyPassReverse http://localhost:3000/
        </Location>
    </VirtualHost>

Возможно, вы могли бы потерять некоторые чистые характеристики Node с этой настройкой, поэтому посмотрите https://github.com/nodejitsu/node-http-proxy также.

По этой части проблемы:

bash: /var/log/mongodb/mongodb.log: в доступе отказано

Пользователь, которого вы используете для запуска MongoDB, не имеет разрешения на доступ к файлу журнала, который вы указали с помощью параметр конфигурации logpath. Сначала вы должны узнать, от имени какого пользователя он работает (обычно mongod, если вы используете RPM 10gen).

Затем посмотрите на владельца файла журнала:

ls -al /var/log/mongodb/mongodb.log

Возможно, вам придется использовать sudo или войдите в систему как root, чтобы изменить разрешения (или, возможно, создать файл). Предполагая, что он существует, вам нужно будет сменить владельца, примерно так:

chown mongod:mongod /var/log/mongodb/mongodb.log

Другой вариант - создать новый файл журнала в другом месте и изменить параметр пути к журналу, чтобы он указывал на него.