it-swarm.dev

كيفية نشر تطبيق نيزك على الخادم الخاص بي؟

كيفية نشر تطبيق نيزك على الخادم الخاص بي؟

نكهة 1: خادم التطوير والنشر متماثلان ؛

النكهة 2: خادم التطوير واحد (ربما المضيف المحلي الخاص بي) وخادم النشر هو آخر (ربما VPS في السحابة) ؛

نكهة 3: أريد إنشاء مجال "استضافة النيزك" ، تمامًا مثل "meteor.com". هل هو ممكن؟ ماذا؟

تحديث :

أقوم بتشغيل Ubuntu ولا أريد أن "أزال الصفة" عن التطبيق. شكرا لكم.

66
J. Bruni

وثائق النيزك يقول حاليا:

"[...] تحتاج إلى توفير Node.js 0.8 وخادم MongoDB. يمكنك بعد ذلك تشغيل التطبيق من خلال استدعاء العقدة ، وتحديد منفذ HTTP للتطبيق للاستماع إليه ، ونقطة نهاية MongoDB."


لذلك ، من بين عدة طرق ل تثبيت Node.js ، استيقظت وأعمل بعد أفضل نصيحة وجدتها ، والتي تقوم بشكل أساسي بتفريغ أحدث إصدار متوفر مباشرة في الموقع الرسمي Node.JS ، المترجمة بالفعل لنظام التشغيل Linux (64 بت ، في حالتي):

# Does NOT need to be root user:

# create directory
mkdir -p ~/.nodes && cd ~/.nodes

# download latest Node.js distribution
curl -O http://nodejs.org/dist/v0.10.13/node-v0.10.13-linux-x64.tar.gz

# unpack it
tar -xzf node-v0.10.13-linux-x64.tar.gz

# discard it
rm node-v0.10.13-linux-x64.tar.gz

# rename unpacked folder
mv node-v0.10.13-linux-x64 0.10.13

# create symlink
ln -s 0.10.13 current

# add path to PATH
export PATH="~/.nodes/current/bin:$PATH"

# check
node --version
npm --version


ول تثبيت MongoDB ، اتبعت ببساطة الإرشادات الموجودة في دليل MongoDB المتاح في قسم الوثائق في موقعه الرسمي على الإنترنت :

# Needs to be root user (apply "Sudo" if not at root Shell)

apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | tee /etc/apt/sources.list.d/10gen.list
apt-get update
apt-get install mongodb-10gen



الخادم جاهز لتشغيل تطبيقات Meteor! للنشر ، "المشكلة" الرئيسية هي حيث the " الحزمة " تحدث العملية. نحتاج إلى تشغيل الأمر meteor bundle من داخل شجرة الملفات المصدر للتطبيق. فمثلا:

cd ~/leaderboard
meteor bundle leaderboard.tar.gz


إذا حدث النشر في خادم آخر (نكهة 2) ، فنحن بحاجة إلى تحميل ملف الحزمة tar.gz إليه ، باستخدام sftp أو ftp أو أي طريقة أخرى لنقل الملفات. بمجرد وجود الملف ، نتبع كلا من Meteor documentation و الملف README الذي تم تضمينه بطريقة سحرية في جذر شجرة الحزمة:

# unpack the bundle
tar -xvzf leaderboard.tar.gz

# discard tar.gz file
rm leaderboard.tar.gz

# rebuild native packages
pushd bundle/programs/server/node_modules
rm -r fibers
npm install [email protected]
popd

# setup environment variables
export MONGO_URL='mongodb://localhost'
export ROOT_URL='http://example.com'
export PORT=3000

# start the server
node main.js


إذا كان النشر في نفس الخادم (نكهة 1) ، فإن ملف tar.gz الخاص بالباقة موجود بالفعل ، ونحن لسنا بحاجة إلى إعادة ترجمة الحزم الأصلية. (فقط قفز القسم المقابل أعلاه.)



رائع! من خلال هذه الخطوات ، تم نشر مثال "Leaderboard" على خادمي المخصص ، وليس "meteor.com" ... (فقط لمعرفة وقيمة خدماتهم!)

لا يزال يتعين علي تشغيله على المنفذ 80 ( أخطط لاستخدام NginX لهذا ) ، واستمرار متغيرات البيئة ، وبدء Node.JS منفصلة عن المحطة الطرفية ، إلخ ... أنا على علم بهذا الإعداد في "بالكاد عارية "واحد ... فقط الأساس ، والخطوة الأولى ، والأحجار الأساس الأساسية.

لقد تم نشر التطبيق "يدويًا" ، دون الاستفادة من جميع الميزات السحرية للأمر meteor deploy ... رأيت أشخاصًا نشروا " meteor.sh " و " meteoric.sh " وأنا باتباع نفس المسار ... قم بإنشاء برنامج نصي لمحاكاة ميزة "نشر أمر واحد" ... مع العلم أنه في المستقبل القريب ، ستكون كل هذه العناصر جزءًا من مستكشفي Pioneer Meteor فقط ، حيث ستنمو لتصبح مجرة ​​كاملة! ومعظم هذه القضايا ستكون شيئًا قديمًا من الماضي.

على أي حال ، أنا سعيد جدًا برؤية مدى سرعة تشغيل التطبيق المنشور في أرخص VPS على الإطلاق ، مع زمن استجابة منخفض بشكل مدهش وتحديثات فورية فورية تقريبًا في العديد من المتصفحات المتميزة. رائع!

شكرا لكم!!!

87
J. Bruni

جرب نيزك لأعلى أيضًا

مع ذلك يمكنك النشر في أي خادم أوبونتو. يستخدم هذا الأمر meteor build داخليًا. ويستخدمها الكثيرون لنشر تطبيقات الإنتاج.

