সোর্স চেঞ্জে গ্যানিকর্ন অটোরলোড


113

অবশেষে আমি আমার বিকাশ env রান্সার থেকে গ্যানিকর্ন / এনগিনেক্সে স্থানান্তরিত করেছি।

রানসারভারের অটোরলোড বৈশিষ্ট্যটিকে গ্যানিকর্ণে প্রতিলিপি করা সুবিধাজনক হবে, তাই উত্স পরিবর্তিত হলে সার্ভারটি স্বয়ংক্রিয়ভাবে পুনরায় চালু হয়। অন্যথায় আমাকে সার্ভারটি ম্যানুয়ালি পুনরায় চালু করতে হবে kill -HUP

ম্যানুয়াল পুনঃসূচনা এড়াতে কোনও উপায়?


ত্রুটি-বিচ্যুতি: আমার এনভিউ-তে গ্যানিকোর্ন পরিচালিত / তদারকির দ্বারা তদারকি করা হয়, সুতরাং আমি সত্যিই kill -HUPপিআইডি প্রক্রিয়া করব না , পরিবর্তে সুপারভাইসেক্টল ব্যবহার করব। যদিও এটি অনেক কিছু পরিবর্তিত হয় না।
পাওলো

3
github.com/benoitc/gunicorn/issues/154 কিছু সমাধান হয়েছে
কে জেড

উত্তর:


232

যদিও এটি পুরানো প্রশ্ন, কেবলমাত্র ধারাবাহিকতার জন্য - যেহেতু সংস্করণ 19.0-তে বন্দুকের --reloadবিকল্প রয়েছে। সুতরাং কোনও তৃতীয় পক্ষের সরঞ্জামের বেশি প্রয়োজন নেই।


5
সম্মত হয়। অন্যান্য উত্তরগুলি কাজ করতে পারে, তবে এটি এখন পর্যন্ত সবচেয়ে সহজ এবং এটি কোনও কার্যকরী নয়। এটি ঠিক ওপি চেয়েছিল।
জে-বব

1
আমি বিশ্বাস করি না যে সেখানে একটি --রেলোড বিকল্প আছে যা বন্দুকের বাচ্চা হিসাবে নির্মিত। আপনি এটি কোথায় পেলেন? তাদের দস্তাবেজগুলি কনফিগারটি পুনরায় লোড করতে, একটি killall -HUP procnameনতুন কর্মী শুরু করতে এবং পুরানোগুলি কৌতূহলীভাবে বন্ধ করে দেওয়ার জন্য একটি এইচইউপি (ভাল কাজ করবে) প্রেরণ করবে।
সফটওয়্যারটি

3
ধন্যবাদ @ গুয়ান্ডালিনো, আমি অবশ্যই এটি মিস করেছি। যদিও লক্ষণীয় আকর্ষণীয়, তারা বলে যে "এই সেটিংটি উন্নয়নের উদ্দেশ্যে" " এটি সম্ভবত কিছু ক্ষেত্রে উত্পাদনের জন্য কাজ করবে তবে এটি অন্য অনেকের জন্যও সমস্যাযুক্ত হতে পারে। হ্যাঁ আমি নীচে দেখতে পেয়েছি যে আপনি প্রযোজনা / মোতায়েন করতে আপাতদৃষ্টিতে আগ্রহী are
আস্তে আস্তে

উত্পাদন সার্ভারগুলির জন্য এটি কীভাবে সহজ পদ্ধতিতে করবেন?
জুয়ান ইসাজা

@ জুয়ানআইসাজা আপনার উত্পাদনতে কখনও এ জাতীয় কার্যকারিতা ব্যবহার করা উচিত নয়। যদি আপনি মনে করেন আপনার এটি প্রয়োজন - আপনি ডেভ বা স্থাপনার জন্য আপনার পদ্ধতির পুনর্বিবেচনা করতে হবে।
দিমিত্রি জিলোকভস্কি

20

একটি বিকল্প হ'ল - ম্যাক্স-অনুরোধগুলি প্রতিটি বানানো প্রক্রিয়া --max-requests 1শুরু করার বিকল্পগুলিতে যুক্ত করে কেবল একটি অনুরোধ পরিবেশন করতে সীমাবদ্ধ করতে ব্যবহার করতে । প্রতিটি নতুন বানানো প্রক্রিয়াতে আপনার কোড পরিবর্তনগুলি দেখতে হবে এবং বিকাশের পরিবেশে অনুরোধের অতিরিক্ত প্রারম্ভিক সময়টি নগণ্য হওয়া উচিত।


1
দেব env জন্য দুর্দান্ত, মার্জিত কৌশল। প্রোডে ব্যবহার করা যাবে না ... তবে আপনি "অবিচ্ছিন্ন মোতায়েন" না করে আপনি কোনওভাবেই প্রোডের উপর অটোরলোড চান না। যদি আপনি এটি করেন তবে ব্রায়ান হেলমিগের পদ্ধতির জন্য এটির পক্ষে pipসক্ষম প্যাকেজ দরকার হলেও এটি আরও ভাল watchdog
hobs

2
নতুন কর্মী বুট করতে ~ 3 সেকেন্ড সময় লাগবে, এটি আমার পক্ষে খুব ধীর। (মধ্য 2009 Mbp)
ব্লেইস

11

