আপনি কী অ্যাপাচি / পিএইচপি কনফিগারেশন জানেন এবং সেগুলি কতটা ভাল?


8

আমি আপনাকে পিএইচপি / অ্যাপাচি কনফিগারেশন পদ্ধতিগুলি সম্পর্কে জানতে চেয়েছি, তাদের নীতি এবং কুফলগুলি। আমি নিজেকে শুরু করব:

---------------- পিএইচপি অ্যাপাচি মডিউল হিসাবে ----------------

পেশাদাররা : ভাল গতি যেহেতু আপনাকে প্রতিবারই বিশেষ করে এমপিএম-কর্মী মোডে শুরু করতে হবে না । আপনি এপিসি বা ইএক্সিলেটরের মতো এই মোডে বিভিন্ন পিএইচপি এক্সিলারসও ব্যবহার করতে পারেন ।

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

---------------- সিজিআই হিসাবে পিএইচপি ----------------

এটি মনে হচ্ছে ধীরতম ডিফল্ট কনফিগারেশন যা নিজেকে "কন" বলে মনে হয়;)

---------------- পিএইচপি mod_suphp মাধ্যমে সিজিআই হিসাবে ----------------

পেশাদাররা : suphp আপনাকে স্ক্রিপ্ট ফাইলের মালিকের পক্ষে পিএইচপি স্ক্রিপ্টগুলি সম্পাদন করতে দেয় allows এইভাবে আপনি নিরাপদে একই মেশিনে বিভিন্ন সাইট আলাদা করতে পারবেন। এছাড়াও, suphp ভার্চুয়াল হোস্টে বিভিন্ন php.ini ফাইল ব্যবহার করতে দেয়।

কনস : সিজিআই মোডে পিএইচপি মানে কম পারফরম্যান্স। এই মোডে আপনি এপিসির মতো পিএইচপি এক্সিলারস ব্যবহার করতে পারবেন না কারণ প্রতিবার নতুন প্রক্রিয়াটি পূর্ববর্তী প্রক্রিয়াটির ক্যাশে রেকর্ডিংয়ের স্ক্রিপ্ট হ্যান্ডেল করতে উত্পন্ন হয়। বিটিডাব্লু, আপনি কি এই কনফিগারেশনে কিছু এক্সিলারেটর প্রয়োগের উপায় জানেন? আমি পিএইচপি বাইটকোড ক্যাশে shm ব্যবহার সম্পর্কে কিছু শুনেছি। এছাড়াও, আপনি এই মোডে .htaccess ফাইলগুলির মাধ্যমে পিএইচপি কনফিগার করতে পারবেন না। আপনি যদি .htaccess (পিএইচপি_ভ্যালু / পিএইচপি_ফ্লাগ নির্দেশিকা) এর মাধ্যমে প্রতি স্ক্রিপ্টের বিভিন্ন বিকল্প সেট করার প্রয়োজন হয় তবে এর জন্য আপনাকে পি ইসিএল এইচটিএস্ক্যানার ইনস্টল করতে হবে

---------------- পিএইচপি সিকেক্সের মাধ্যমে সিজিআই হিসাবে ----------------

এই কনফিগারেশনটি supp এর মতো দেখতে দেখতে, তবে আমি শুনেছি যে এটি ধীর এবং কম নিরাপদ। প্রায় একই উপকারিতা এবং কনস প্রয়োগ হয়।

---------------- পিএইচপি হিসাবে ফাস্টসিজিআই ----------------

পেশাদাররা : ফাস্টপিজিআই মানক পিএইচপি প্রক্রিয়াটি মারা যাওয়ার আগে একক পিএইচপি প্রক্রিয়াটিকে বেশ কয়েকটি স্ক্রিপ্ট পরিচালনা করতে দেয়। প্রতিটি স্ক্রিপ্টের জন্য নতুন পিএইচপি প্রক্রিয়া স্পিন করার প্রয়োজন নেই বলে আপনি এইভাবে পারফরম্যান্স অর্জন করতে পারেন। আপনি এই কনফিগারেশনে পিএইচপি এক্সিলারসও ব্যবহার করতে পারেন (মন্তব্যের জন্য কনস বিভাগ দেখুন)। এছাড়াও, এফসিজিআই প্রায় সুপথের মতো পিএইচপি প্রসেসগুলি কিছু ব্যবহারকারীর পক্ষে কার্যকর করার অনুমতি দেয়। Mod_fcgid এপাশের জন্য সবচেয়ে সম্পূর্ণ fcgi সমর্থন এবং নমনীয়তা বলে মনে হচ্ছে।

