Ответ 1
Я рекомендую выполнить следующие шаги для развертывания в рабочей среде:
-
Дважды проверьте конфигурационный файл
/config/env/production.js
и включите все активы, которые вы добавили вручную, в/config/env/all.js
. Это хороший подход к использованию мини-версий для производства. -
(Необязательно) Если у вас есть пользовательские шрифты в приложении, я рекомендую обновить файл gruntfile.js и добавить задачу, которая скопирует шрифты в папку /public/dist/. Я сделал следующие изменения:
copy: { main:{ expand: true, flatten: true, src: ['public/modules/core/fonts/*'], dest: 'public/dist/', filter: 'isFile' } }, ... // Build task(s). grunt.registerTask('build', ['lint', 'loadConfig', 'ngmin', 'uglify', 'cssmin', 'copy']);
Задача копирования требует установки модуля grunt-copy
-
Теперь пришло время сделать отдельные файлы application.js, application.min.js и application.min.css для производства (см. папку
/public/dist
). Запуск в папке приложения$grunt build
-
Скопировать файлы на рабочий сервер. Я предпочитаю использовать развертывание GIT push. Он отправляет серверу только дополнительные изменения. Если вы используете GIT для push-развертывания, ему необходимо добавить все файлы из папки `/public/dist/'в репозиторий.
-
Поскольку вы используете express.js в своем проекте, достаточно использовать команду
$NODE_ENV=production node server.js&
Я знаю, что некоторые разработчики используют forever (модуль для node.js), но я предпочитаю использовать UPSTART (демон на основе событий), который по умолчанию используется в Ubuntu как системная служба. Я создаю файл конфигурации в папке
/etc/init
, например./etc/init/my-app.conf
. После этого я могу начать, остановить, перезагрузить приложение в качестве сервиса. Например. сервис my-app start | stop | restartUPSTART будет отслеживать и перезапускать службу в случае сбоя (см. команду respawn в конфигурации UPSTART). Подробный ответ можно найти, как сделать конфигурационный файл UPSTART: upstart script для node.js
-
(Необязательно, но рекомендуется) Установите
nginx
передNode.js
. С другой стороны, рекомендуется использовать веб-приложение под непривилегированным пользователем из-за соображений безопасности, с другой стороны, если вы хотите использовать порт 80 (это порт по умолчанию для протокола http) для вашего веб-приложения (например, http://my-app-domain.com/ вместо http://my-app-domain.com:3000/) такая конфигурация может быть сложной. Из-за этого я использую Nginx (порт 80) перед моим веб-приложением, которое фактически работает на порту, доступном для непривилегированного пользователя (например, 3000).6а. Вместо Nginx вы можете использовать Varnish