সবাইকে শুভেচ্ছা জানাই, এটা আমার প্রথম লেখা <» DesdeLinux (de varios que tengo en mis borradores xD), espero les sea de utilidad 😀
ঠিক আছে, আমার নতুন এবং বর্তমান চাকরিতে, এই মুহুর্তে জাজানগোতে বেশ কয়েকটি সিস্টেমের স্থানান্তরিত হচ্ছে (কত আশ্চর্য এহ ?? এক্সডি) এবং উন্নয়ন ব্যতীত আমার একটি কাজ এগুলি প্রযোজনায় ফেলেছে, তবে কতটা ভাল শিক্ষানবিস, যেহেতু এটিই প্রথমবারের মতো সত্যিকারের সার্ভারে প্রযোজনায় একটি অ্যাপ্লিকেশন রাখছিলাম: $ আমি স্ট্যাকের প্রতিটি প্রয়োজনীয় প্যাকেজ (গুনিকর্ন এবং সুপারভাইজার্ড বেশিরভাগ) এর অফিসিয়াল ডকটি পড়া শুরু করেছিলাম এবং এই টিউটোরিয়ালগুলি দেখে স্প্যানিশ তারা কিছু দিক থেকে আমার কাছে খুব স্পষ্ট ছিল না, আমি জ্যাঙ্গো, গ্যানিকর্ন, সুপারভাইজার্ড, এনগিনেক্স এবং পোস্টগ্র্যাস্কিল স্ট্যাকের ভিত্তিতে অ্যাপ্লিকেশনটিকে উত্পাদনের জন্য যে পদক্ষেপগুলি অনুসরণ করেছি তার সাথে একটি মিনি গাইড তৈরি করার সিদ্ধান্ত নিয়েছিলাম।
আমি যেখানে কাজ করি সে ক্ষেত্রে সার্ভারগুলি এখনও ডেবিয়ান স্কুইজে চালিত হয় তবে গাইডটি অন্য বিতরণগুলির জন্য পুরোপুরি বৈধ হওয়া উচিত ... সুতরাং আসুন সরাসরি বিন্দুতে এসে শুরু করুন:
আমি সুপার ইউজার হিসাবে কাজ করব। প্রথমত, নিম্নলিখিত প্যাকেজগুলির প্রয়োজন:
বীচি -> পাইথনের জন্য প্যাকেজ ইনস্টল ও পরিচালনা করার সরঞ্জাম
aptitude install python-pip
nginx -> ওয়েব সার্ভার (আমরা এটিকে বিপরীত প্রক্সি হিসাবে ব্যবহার করব এবং স্ট্যাটিক ফাইলগুলি 'আইএমজি, জেএসএস, সিএসএস' ক্যাশে করতে পারি) আমরা এটি দিয়ে এটি ইনস্টল করি:
aptitude install nginx
Supervisord -> আমাদের অ্যাপ্লিকেশন পরিচালনা ও নিরীক্ষণের জন্য অ্যাপ্লিকেশন, যদিও এটি অনেক বেশি ব্যবহৃত হয়। আমরা এটি দিয়ে এটি ইনস্টল করি:
aptitude install supervisor
ভার্চুয়ালেনভ -> এটি আমাদের আবেদনের জন্য কাস্টমাইজড ভার্চুয়াল এক্সিকিউশন পরিবেশ তৈরি করতে সহায়তা করে। আমরা এটি দিয়ে এটি ইনস্টল করি:
aptitude install python-virtualenv
গ্যানিকর্ন -> অজগর জন্য ওয়েব সার্ভার (আমরা এটি এখনও ইনস্টল করব না)
আমি ধরে নিলাম তাদের ইতিমধ্যে পোস্টগ্র্যাস্কল ইনস্টল করা এবং কনফিগার করা উচিত
সাইকোপজি 2 -> পাইথনের জন্য পোস্টগ্র্যাস্কিল সংযোগকারী (আমরা এটি এখনও ইনস্টল করব না)
ভার্চুয়ালেনভ দিয়ে ভার্চুয়াল পরিবেশ তৈরি করুন:
প্রথমে আমরা ওয়ার্কিং ডিরেক্টরিতে চলে যাচ্ছি যা আমরা উত্পাদনের জন্য ব্যবহার করব:
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
এনগিনেক্স সেটআপ করা হচ্ছে:
এই পদক্ষেপটিও বেশ সহজ, আমরা নিম্নলিখিত কনফিগারেশন ফাইলটি তৈরি করব nginx আমাদের আবেদনের জন্য:
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 = সত্য এবং আমরা মান পরিবর্তনবাকি ডিবাগ = মিথ্যা
আমরা ডিবি পরামিতি যুক্ত করি:
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 ', সেখানে আমাদের সমস্ত স্থির ফাইল থাকবে where
এবং পরিশেষে আমরা নতুন পরিবর্তনগুলি নিতে সুপারভাইজারটিকে পুনরায় চালু করি:
supervisorctl restart nombreApp
এবং সব হবে, শেষ পর্যন্ত এত সত্য ছিল না? এটা আমার কাছে সহজ মনে হয়েছিল 😀
আমি আশা করি এটি আপনার পক্ষে দরকারী, শুভেচ্ছা 😉
আমি বুঝতে পারি যে জাঙ্গো অ্যাপ্লিকেশনটি ওয়েব সার্ভার ফোল্ডারের (/ var / www) মূলের মধ্যে রাখা উচিত নয়? সুরক্ষার জন্য, আমি জানি না আমি ভুল করছি কিনা।
গ্রিটিংস।
ঠিক আছে !!! এটি এমন কিছু ছিল যা সম্পর্কে আমি সম্পূর্ণ অজানা ছিলাম, আমি এন্ট্রিটি আপডেট করব 😛 এবং সোমবার ফিরে আসার সাথে সাথে আমি এক্সডি অ্যাপ্লিকেশনটিতে পরিবর্তন করব
এবং Gracias
এপল ভাই ভাল টিউটোরিয়াল। সাম্প্রতিককালে আমি একই সাথে ছিলাম কিন্তু ডেবিয়ান 7 এ, আমাকে অনুসন্ধান বা কম বেশি পড়তে হয়েছিল। আমি আপনাকে পরামর্শ দিচ্ছি যে আপনি কোনও লুকানো ফোল্ডারে ব্যবহারকারীর বাড়িতে ভার্চুয়ালেনভের ভার্চুয়াল পরিবেশ তৈরি করুন।
গ্রিটিংস!
হাহাহা সিটিএম আমি গতকাল জ্যাঙ্গোর ডকুমেন্টিং করেছি এবং আপনি ইতিমধ্যে ছায়াপথটি পেরিয়ে যাচ্ছেন 999999 শুভেচ্ছা পুরুষদের এক্সডি
খুব ভাল নিবন্ধ =) মাত্র এক সপ্তাহ আগে আমি আমার জ্যাঙ্গো অ্যাপ্লিকেশনটি স্থাপন করেছি তবে আমি তা উউজি এবং এনজিনেক্স দিয়ে করেছি, আপনি কি জানেন যে গুনিকর্নের কী সুবিধা আছে? আমি এটি অনেক উল্লেখ দেখেছি।
জ্যাঙ্গো খুব জনপ্রিয় হয়ে উঠছে তা দেখে খুব ভাল লাগল, এটি আমি দেখেছি এটি সর্বোত্তম ফ্রেমওয়ার্ক =)
STATIC_ROOT এর জন্য আমি যা করি তা একটি গ্লোবাল ভেরিয়েবলকে সংজ্ঞায়িত করা হয়। এটার মতো কিছু:
import os
PROJECT_PATH = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(PROJECT_PATH, '../backend/static')
যেখানে ব্যাকএন্ড হ'ল একটি অ্যাপ্লিকেশন যা আমি তৈরি করেছি। তাই আমি নিশ্চিত হয়েছি যে যেখানে আমি প্রকল্পটি স্থাপন করছি, বিশ্বব্যাপী পথটি একই।
আকর্ষণীয়, আমি ভবিষ্যতে চেষ্টা করব।
যাইহোক, কেউ কীভাবে জ্যাঙ্গো অ্যাপ্লিকেশনটিতে উচ্চারণ এবং অ-এস্কি অক্ষরগুলি সক্ষম করতে হয় তা জানেন?
আমি সর্বত্র দেখেছি, নিম্নলিখিত পদ্ধতির কোনওটিই আমার পক্ষে কাজ করে না:
sys.setdeafultencoding ('utf-8') # সাইট.py এ
# - * - কোডিং: utf-8 - * - # প্রতিটি পাইথন ফাইলে
সাইট.পি সম্পাদনা করা এবং এসকিআই এর পরিবর্তে utf-8 স্থাপন করা কাজ করার কথা, তবে। ফাইল মডেল.পি আমাকে জানায় যে আমার ফাইলটি এখনও একটি আসকি ci
কোনও পরামর্শ?
এটা কাজ করেছে!!!!
খুব ভাল টিউটোরিয়াল তবে আপনি ইতিমধ্যে উত্পাদিত কোনও ওয়েব সার্ভারে কীভাবে আমার অ্যাপ্লিকেশন আপলোড করবেন তার একটি করতে পারেন
Gracias