কনস : ফাস্টসিগি মোডে পিএইচপি এক্সিলিটর ব্যবহারের ফলে উচ্চ মেমরির খরচ হবে কারণ প্রতিটি পিএইচপি প্রক্রিয়াটির নিজস্ব বাইকোড ক্যাশে থাকবে (যদি না এমন কিছু এক্সিলার রয়েছে যা বাইটোকোড ক্যাশে ভাগ করে নেওয়া মেমরি ব্যবহার করতে পারে। তবে কি আছে?)। ফাস্টসিজিআই কনফিগার করতেও কিছুটা জটিল। আপনাকে বিভিন্ন কনফিগারেশন ফাইল তৈরি করতে হবে এবং কিছু কনফিগারেশন পরিবর্তন করতে হবে।

দেখে মনে হচ্ছে, ফাস্টসিজি সবচেয়ে স্থিতিশীল, সুরক্ষিত, দ্রুত এবং নমনীয় পিএইচপি কনফিগারেশন, তবে কনফিগার করা কিছুটা কঠিন difficult কিন্তু, হতে পারে, আমি কিছু মিস করেছি?

মন্তব্য স্বাগত!

উত্তর:


3

ফাস্টসিজিআইয়ের মাধ্যমে পিএইচপি চালানো অবশ্যই আপনাকে সবচেয়ে নমনীয়তা দেবে। আপনি কেবল এমপিএম-কর্মী অ্যাপাচি নিরাপদে ব্যবহার করতে পারবেন না, এমনকি আপনি সম্পূর্ণরূপে অন্য একটি ওয়েবসার্ভার ব্যবহার করতে পারেন (যেমন এনজিনেক্স)।

তবে আপাচে থাকাকালীনও, "পিএসপিপি মাধ্যমে ফাস্টসিজিআই" এই মুহুর্তে একটি বিকল্প নয়, কমপক্ষে দুটি: মোড_ফেসটগি, মোড_ফসিজিড। তার উপরে, আপনি হয় ডায়নামিক, স্ট্যাটিক বা বাহ্যিক ফাস্টসিজিআই প্রক্রিয়াগুলি ব্যবহার করতে পারেন; সঙ্গে বা suexec ছাড়া। এবং তারপরে পিএইচপি-র অভ্যন্তরীণ ফাস্টসিজিআই প্রক্রিয়া পরিচালক রয়েছে যা এখন পিএইচপি 5.3 - এ খুব সুন্দর পিএইচপি-এফপিএম দ্বারা প্রতিস্থাপিত হয়েছে । এই সমস্ত বিকল্পের বিভিন্ন উপকারিতা এবং কনস রয়েছে এবং বিভিন্ন সমস্যা হতে পারে।

পছন্দটি দেওয়া হয়েছে, আমি এই মুহুর্তে পিএইচপি-এফপিএমের সাথে মোড_ফেষ্টকি বেছে নেব, বেশিরভাগ কারণ এটি অত্যন্ত বহুমুখী এবং স্থিতিশীল সেটআপের জন্য অনুমতি দেয় allows


1
> আমি পিএইচপি-এফপিএম দিয়ে mod_fcgid বেছে নেব এটি আপনাকে এপিসি ব্যবহার থেকে বিরত করবে। কেবল মোড_ফেষ্টগিই বাহ্যিক এফসিজিআই সার্ভারগুলি (যা পিএইচপি-এফপিএম) ব্যবহার করার অনুমতি দেয়। আপনি যদি mod_fcgid ব্যবহার করেন তবে php-fpm দ্বারা প্রদত্ত সমস্ত সুবিধা শূন্য হবে।
ভ্লাদিস্লাভ রাস্ট্রুসনি

