2016-07-20 3 views
1

Я также следил за некоторыми сообщениями и учебными пособиями, чтобы создать сценарий для запуска проекта meteor при перезапуске сервера. Я ответил на ответ, упомянутый в: How to run meteor on startup on Ubuntu serverСоздайте сценарий запуска для meteor в сервере linux

Затем я дал исполняемому разрешению сценарий с «chmod +x meteor-server.sh».

Я попытался установить этот скрипт в /etc/init.d и /etc/init папках, но проект meteor не запускается при перезагрузке. Я использую ubuntu 16.04.

Буду признателен, если увидев причину, что со мной произошло. Следующий код - это файл сценария «meteor.server.sh».

 # meteorjs - meteorjs job file 

    description "MeteorJS" 
    author "Jc" 

    # When to start the service 
    start on runlevel [2345] 

    # When to stop the service 
    stop on runlevel [016] 

    # Automatically restart process if crashed 
    respawn 

    # Essentially lets upstart know the process will detach itself to the background 
    expect fork 

    # Run before process 
    pre-start script 
    cd /home/me/projects/cricket 
    echo "" 
    end script 

    # Start the process 
    exec meteor run -p 4000 --help -- production 
+0

Почему вы не построить проект и запустить сгенерированный пакет? – MasterAM

+0

Спасибо за ответ, я просто хотел автоматически запустить свое приложение после перезагрузки сервера. – Janitha

+0

Но это не рекомендуется для его запуска в первую очередь. – MasterAM

ответ

2

Прежде всего, это уже очень хороший инструмент mupx, что позволяет развертывать метеорные проекты вашей собственной архитектуры, так что на самом деле нет необходимости делать это самостоятельно, если у вас есть очень хороший.

Если вам действительно нужно развернуть вручную, это займет несколько шагов. Я не собираюсь описывать все детали, потому что вы специально спрашиваете о сценарии запуска, а оставшаяся инструкция должна быть легко доступна в Интернете.

1. Подготовьте сервер

  • Установка MongoDB, если вы не планируете использовать удаленную базу данных.
  • Установить NodeJS.
  • Установите обратный прокси-сервер, например. Nginx или haproxy.
  • Установите Meteor, который мы будем использовать только как инструмент построения.

2. Построить приложение

Я предполагаю, что здесь, что у вас уже есть исходный код вашего приложения положить на сервер, к которому вы планируете развернуть. Сходи в корне проекта и выполнить следующую команду:

meteor build /path/to/your/build --directory 

Пожалуйста, обратите внимание, что если /path/to/your/build существует, то он будет удален рекурсивно первый, так что будьте осторожны с этим.

3. Установка зависимостей приложение

Перейти к /path/to/your/build/bundle/programs/server и запуск:

npm install 

4. Подготовить run.sh сценарий

Файл может быть в следующей форме:

export MONGO_URL="mongodb://127.0.0.1:27017/appName" 
export ROOT_URL="http://myapp.example.com" 
export PORT=3000 
export METEOR_SETTINGS="{}" 

/usr/bin/env node /path/to/your/build/bundle/main.js 

Предположим, вы положили его в /path/to/your/run.sh. Несколько нот здесь:

  • Эта форма MONGO_URL предполагает, что у вас установлен MongoDB локально.
  • Вам нужно будет указать вашему обратному прокси-серверу указать трафик приложения на порт 3000.
  • METEOR_SETTINGS должен быть выход JSON.stringify(settings) любого settings объекта, который у вас может быть.

5. Подготовьте upstart скрипт

Со всеми препаратами, которые мы сделали до сих пор, этот сценарий может быть столь же просто, как

description "node.js server" 

start on (net-device-up and local-filesystems and runlevel [2345]) 
stop on runlevel [016] 

respawn 
script 
exec /path/to/your/run.sh 
end script 

Этот файл должен перейти к /etc/init/appName.conf.

+0

Благодарим вас за ответ, его красиво описал процесс. Я использовал другой способ выполнить свое требование. Пожалуйста, перейдите также к моему следующему ответу. – Janitha

0

Наконец-то я получил его на работу. Я использовал следующие 2 скрипта для запуска метеора при запуске. Сначала я положил этот файл службы (meteor.service) в/и т.д./Systemd/системы

 [Unit] 
     Description = My Meteor Application 

     [Service] 
     ExecStart=/etc/init.d/meteor.sh 
     Restart=always 

     StandardOutput=syslog 
     StandardError=syslog 
     SyslogIdentifier=meteor 

     [Install] 
     WantedBy=multi-user.target 

Я назвал scipt с помощью этой службы. Я ставлю этот следующий скрипт (meteor.sh) в /etc/init.d

#!/bin/sh - 

    description "Meteor Projects" 
    author "Janitha" 

    #start service on following run levels 
    start on runlevel [2345] 

    #stop service on following run levels 
    stop on runlevel [016] 

    #restart service if crashed 
    respawn 

    #set user/group to run as 
    setuid janitha 
    setgid janitha 

    chdir /home/janitha/projects/cricket_app 

    #export HOME (for meteor), change dir to plex requests dir, and run meteor 
    script 
    export HOME=/home/janitha 
    exec meteor 
    end script 

Я делаю оба эти исполняемый файл с помощью

chmod +x meteor.service 
chmod +x meteor.sh 

И я использовал следующие две команды для включения услуги

systemctl daemon-reload 
systemctl enable meteor.service 
+0

Я рад, что вам наконец удалось это сделать. Однако имейте в виду, что использование команды «meteor» в производстве по-прежнему не является рекомендуемым способом обслуживания вашего приложения. Это может быть вредным во многих отношениях. В конце концов, это ваш вызов, который вы собираетесь использовать для себя, но учтите, что другие люди тоже читают эти сообщения, и им следует знать, что этот метод не оптимален. Если бы я был вами, я бы хотя бы добавил короткую предупредительную записку к вашему ответу. –

+0

Да, я понял. Большое спасибо @apendua – Janitha

0

Я успешно

использовали эту конфигурацию в /etc/init.d добавить файл с именем meteor.sh


#!/bin/sh 
export HOME="/home/user" 
cd /home/user/meteor/sparql-fedquest 
meteor --allow-superuser 

Вы должны дать казням разрешения meteor.sh

sudo chmod 644 meteor.sh 

Также вы должны создать meteor.service в/и т.д./Systemd/системы

[Unit] 
    Description =Portal of bibliographic resources of University of Cuenca 
    Author = Freddy Sumba 
    [Service] 
    ExecStart=/etc/init.d/meteor.sh 
    Restart=always 
    StandardOutput=syslog 
    StandardError=syslog 
    SyslogIdentifier=meteor 
    [Install] 
    WantedBy=multi-user.target 

Также вы должны предоставить разрешения для meteor.service

$ sudo chmod 644 meteor.service 

Затем нам нужно добавить сервис в этом начинать каждый раз, когда сервер перезагружать

$ systemctl enable meteor.service 

И, наконец, запустить службу

$ service meteor start 
Смежные вопросы