سؤال

لدي تطبيق ويب على جهاز الكمبيوتر الخاص بي وعلى خادم الويب باستخدام ssh.المشكلة هي أنني أقوم بتطوير التطبيق محليًا على جهاز الكمبيوتر الخاص بي وأريد مزامنته مع الخادم وليس عن طريق نسخ الملفات عبر بروتوكول نقل الملفات.هل هناك أي طريقة أخرى؟شخص سخيف؟

هل كانت مفيدة؟

المحلول

أنت لا تحدد أنظمة التشغيل أو اللغات المعنية، مما يجعل من الصعب التحديد.

يعد Git (وSVN وMercurial، وما إلى ذلك) رائعًا للتحكم في الإصدار، ولكن الحفاظ على مزامنة الأنظمة غالبًا ما يتطلب أكثر من مجرد التحكم في الإصدار.إذا كنت من محبي لغة بايثون فقد تستمتع بالقراءة أدوات هاكر بايثون الحديث:Virtualenv والنسيج والنقطة.يتحدث هذا عن الحفاظ ليس فقط على التعليمات البرمجية ولكن على بيئتك بأكملها متزامنة.

أوصي ببساطة بالاحتفاظ بالملفات على نظامين متزامنين rsync.أستخدم هذا لجميع أنواع المهام، سواء على جهاز واحد أو للنسخ الاحتياطي/مزامنة الدلائل بين الأجهزة.لدينا عميل في SoCal حيث نقوم بتنفيذ إستراتيجية نسخ احتياطي على ثلاثة مستويات (2 في الموقع، 1 خارج الموقع) لأكثر من 5 تيرابايت من البيانات وجوهرها هو rsync و rsnapshot.

تحديث للتعليق:

لا يهم حقًا ما هو مكتوب في موقعك، فلا يزال يتعين عليك التأكد من ذلك الجميع من تغييراتك تصل إلى الإنتاج.غالبًا ما تكون هذه عملية متعددة الخطوات.تم تصميم Fabric خصيصًا لتغليف هذه الخطوات وتقليلها إلى أمر واحد.تعد Pip و virtualenv أكثر خصوصية لـ Python في التقاط تغييرات المكتبة الإضافية، وما إلى ذلك، ولكن من المحتمل أن يكون لدى Ruby/Rails شيء مكافئ.الهدف هو الحصول على أمر واحد كل شئ من الضروري الانتقال من التطوير إلى التدريج، وأمرًا واحدًا آخر للانتقال من التدريج إلى الإنتاج.

كلمة تحذير:يفعل لا المزامنة التلقائية مباشرة من جهاز التطوير الخاص بك إلى دليل الإنتاج الخاص بك.انتقل دائمًا إلى دليل التدريج المتوسط على آلة الإنتاج أولاً.من المؤكد تقريبًا أن الجهازين لا يحتويان على بيئات متطابقة بنسبة 100%، وما يعمل على التطوير قد لا يعمل على الإطلاق على جهاز الإنتاج الخاص بك.من الأفضل أن تأخذ دقيقة أو دقيقتين إضافيتين للاختبار في التدريج بدلاً من التسبب في حدوث خطأ في موقع الإنتاج بأكمله بمقدار 500 خطأ.

نصائح أخرى

ويجب أن يكون لها بناء الآلي من مستودع الشفرة المصدرية لكل من التنمية ويبني الإنتاج.

ويجب عليك أيضا أن يكون برنامج نصي الآلي للانتشار في بيئات التطوير والإنتاج.

وبعد ذلك، لنشر الإنتاج، بل هو مسألة بسيطة من التحقق من التعليمات البرمجية ديف الخاص بك، تشغيل البرنامج النصي الإنشاء الخاصة بك، ثم تشغيل البرنامج النصي نشر الإنتاج.

وهذا يحمل بغض النظر عن ما هي البرامج / بيئة / الأدوات التي تستخدمها.

وأود أن <م> عادة تتوقع الاحتفاظ git لبيئة التطوير الخاصة بك.