لقد قمت بإنشاء Meteor Up للسماح للمطورين بنشر تطبيقات Meteor ذات جودة الإنتاج حتى يأتي Galaxy.

14
Arunoda Susiripala

أود أن أوصي نكهة اثنين مع خادم نشر منفصلة. يؤدي الفصل بين المخاوف إلى توفير بيئة أكثر استقرارًا للرمز الخاص بك وتصحيحه بسهولة.

للقيام بذلك ، يوجد نص برمجي ممتاز Meteoric bash يساعدك على النشر في EC2 من Amazon أو خادمك الخاص.

فيما يتعلق بكيفية طرح meteor.com الخاصة بك ، أقترح عليك تقسيم ذلك إلى سؤال StackOverflow الخاص به لأنه غير ذي صلة. بالاضافة الى ذلك ، لا أستطيع الإجابة عليه :)

8
Jonatan Littke

أنا فعلت معها منذ بضعة أيام. قمت بنشر تطبيق Meteor الخاص بي على الخادم الخاص بي على DigitalOcean. لقد استخدمت Meteor Up أداة لإدارة النشرات و Nginx على الخادم لخدمة التطبيق.

انها بسيطة جدا للاستخدام. يجب عليك تثبيت النيزك مع الأمر:

npm install -g mup

ثم قم بإنشاء المجلد لتكوين النشر وانتقل إلى الدليل الذي تم إنشاؤه. ثم قم بتشغيل الأمر meteor init. سيتم إنشاء ملفين التكوين. لدينا مصلحة في ملف mup.json. لديها تكوينات لعملية النشر. يبدو مثل هذا:

{
  // Server authentication info
  "servers": [
    {
      "Host": "hostname",
      "username": "root",
      "password": "password",
      // or pem file (ssh based authentication)
      //"pem": "~/.ssh/id_rsa",
      // Also, for non-standard ssh port use this
      //"sshOptions": { "port" : 49154 },
      // server specific environment variables
      "env": {}
    }
  ],

  // Install MongoDB on the server. Does not destroy the local MongoDB on future setups
  "setupMongo": true,

  // WARNING: Node.js is required! Only skip if you already have Node.js installed on server.
  "setupNode": true,

  // WARNING: nodeVersion defaults to 0.10.36 if omitted. Do not use v, just the version number.
  "nodeVersion": "0.10.36",

  // Install PhantomJS on the server
  "setupPhantom": true,

  // Show a progress bar during the upload of the bundle to the server.
  // Might cause an error in some rare cases if set to true, for instance in Shippable CI
  "enableUploadProgressBar": true,

  // Application name (no spaces).
  "appName": "meteor",

  // Location of app (local directory). This can reference '~' as the users home directory.
  // i.e., "app": "~/Meteor/my-app",
  // This is the same as the line below.
  "app": "/Users/arunoda/Meteor/my-app",

  // Configure environment
  // ROOT_URL must be set to https://YOURDOMAIN.com when using the spiderable package & force SSL
  // your NGINX proxy or Cloudflare. When using just Meteor on SSL without spiderable this is not necessary
  "env": {
    "PORT": 80,
    "ROOT_URL": "http://myapp.com",
    "MONGO_URL": "mongodb://arunoda:[email protected]:10023/MyApp",
    "MAIL_URL": "smtp://postmaster%40myapp.mailgun.org:[email protected]:587/"
  },

  // Meteor Up checks if the app comes online just after the deployment.
  // Before mup checks that, it will wait for the number of seconds configured below.
  "deployCheckWaitTime": 15
}

بعد ملء جميع حقول البيانات ، يمكنك بدء عملية الإعداد باستخدام الأمر mup setup. وسوف الإعداد الخادم الخاص بك.

بعد الإعداد الناجح ، يمكنك نشر تطبيقك. فقط اكتب mup deploy في وحدة التحكم.

6
Dmytro Medvid

بديل آخر هو مجرد تطوير على الخادم الخاص بك لتبدأ. لقد قمت للتو بإنشاء مربع رقمي للمحيط ثم قمت بتوصيل حساب Cloud9 IDE الخاص بي.

الآن ، يمكنني التطوير على الجهاز مباشرةً في Cloud IDE والنشر سهل - فقط نسخ الملفات.

لقد قمت بإنشاء برنامج تعليمي يوضح بالضبط كيف يعمل إعدادي.

4
John Sonmez

فيما يلي إرشادات تشغيل Meteor على CentOS 7 VPS . ينبغي أن تنطبق على بيئات لينكس الأخرى.

2
Kamal

واجهت الكثير من المتاعب مع برنامج meteor up ، لذلك قررت كتابة برنامج نشر خاص بي . أضفت أيضًا معلومات إضافية حول كيفية إعداد nginx أو mongodb. آمل أن يساعد!

راجع مجلد /sh في المستودع

ما النصي meteor-deploy.sh:

  1. حدد بيئة (./meteor-deploy.sh للإعداد ، ./meteor-deploy.sh prod للإنتاج)
  2. بناء وحزمة إنتاج نسخة من التطبيق النيزك
  3. نسخ حزمة إلى الخادم
  4. SSH في الخادم
  5. القيام mongodump لقاعدة البيانات الاحتياطية
  6. أوقف تشغيل التطبيق
  7. فك حزمة
  8. الكتابة فوق ملفات التطبيق
  9. إعادة تثبيت تبعيات حزمة عقدة التطبيق
  10. بدء التطبيق (يستخدم للأبد)

تم اختباره من أجل تكوينات الخادم التالية:

  • أوبونتو 14.04.4 LTS
  • نيزك - الإصدار 1.3.2.4
  • العقدة - الإصدار v0.10.41
  • npm - الإصدار 3.10.3
2
Samuel