ব্রায়ান হেলমিগ এটি নিয়ে এসেছিল এবং আমি এটিকে সরাসরি run_gunicornচালু করার পরিবর্তে এটি ব্যবহার করার জন্য এটি পরিবর্তন করেছিলাম gunicorn, যাতে আপনার জাজানো প্রকল্পের মূল ফোল্ডারে (আপনার ভার্চুয়ালেনভ সক্রিয় করে) এই 3 টি কমান্ডকে কেবল একটি শেলের মধ্যে কাটা এবং পেস্ট করা সম্ভব হয়:

pip install watchdog -U
watchmedo shell-command --patterns="*.py;*.html;*.css;*.js" --recursive --command='echo "${watch_src_path}" && kill -HUP `cat gunicorn.pid`' . &
python manage.py run_gunicorn 127.0.0.1:80 --pid=gunicorn.pid

এটি মাত্র ফেডোরা 15 এ জ্যাঙ্গো 1.5.4, গ্যানিকর্ন 18.0, ওয়াচডগ 0.6, বাশ 4.2 সহ আমার জন্য ব্যবহার করেছেন।
hobs

প্রয়োজনে আপনার আইপি বা এফকিউডিএন এবং পোর্টের জায়গায় রাখতে ভুলবেন 127.0.0.1:80না।
hobs

1
@ গুন্ডালিনো, ভাগ্য? এটি কয়েক সপ্তাহ ধরে আমার জন্য ভালভাবে কাজ করছে। শুধু সময় আমি নিজে পুনরায় আরম্ভ করা আবশ্যক যখন আমি পরিবর্তন হয় settings.py, models.py(মাইগ্রেশন প্রয়োজন), বা আমার নেই কিছু বহিরাগত অ্যাপ্লিকেশন সোর্স কোড watchmedoনিদর্শন।
hobs

অনুস্মারকটির জন্য ধন্যবাদ। তবে আমি অন্যের সাফল্যে আমার ভোট দিতে চাই না। এই (অপ্রয়োজনীয়) তাড়াহুড়া কেন? আমি কি কিছু স্ট্যাকওভারফ্লো নিয়ম লঙ্ঘন করছি? যদি তা হয় তবে দয়া করে আমাকে কীভাবে রিমিটেট করবেন তা জানান।
পাওলো

1
কোন চিন্তা করো না. অবশ্যই কোনও এসও নিয়ম লঙ্ঘন করছে না, সহায়ক উত্তরগুলির মূল্যায়নে প্রচেষ্টা / অগ্রাধিকার রাখা কেবল বিবেচ্য / একক / চিন্তাশীল। দেখে মনে হচ্ছে ডেভ এবং আমি আপনাকে (অনেক মাস) সাহায্য করার জন্য আমাদের মিষ্টি সময়টি নিয়েছি, সুতরাং আমাদের সমাধানগুলি যাচাই করার জন্য আমার তাত্পর্যটি অনুপযুক্ত - আমি যেভাবে লুকিয়ে থাকা ত্রুটিগুলি রয়েছি তা জানতে খুব আগ্রহী eager আমার সার্ভারটি কনফিগার করেছে এবং যদি ডেভের পদ্ধতির দিকে আমার স্যুইচ করা উচিত । শুভ ছুটির দিন!
hobs

5

আমি উত্পাদনে মোতায়েন করতে গিট পুশ ব্যবহার করি এবং স্ক্রিপ্ট চালানোর জন্য গিট হুক সেট আপ করি। এই পদ্ধতির সুবিধা হ'ল আপনি একই সময়ে আপনার স্থানান্তর এবং প্যাকেজ ইনস্টলেশনও করতে পারেন। https://mikeeverhart.net/2013/01/using-git-to-deploy-code/

mkdir -p /home/git/project_name.git
cd /home/git/project_name.git
git init --bare

তারপরে একটি স্ক্রিপ্ট তৈরি করুন /home/git/project_name.git/hooks/post-receive

#!/bin/bash
GIT_WORK_TREE=/path/to/project git checkout -f
source /path/to/virtualenv/activate
pip install -r /path/to/project/requirements.txt
python /path/to/project/manage.py migrate
sudo supervisorctl restart project_name

নিশ্চিত করুন chmod u+x post-receive, এবং sudoers ব্যবহারকারী যোগ করুন। sudo supervisorctlএটি পাসওয়ার্ড ছাড়াই চালানোর অনুমতি দিন । https://www.cyberciti.biz/faq/linux-unix-running-sudo-command-without-a-password/

আমার স্থানীয় / বিকাশ সার্ভার থেকে, আমি সেট আপ করেছি git remoteযা আমাকে প্রোডাকশন সার্ভারে চাপ দিতে দেয়

git remote add production ssh://user_name@production-server/home/git/project_name.git

# initial push
git push production +master:refs/heads/master

# subsequent push
git push production master

বোনাস হিসাবে, আপনি স্ক্রিপ্টটি চলার সাথে সাথে সমস্ত প্রম্পটগুলি দেখতে পাবেন। সুতরাং আপনি দেখতে পাবেন যে মাইগ্রেশন / প্যাকেজ ইনস্টলেশন / সুপারভাইজার পুনরায় আরম্ভের সাথে কোনও সমস্যা আছে কিনা।


#!/bin/bashউপরে উল্লিখিত হিসাবে শেবাং ব্যবহার করার জন্য নোট করুন #!/bin/shযার পরিবর্তে গিট post-receiveউদাহরণটি রয়েছে!
কার্টিস্প করুন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.