এটি অবশ্যই একটি নির্বোধ টাইপ ছিল। বিভ্রান্তির জন্য দুঃখিত, আমি এটি সংশোধন করেছি।
আর্ল

2

আপনার প্রশ্নের উত্তর সত্যিই দেওয়া হচ্ছে না, তবে ফাস্টসিজিআই কনফিগার করা কঠিন হওয়া সম্পর্কে আমি এই জিনিসটি পাই না। এটি পৃথক যে অন্যান্য পদ্ধতিগুলির এটি প্রতিস্থাপন করা উচিত (mod_php, mod_python, ...) তাই কোডের একটি অংশ পুনরায় লেখার প্রয়োজন হতে পারে। এটি শক্ত অংশ হতে পারে, তবে অ্যাপাচি কনফিগার করার জন্য, কমপক্ষে, আমি এটি একটি খিঁচুনি মনে করি। উদাহরণ হিসাবে, আমি পাইথনে একটি ডাব্লুএসজিআই অ্যাপ্লিকেশন পরীক্ষা করছিলাম এবং আমি দেখতে চেয়েছিলাম যে ডাব্লুএসজিআই সমর্থন করে এমন সমস্ত প্রোটোকল দিয়ে এটি কীভাবে সম্পাদন করে। সমস্ত প্রোটোকলের (এর সাথে mod_fastcgi) কনফিগারেশন সহ ভার্চুয়াল হোস্ট ফাইলটি এখানে রয়েছে :

<VirtualHost *:8888>
DocumentRoot "/home/test/"
#FastCGIExternalServer /home/test/wsgi -host 127.0.0.1:3333
#SCGIMount / 127.0.0.1:3333
FastCgiServer /home/test/wsgi/fcgi.py -idle-timeout 60 -processes 1
<Directory "/home/test/wsgi/">
    Options +ExecCGI +FollowSymLinks
    AddHandler fastcgi-script .py
    #AddHandler wsgi-script .py
    #AddHandler cgi-script .py
</Directory>
</VirtualHost>

এটা আমার কাছে জটিল মনে হয় না। অবশ্যই, ফাস্টসিজিআই অনেকগুলি বিকল্প সমর্থন করে এবং এটি মৃত্যুর দিকে ঝুঁকতে পারে, তবে এটি অন্য বিষয়।

চালানো একটি পৃথক ব্যবহারকারী হিসাবে, suexec ব্যবহার করুন এবং FastCGIWrapperতারপরে এটি হয়ে যায়:

FastCGIWrapper On
<VirtualHost *:8888>
SuexecUserGroup test test
DocumentRoot "/home/test/"
FastCgiServer /var/www/test/fcgi.py -idle-timeout 60 -processes 1
<Directory "/var/www/test/">
    Options +ExecCGI +FollowSymLinks
    AddHandler fastcgi-script .py
</Directory>
</VirtualHost>

এবং একটি কাস্টম php.ini এর জন্য এই লিঙ্কটি দেখুন , তবে আপনি -initial-envবিকল্প হিসাবে এটি নির্দিষ্ট করতে সক্ষম হওয়া উচিত , যেমন

FastCgiServer /var/www/test/fcgi.py -idle-timeout 60 -processes 1 -inital-env PHPRC=/blah/

হ্যাঁ, অ্যাপাচে কনফিগার যোগ করা সহজ। তবে আপনার কনফিগারেশনটি তাদের মালিকের পক্ষ থেকে বা কমপক্ষে নির্দিষ্ট ব্যবহারকারীর পক্ষ থেকে স্ক্রিপ্টগুলি চালানোর অনুমতি দেয় না। এছাড়াও, কাস্টম php.ini আপনার ক্ষেত্রে ব্যবহার করা যাবে না (আমি কেবল তার ডিরেক্টরিতে প্রতিটি ভার্চুয়াল হোস্টের জন্য ওপেন_বেসাদিরকে সীমাবদ্ধ রাখতে পছন্দ করি)
ভ্লাদিস্লাভ রাস্ট্রুসনি

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

