CherryPy একটি পাইথন-ভিত্তিক ওয়েব ফ্রেমওয়ার্ক, যা ছোট এবং মাঝারি আকারের অ্যাপ্লিকেশন দ্রুত তৈরি এবং ডেপ্লয় করার জন্য আদর্শ। তবে যখন এটি উৎপাদন (production) পরিবেশে ডেপ্লয় করার কথা আসে, তখন কিছু অতিরিক্ত পদক্ষেপ নিতে হয় যাতে অ্যাপ্লিকেশন সঠিকভাবে এবং নিরাপদে চলতে পারে। CherryPy অ্যাপ্লিকেশন ডেপ্লয়মেন্টের জন্য বেশ কিছু ভিন্ন পদ্ধতি রয়েছে, এবং এটির সাথে বিভিন্ন সার্ভার এবং কনফিগারেশন টুল ব্যবহার করা যেতে পারে।
এখানে CherryPy অ্যাপ্লিকেশন ডেপ্লয়মেন্টের জন্য বিভিন্ন পদ্ধতি আলোচনা করা হবে।
CherryPy অ্যাপ্লিকেশন ডেপ্লয়মেন্টের জন্য কিছু সাধারণ পদক্ষেপ
- CherryPy সঠিকভাবে কনফিগারেশন করা
- অ্যাপ্লিকেশন ওয়েব সার্ভারে ডেপ্লয় করা
- প্রোডাকশন পরিবেশে CherryPy চালানোর জন্য WSGI ব্যবহার করা
- প্রোডাকশন সার্ভারের জন্য Nginx বা Apache ব্যবহার করা
- অ্যাপ্লিকেশন মনিটরিং এবং লোগিং
1. CherryPy অ্যাপ্লিকেশন কনফিগারেশন করা
CherryPy এর ডিফল্ট HTTP সার্ভার প্রোডাকশন পরিবেশের জন্য উপযুক্ত নয়, কারণ এটি থ্রেডিং এবং অন্যান্য উন্নত কনফিগারেশন সমর্থন করে না। তাই প্রোডাকশনে CherryPy অ্যাপ্লিকেশন ডেপ্লয় করার সময় WSGI (Web Server Gateway Interface) ব্যবহার করা হয়।
CherryPy কনফিগারেশন উদাহরণ
import cherrypy
class MyApp:
@cherrypy.expose
def index(self):
return "স্বাগতম CherryPy অ্যাপ্লিকেশনে!"
if __name__ == '__main__':
cherrypy.config.update({
'server.socket_host': '0.0.0.0', # সব আইপি থেকে অ্যাক্সেসযোগ্য
'server.socket_port': 8080, # পোর্ট নাম্বার
'log.access_file': './logs/access.log', # অ্যাক্সেস লগ ফাইল
'log.error_file': './logs/error.log', # ত্রুটি লগ ফাইল
'engine.autoreload.on': False # রিলোড বন্ধ
})
cherrypy.quickstart(MyApp())
এখানে:
server.socket_host: সব আইপি থেকে অ্যাপ্লিকেশন অ্যাক্সেসযোগ্য হতে0.0.0.0ব্যবহার করা হয়।server.socket_port: সার্ভারের পোর্ট নম্বর নির্ধারণ করা হয়।engine.autoreload.on: প্রোডাকশনে অটো রিলোড বন্ধ করা হয়।
2. CherryPy অ্যাপ্লিকেশন ওয়েব সার্ভারে ডেপ্লয় করা
WSGI (Web Server Gateway Interface) ব্যবহার করা
CherryPy এর WSGI সাপোর্ট ব্যবহার করে প্রোডাকশন পরিবেশে CherryPy অ্যাপ্লিকেশন চালানো হয়। WSGI সার্ভার যেমন Gunicorn, uWSGI বা mod_wsgi ব্যবহার করা যেতে পারে।
উদাহরণ: WSGI ফাইল তৈরি করা
from myapp import MyApp
import cherrypy
if __name__ == "__main__":
cherrypy.tree.graft(MyApp(), "/")
cherrypy.engine.start()
cherrypy.engine.block()
এখানে myapp হল আপনার অ্যাপ্লিকেশন মডিউল। এই WSGI ফাইলটি ওয়েব সার্ভার (যেমন Gunicorn বা uWSGI) এর মাধ্যমে ব্যবহৃত হবে।
3. Gunicorn ব্যবহার করে CherryPy অ্যাপ্লিকেশন ডেপ্লয় করা
Gunicorn (Green Unicorn) একটি WSGI HTTP সার্ভার, যা Python অ্যাপ্লিকেশনের জন্য দ্রুত এবং সক্ষম। Gunicorn ব্যবহারের মাধ্যমে CherryPy অ্যাপ্লিকেশন দ্রুত ডেপ্লয় করা যায়।
Gunicorn ইনস্টল এবং ব্যবহার
pip install gunicorn
Gunicorn দিয়ে CherryPy অ্যাপ চালানো
gunicorn -w 4 myapp:app
এখানে:
-w 4: ৪টি ওয়র্কার থ্রেড ব্যবহার করার জন্য।myapp:app:myapp.pyফাইল থেকে অ্যাপ্লিকেশন লোড করা হয়।
4. Apache অথবা Nginx ব্যবহার করে CherryPy ডেপ্লয়
Nginx দিয়ে CherryPy অ্যাপ্লিকেশন প্রোক্সি করা
প্রোডাকশন পরিবেশে CherryPy অ্যাপ্লিকেশন চালানোর জন্য, Nginx সাধারণত একটি রিভার্স প্রোক্সি সার্ভার হিসেবে ব্যবহৃত হয়। এটি ওয়েব সার্ভার হিসাবে কাজ করে এবং Gunicorn বা CherryPy এর মতো অ্যাপ্লিকেশন সার্ভারের সামনে দাঁড়িয়ে থাকে।
Nginx কনফিগারেশন উদাহরণ:
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://127.0.0.1:8080; # CherryPy অ্যাপ্লিকেশন প্রোক্সি করা
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
এখানে:
proxy_pass: এটি Nginx কে অ্যাপ্লিকেশন সার্ভারের (যেমন CherryPy) পোর্টে রিকোয়েস্ট পাঠাতে বলে।
5. CherryPy অ্যাপ্লিকেশন মনিটরিং এবং লোগিং
Log Rotation এবং Error Handling
প্রোডাকশন পরিবেশে অ্যাপ্লিকেশন পরিচালনার জন্য লোগিং অত্যন্ত গুরুত্বপূর্ণ। CherryPy তে লোগিং কনফিগারেশন সহজেই সেট করা যায়। অ্যাপ্লিকেশনের ত্রুটি এবং অ্যাক্সেস লগ কনফিগার করার মাধ্যমে ডিবাগিং এবং মনিটরিং সহজ হয়।
CherryPy লোগিং কনফিগারেশন উদাহরণ
cherrypy.config.update({
'log.access_file': './logs/access.log',
'log.error_file': './logs/error.log',
'log.screen': False, # স্ক্রীনে লগ দেখানো হবে না
'log.rotation.when': 'D', # প্রতি দিন লোগ ফাইল রোটেট হবে
'log.rotation.interval': 1,
'log.rotation.backups': 7 # সর্বাধিক ৭টি ব্যাকআপ রাখা হবে
})
এখানে লোগ ফাইলের রোটেশন কনফিগার করা হয়েছে, যা লোগ ফাইলের আকার বড় হলে নতুন একটি ফাইল তৈরি করবে এবং পুরনো ফাইলগুলো সংরক্ষণ করবে।
CherryPy অ্যাপ্লিকেশন ডেপ্লয়মেন্ট প্রক্রিয়া বেশ সরল এবং সুসংগঠিত। Gunicorn এবং WSGI ব্যবহার করে CherryPy অ্যাপ্লিকেশন প্রোডাকশন পরিবেশে দ্রুত ডেপ্লয় করা যায়, যেখানে Nginx বা Apache প্রোক্সি সার্ভার হিসেবে কাজ করতে পারে। CherryPy অ্যাপ্লিকেশনকে স্থিতিশীল এবং নিরাপদে পরিচালনা করতে মনিটরিং এবং লোগিং ব্যবস্থারও গুরুত্ব রয়েছে।
Read more