সবাইকে শুভেচ্ছা জানালে কেমন হয়, এটা <» FromLinux-এ আমার প্রথম প্রবন্ধ (যা আমার খসড়া xD-এ আছে বেশ কিছু), আমি আশা করি এটি আপনার কাজে লাগবে
ঠিক আছে, আমার নতুন এবং বর্তমান চাকরিতে, এই মুহুর্তে জাজানগোতে বেশ কয়েকটি সিস্টেমের স্থানান্তরিত হচ্ছে (কত আশ্চর্য এহ ?? এক্সডি) এবং উন্নয়ন ব্যতীত আমার একটি কাজ এগুলি প্রযোজনায় ফেলেছে, তবে কতটা ভাল শিক্ষানবিস, যেহেতু এটিই প্রথমবারের মতো সত্যিকারের সার্ভারে প্রযোজনায় একটি অ্যাপ্লিকেশন রাখছিলাম: $ আমি স্ট্যাকের প্রতিটি প্রয়োজনীয় প্যাকেজ (গুনিকর্ন এবং সুপারভাইজার্ড বেশিরভাগ) এর অফিসিয়াল ডকটি পড়া শুরু করেছিলাম এবং এই টিউটোরিয়ালগুলি দেখে স্প্যানিশ তারা কিছু দিক থেকে আমার কাছে খুব স্পষ্ট ছিল না, আমি জ্যাঙ্গো, গ্যানিকর্ন, সুপারভাইজার্ড, এনগিনেক্স এবং পোস্টগ্র্যাস্কিল স্ট্যাকের ভিত্তিতে অ্যাপ্লিকেশনটিকে উত্পাদনের জন্য যে পদক্ষেপগুলি অনুসরণ করেছি তার সাথে একটি মিনি গাইড তৈরি করার সিদ্ধান্ত নিয়েছিলাম।
আমি যেখানে কাজ করি সে ক্ষেত্রে সার্ভারগুলি এখনও ডেবিয়ান স্কুইজে চালিত হয় তবে গাইডটি অন্য বিতরণগুলির জন্য পুরোপুরি বৈধ হওয়া উচিত ... সুতরাং আসুন সরাসরি বিন্দুতে এসে শুরু করুন:
আমি সুপার ইউজার হিসাবে কাজ করব। প্রথমত, নিম্নলিখিত প্যাকেজগুলির প্রয়োজন:
বীচি -> পাইথনের জন্য প্যাকেজ ইনস্টল ও পরিচালনা করার সরঞ্জাম
aptitude install python-pip
nginx -> ওয়েব সার্ভার (আমরা এটিকে বিপরীত প্রক্সি হিসাবে ব্যবহার করব এবং স্ট্যাটিক ফাইলগুলি 'আইএমজি, জেএসএস, সিএসএস' ক্যাশে করতে পারি) আমরা এটি দিয়ে এটি ইনস্টল করি:
aptitude install nginx
Supervisord -> আমাদের অ্যাপ্লিকেশন পরিচালনা ও নিরীক্ষণের জন্য অ্যাপ্লিকেশন, যদিও এটি অনেক বেশি ব্যবহৃত হয়। আমরা এটি দিয়ে এটি ইনস্টল করি:
aptitude install supervisor
ভার্চুয়ালেনভ -> এটি আমাদের আবেদনের জন্য কাস্টমাইজড ভার্চুয়াল এক্সিকিউশন পরিবেশ তৈরি করতে সহায়তা করে। আমরা এটি দিয়ে এটি ইনস্টল করি:
aptitude install python-virtualenv
গুনিকর্ন -> পাইথনের জন্য ওয়েব সার্ভার (আমরা এটি এখনও ইনস্টল করব না)
আমি ধরে নিলাম তাদের ইতিমধ্যে পোস্টগ্র্যাস্কল ইনস্টল করা এবং কনফিগার করা উচিত
psycopg2 -> পাইথনের জন্য PostgreSQL কানেক্টর (আমরা এটিও এখন ইনস্টল করব না)
ভার্চুয়ালেনভ দিয়ে ভার্চুয়াল পরিবেশ তৈরি করুন:
প্রথমে আমরা ওয়ার্কিং ডিরেক্টরিতে চলে যাচ্ছি যা আমরা উত্পাদনের জন্য ব্যবহার করব:
cd /var/www/
তারপরে এই ডিরেক্টরিতে আমরা ভার্চুয়াল পরিবেশ তৈরি করব:
virtualenv ENV-nombreApp
আমি যে ডিরেক্টরিটি সবেমাত্র ভার্চুয়ালেনভ তৈরি করেছি আমরা সেখানে চলে যাই
cd ENV-nombreAPP
আমরা এই ডিরেক্টরিতে অ্যাপ্লিকেশনটি অনুলিপি করি এবং এখন আমরা পরিবেশটি সক্রিয়করণের সাথে এগিয়ে যাচ্ছি:
source bin/activate
প্রম্পটটি এখন দেখতে হবে (ENV)usuario@host:
এর ফলে , সিস্টেম প্যাকেজগুলোকে প্রভাবিত না করেই আমাদের সমস্ত কাজ এখন থেকে /var/www/ENV-appname/ ডিরেক্টরিতে সংরক্ষিত হবে।
এখন আমরা অ্যাপ্লিকেশন ডিরেক্টরিতে চলেছি:
cd nombreApp
আমরা অ্যাপ্লিকেশন নির্ভরতা (যদি প্রয়োজন হয়) এর তালিকা ইনস্টল করতে এগিয়ে যাই, যাতে সেগুলি ফাইলে নির্দিষ্ট করা হয় প্রয়োজনীয়গুলি.txt:
pip install -r requirements.txt
আমরা পৃথকভাবে প্যাকেজ ইনস্টল করতে পারি, উদাহরণস্বরূপ, এর সংযোগকারী ইনস্টল করতে PostgreSQL:
pip install psycopg2
GUnicorn ইনস্টলেশন ও কনফিগারেশন:
এটি ইনস্টল করতে আমরা এটি একইভাবে করি:
pip install gunicorn
এবার চলুন এটি কনফিগার করা যাক। এর জন্য, আমরা আমাদের অ্যাপ্লিকেশনের রুটে gunicorn-deploy.py নামে একটি ফাইল তৈরি করব (যদিও ফাইলের নাম যেকোনো কিছু হতে পারে) এবং তাতে নিম্নলিখিত বিষয়বস্তু রাখব:
bind = "127.0.0.1:8001" # dirección a donde accederá Nginx
logfile = "/var/www/logs/nombreApp/gunicorn.log" # dirección donde estarán los logs de la aplicación
workers = 1 # dependerá en medida de la carga de trabajo que tenga la aplicación, también depende del hardware con que se cuente
loglevel = 'info' # tipo de logging
সুপারভাইজার কনফিগারেশন:
এখন চলুন supervisord কনফিগার করা যাক ; তার জন্য, আমরা কনফিগারেশন ফাইলটি তৈরি করব
echo_supervisord_conf > /etc/supervisord.conf
এখন আমরা কনফিগারেশন ফাইলটি সম্পাদনা করি:
vim /etc/supervisord.conf
এবং আমরা অপসারণের মাধ্যমে নিম্নলিখিত লাইনগুলিকে uncomment; (সেমিকোলন):
[ইউনিক্স_এইচটিপি_সভার] ফাইল = / টিএমপি / সুপারভাইজার.সক [সুপারভাইজার] লগফিল = / ভার / লগ / সুপারভাইসর.লগ লগফিল_ম্যাক্সবিটস = 50 এমবি লগফিল_ব্যাকআপস = 10 লগলিভেল = ডিবাগ পিডফাইল = / ভার / চালান / সুপারভাইসর্ড.পিড নোডেমোন = মিথ্যা মিনফোকস = 1024 = 200 [আরপিসিইন্টারফেস: তত্ত্বাবধায়ক] সুপারভাইজার.আরপিসিন্টারফেস_ফ্যাক্টরি = সুপারভাইজার.আরপিসিনটারফেস: মেক_মাইন_আরপিসিনটারফেস [সুপারভাইসেক্টর] সার্ভারল = ইউনিক্স: [প্রোগ্রাম: অ্যাপনাম] কমান্ড = / ভেরি / www / এএনভি-অ্যাপনাম / বিন / জ্যাঞ্জো_উইনকর্ন -সিআর -অ্যাপনাম / অ্যাপনাম / গ্যানিকর্ন-ডেপ্লু.পি ডিরেক্টরি = / ভের / www / এনভি-অ্যাপনাম / অ্যাপনাম / অটোস্টার্ট = সত্য অটোস্টার্ট = সত্য ব্যবহারকারী = ব্যবহারকারীর নাম পুনঃনির্দেশ_স্তাদক = সত্য স্টডআউট_লগফাইল = / ভের / www / লগস / অ্যাপনাম / সুপারভাইজার.লগ
এখন আমরা সিস্টেম দিয়ে শুরু করার জন্য সুপারভাইজারের জন্য স্ক্রিপ্ট তৈরি করব, তার জন্য আমরা ফাইলটি তৈরি করব:
vim /etc/init.d/supervisord
এবং আমরা নিম্নলিখিত বিষয়বস্তু যুক্ত:
# সুপারভাইজার অটো-স্টার্ট # # বিবরণ: অটো-সুপারভাইজার # প্রসেসনাম: সুপারভাইজার # পিডফিল: /var/run/supervisord.pid সুপারভিসার্ড = / usr / লোকাল / বিন / সুপারভাইজার SUPERVISORCTL = / ইউএসআর / লোকাল / বিন / সুপারভাইসেক্টল কেস $ শুরুতে 1) প্রতিধ্বনি -n "সুপারভাইজার শুরু করা:" UP সুপারভাইজার্ড প্রতিধ্বনি ;; স্টপ) প্রতিধ্বনি -n "স্টপিং সুপারভাইজার:" UP সুপারভাইসরটিএল শাটডাউন ইকো ;; পুনঃসূচনা) এনকো -n "সুপারভাইজার থামানো:" UP সুপারভাইসরটিএল শাটডাউন ইকো-এন "সুপারভাইজার শুরু করা:" UP সুপারভাইজার্ড ইকো ;; যে সি
এবং এখন আমরা ফাইলটিতে এক্সিকিউট অনুমতি প্রদান করি যাতে এটি সিস্টেমের সাথে শুরু করতে পারে:
sudo chmod +x /etc/init.d/supervisord
পরিষেবাটি শুরু করতে আমরা লিঙ্কগুলি আপডেট করি:
sudo update-rc.d supervisord defaults
আমরা পরিষেবাটি শুরু করি:
sudo /etc/init.d/supervisord start
এনগিনেক্স সেটআপ করা হচ্ছে:
এই ধাপটিও বেশ সহজ; আমরা আমাদের অ্যাপ্লিকেশনের জন্য নিম্নলিখিত এনজিনএক্স কনফিগারেশন ফাইলটি তৈরি করব:
vim /etc/nginx/sites-enabled/nombreApp
এবং আমরা আপনাকে নিম্নলিখিত লিখিত সামগ্রী যুক্ত করব
সার্ভার {শোন 9001; # পোর্ট যেখানে তারা nginx সার্ভার_নাম www.domain.com শুনতে চায়; # বা 192.168.0.100, ঠিকানা যা আমরা অ্যাক্সেস_লগ /var/log/nginx/Appname.access.log অ্যাক্সেস করব; # যেখানে আমাদের অ্যাপ্লিকেশন লগের অবস্থান / {# থাকবে যেখানে www.dominio.com/ প্রক্সি_পাস http://127.0.0.1:8001 অ্যাক্সেস করার সময় nginx কল করবে; প্রক্সি_সেট_হেডার হোস্ট $ http_host; / অবস্থান / স্ট্যাটিক / {# যেখানে আমরা www.dominio.com/static/ ওরফে / var / www / ENV- অ্যাপনাম / অ্যাপনাম / স্ট্যাটিকফিলস / প্রবেশ করানোর সময় nginx অ্যাক্সেস করবে; }}
এবং আমরা nginx পুনঃসূচনা:
service nginx restart
জ্যাঙ্গো স্থাপন করা:
আসুন জাজানো কনফিগারেশন ফাইলটি পরিবর্তন করুন:
vim nombreApp/settings.py
আমরা DEBUG = True লেখা লাইনটি খুঁজি এবং এর মান পরিবর্তন করে DEBUG = False রাখি ।
আমরা ডিবি পরামিতি যুক্ত করি:
DATABASES = default 'ডিফল্ট': EN 'ENGINE': 'django.db.backends.postgresql_psycopg2', # বা মাইএসকিএল, বা যা কিছু তারা 'NAME': 'ডিবি নাম', 'ব্যবহারকারী': 'ডিবিউজার', 'পাসওয়ার্ড' ব্যবহার করছে : 'পাসওয়ার্ড ডিবি', 'হোস্ট': 'লোকালহোস্ট', # বা যাদের তাদের 'পোর্ট' দরকার: '', # বা তারা যেটি ব্যবহার করছে}}
আমরা ALLOWED_HOSTS=[] লাইনটি খুঁজি এবং এর সাথে সেই ডোমেইন বা ঠিকানাটি যোগ করি যার মাধ্যমে আমরা এটি অ্যাক্সেস করব, ফলে এটি ALLOWED_HOSTS=['www.domain.com']- এর মতো দেখায়।
আমরা স্ট্যাটিক ফাইলগুলির জন্য ডিরেক্টরিটি কনফিগার করি, আমরা বলার মতো লাইনটি সন্ধান করি STATIC_ROOT = ' ' এবং আমরা মানটি পরিবর্তন করি, যেখানে আমাদের স্থিতিশীল ফাইলগুলি দেখতে চাই সেই নিখুঁত পাথ রেখে, আমার ক্ষেত্রে আমি এটিকে কমবেশি ছেড়ে দিয়েছি STATIC_ROOT='/var/www/ENV-nombreApp/nombreApp/statics/'
প্রায় শেষ, আমরা নিম্নলিখিত কমান্ড কার্যকর:
./manage.py collectstatic
এটি settings.py- তে আমাদের নির্দিষ্ট করা পাথে ' statics' নামের একটি ফোল্ডার তৈরি করবে , যেখানে আমাদের সমস্ত স্ট্যাটিক ফাইলগুলো থাকবে।
এবং পরিশেষে আমরা নতুন পরিবর্তনগুলি নিতে সুপারভাইজারটিকে পুনরায় চালু করি:
supervisorctl restart nombreApp
এবং এটি হবে, শেষ পর্যন্ত এটি একটি বড় চুক্তি ছিল না, তাই না? এটা আমার কাছে সহজ মনে হলো
আমি আশা করি এটি আপনার জন্য দরকারী, শুভেচ্ছা