وبناء بلدكم أن بناء بعض للنشر (أ .tar.gz، ربما) عن طريق تحديد كلمة دلالية لبناء ضد (بحيث الإنشاء الخاصة بك وتدقيقها وتكرارها) وبعد ذلك كنت نسخ ذلك عبر إلى الخادم الخاص بك باستخدام ssh / scp.

وأنا لن مجرد متزامنة من بيئة التطوير. تريد أن للأشياء في التنمية، الاشياء كنت تجريب والأدوات والملفات وغيرها الداعمة.

كابيسترانو, ، الذي تم تصميمه في الأصل لنشر تطبيقات Rails على وجه الخصوص، تم توسيعه منذ ذلك الحين لنشر أي نوع من تطبيقات الويب (يُسمى نشر بدون قضبان).

بمجرد إعداده، يبدو سير العمل كما يلي:

  1. تحرير مصدر البرنامج.
  2. قم بتسجيل التغييرات الخاصة بك وادفعها إلى المستودع المركزي (git/mercurial/svn/أيًا كان)
  3. يجري cap deploy على برنامجك.

الخطوة 3 هي المكان الذي يحدث فيه السحر، وهذا ما تم إنشاء كابيسترانو للقيام به.سيقوم Capistrano بفحص نسخة جديدة من التعليمات البرمجية الخاصة بك من المستودع، ونسخ هذا الرمز إلى دليل "الإصدار" الجديد (يُسمى شيئًا مثل 20091028230834, ، طابع زمني) وأخيرًا قم بربط الدليل current إلى نسختك الأخيرة.وفي المنتصف، قد يقوم بتشغيل عمليات الترحيل إذا كانت موجودة.لقد تركت مع إعداد الدليل مثل هذا:

...deploy-to-path/current  ->  ./releases/20091028230834
...deploy-to-path/releases/
    20091028230834/
    20091028225623/
    ...    # You can configure the number of releases kept after deployment.
...deploy-to-path/shared/
    cached-copy/  # A cached copy of your repository, which Capistrano updates
    ...           # Any shared data, like file uploads, for your application.

وثائق Capistrano ليست رائعة.إنهم حقًا بحاجة إلى أن يأتي شخص ما ويكتبه بشكل متماسك.ومع ذلك، فإن ما تفعله في الأساس هو كتابة ملف (deploy.rb) بالمعلومات التالية:

  • أين هو الخادم؟(على سبيل المثالwww.example.com)
  • ما هي بيانات اعتماد SSH الخاصة بك؟(المستخدم، كلمة المرور)
  • أين يتم تخزين التعليمات البرمجية الخاصة بك؟(عنوان URL للمستودع الخاص بك)
  • أين تريد الرمز على الخادم؟

للبدء، أقترح تشغيل capify على التطبيق الخاص بك (إعطاء الملفات الافتراضية لنفسك) وتشغيله على خادم اختبار (أو دليل اختبار على الخادم) لمعرفة ما يفعله.بمجرد أن تقوم بنشر شيء ما، يمكنك تخصيصه للقيام بمزيد من النقل/الربط الرمزي للأشياء.

ويجب عليك أيضا أن تفكر في كيف تريد للافراج عن الاشياء ... دفع لعاب المستمر من التغييرات إلى إنتاج يمكن أن تجعل من الصعب جدا تعقب عندما تفجرت مشكلة حتى.

وكما ذكر آخرون، يمكنك استخدام بوابة لتزامن لإدارة التعليمات البرمجية. عندما يكون لديك مجموعة جديدة من التغييرات التي تعتقد أنها على استعداد، وتلك يمكن أن تذهب في فرع، أو على الأقل سمة لهم حتى تعرف ما هي مجموعة من التغيرات خرج معا.

وبعد ذلك يمكنك مزامنة تلك التغييرات إلى دليل التدريج، والوجه التبديل عندما تم التحقق من صحة يخفف هناك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top