উত্তরে অতিরিক্ত তথ্য যুক্ত করা হয়েছে।
ড্যান অ্যান্ড্রিটা

1

ভাল প্রার্থী হ'ল: অ্যাপাচি 2 আইটিকে এমপিএম

apache2-mpm-itk (সংক্ষিপ্ততার জন্য কেবলমাত্র এমপিএম-ইটক) অ্যাপাচি ওয়েব সার্ভারের জন্য একটি এমপিএম (মাল্টি-প্রসেসিং মডিউল)। এমপিএম-ইটক আপনাকে আপনার প্রতিটি ভোস্টকে পৃথক uid এবং gid এর অধীনে চালনা করতে দেয় - সংক্ষেপে, এক vhost এর জন্য স্ক্রিপ্ট এবং কনফিগারেশন ফাইলগুলি অন্য সমস্ত vhosts এর জন্য আর পঠনযোগ্য হবে না।

আমাদের প্রচুর ক্লায়েন্টের একজনের পক্ষে শত শত ভার্চুয়ালহোস্টের সাথে বেশ কয়েকটি দর্শকের সাথে খুব ভাল কাজ করেছে।

আপনি একটি মডিউল হিসাবে পিএইচপি চালানো থেকে সমস্ত পেশাদার পেতে এবং কিছু বিভক্তি বাছাই।


হ্যাঁ, তবে এক বছর আগে সর্বশেষ আপডেট হয়েছে। আর এর চেয়েও গুরুত্বপূর্ণ বিষয়টি সম্ভাব্য সুরক্ষা পুরোপুরি উন্মুক্ত করে। "যেহেতু এমপিএম-ইটকে সেটুয়েড করতে সক্ষম হতে হবে (), অনুরোধটি বিশ্লেষণ এবং ভোস্ট নির্ধারিত না হওয়া পর্যন্ত এটি রুট হিসাবে চলবে (যদিও পসিক্স সক্ষমতার সাথে সীমাবদ্ধ থাকবে) যতক্ষণ না অনুরোধটি বিশ্লেষণের আগে কোনও সুরক্ষা গর্ত হবে একটি রুট নিরাপত্তা গর্ত (সম্ভবত জায়গা mod_ssl সম্ভবত নেই।) "।
Vladislav Rastrusny

কোডটি কাজ করে, খুব স্থিতিশীল এবং সম্ভবত এটি আপডেট করার কোনও কারণ নেই। মডিউলটি একটি সক্রিয় দেবিয়ান বিকাশকারী পেয়েছেন (মূল বিকাশকারী সম্পর্কে জানেন না)। এবং এটি FOSS এবং খুব জটিল নয়।
rkthkr

0

আমার কাছে, প্রশ্নটি হ'ল ওয়েব সার্ভারের উদ্দেশ্য কী। এটি কি একাধিক ভার্চুয়াল হোস্ট পরিবেশন করছে? যদি তা হয় তবে বিচ্ছিন্ন সুরক্ষার জন্য আপনাকে পারফরম্যান্স ত্যাগ করতে হবে। হ্যাঁ পারফরম্যান্স ক্ষতিগ্রস্থ হয়, তবে আজকের হার্ডওয়্যারের সাথে বড় পারফরম্যান্সের সমস্যাগুলি আনতে এখনও ট্র্যাফিকের বেশ খানিকটা সময় নেওয়া উচিত।

যদি পারফরম্যান্সটি গুরুত্বপূর্ণ হয় তবে ভিপিএস বা উত্সর্গীকৃত সার্ভারে একটি সাইট চালনা করুন এবং কার্য সম্পাদনের জন্য কনফিগার করুন।


আমি কেবল সম্ভাব্য রূপগুলি সম্পর্কে জিজ্ঞাসা করি। সেরাটি বেছে নেওয়ার বিষয়ে নয়। আমি নিজেই বেছে নেব।
ভ্লাদিস্লাভ রাস্ট্রুসনি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.