উবুন্টু 16 এ প্রিফের্ক থেকে ইভেন্টে অ্যাপাচি স্যুইচ করুন, পিএইচপি 7 পেয়ে কাজ করুন


11

অ্যাপাচি উত্পাদনে ধীরগতিতে চলছিল। কিছুক্ষণ উত্তর অনুসন্ধানের পরে অবশেষে আমি # প্যাচ আইআরসি চ্যানেলে গেলাম এবং পেশাদাররা আমাকে এই কমান্ডটি দিয়ে অ্যাপাচি মোডটি পরীক্ষা করতে বাধ্য করেছে:

sudo apachectl -V

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

আপনার আর প্রিফোর্ক এমপিএম দিয়ে মোড_এফপি ব্যবহার করা উচিত নয়

  • mod_php সর্বদা প্রতিটি httpd প্রক্রিয়াতে লোড হয়। এমনকি যখন httpd স্থির / নন পিএইচপি কন্টেন্ট সরবরাহ করে, সেই মেমরিটি ব্যবহৃত হয়।
  • Mod_php থ্রেড নিরাপদ নয় এবং আপনাকে প্রিফার্ক এমপিএম (মাল্টি প্রসেস, কোনও থ্রেড নেই) দিয়ে আটকাতে বাধ্য করে, যা সম্ভবত সবচেয়ে ধীরে সম্ভব কনফিগারেশন

এই পৃষ্ঠায় পিএইচপি-এফপিএম সম্পর্কেও কিছু বিশদ রয়েছে তবে এটি কিছুটা বিস্তৃত এবং অস্পষ্ট বলে মনে হচ্ছে এবং অনেকগুলি ম্যানুয়াল কনফিগারেশন জড়িত বলে মনে হচ্ছে। আমি হতাশ এবং অবাক হয়েছি উবুন্টু 16 এর কাছে ফাস্টসিজিআই মোড বা কোনও কিছুর জন্য কোনও প্যাকেজ বিকল্প নেই।

আমি এ 2 মডেম ব্যবহার করে ইভেন্ট মোডে অ্যাপাচি স্যুইচ করার চেষ্টা করেছি এবং যখন আমি অ্যাপাচি ব্যাক আপ ফায়ার করার চেষ্টা করেছি তখন আমি একটি ত্রুটি পেয়েছি:

অ্যাপাচি থ্রেডেড এমপিএম চালাচ্ছে, তবে আপনার পিএইচপি মডিউলটি থ্রেডসেফ হতে সংকলিত হয়নি। আপনাকে পিএইচপি পুনরায় কম্পাইল করতে হবে

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

এছাড়াও, কোনও ব্যক্তির ট্যাগ বিকল্প হিসাবে এমপিএম-ইভেন্ট যুক্ত করা উচিত। এটিই # প্যাচ আইআরসি ছেলেরা সুপারিশ করেছে।


সর্বশেষ ত্রুটিটি হ'ল কারণ আপনি ইভেন্টে স্যুইচ করেছেন, তবে এখনও mod_php ব্যবহার করছেন। মোড_এফপি অক্ষম করুন এবং পিএইচপি-এফপিএম-এ স্যুইচ করুন এবং এটি চলে যাবে। এবং আমি nginx সুপারিশ করতে পারেন?
মাইকেল হ্যাম্পটন

@ মিশেলহ্যাম্পটন শিরোনামে পিএইচপি উল্লেখ করা উচিত। ইভেন্টে অ্যাপাচি স্যুইচ করা কঠিন নয়। ইভেন্টে অ্যাপাচি পরিবর্তন করা এবং পিএইচপি 7 কাজ করা কঠিন।
এস ইম্প

1
@ মিশেলহ্যাম্পটন নিশ্চয়ই বুঝতে পেরেছেন যে "মোড_এফপি নিষ্ক্রিয় করতে এবং পিএইচপি-এফএমপিতে স্যুইচ করতে" সম্পর্কে আমি বিভ্রান্ত। আমি কি আমার পোস্টে জিজ্ঞাসা করি না? এছাড়াও, প্রশ্নটি এনজিনেক্স সম্পর্কে নয়, যা শেখার আরও একটি ক্ষেত্র উপস্থাপন করে। এনজিনেক্সে স্যুইচ করা এই প্রকল্পের জন্য ব্যবহারিক নয় কারণ আমি একটি দলের সাথে কাজ করছি।
এস ইম্প

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

উত্তর:


15

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

প্রথমত, এই লেখাটি হিসাবে, উবুন্টুর অ্যাপাচি 2 প্যাকেজগুলি যদি আপনি পিএইচপি ইনস্টল করতে চান তবে প্রেফের্কের উপর জোর দেয়। হতাশ হবেন না, কারণ আপনি এখনও পিএইচপি এবং অ্যাপাচি 2 ইনস্টল করতে এবং আপডেট করতে প্যাকেজ ইনস্টলার ব্যবহার করতে পারেন এবং অ্যাপাচি উইকির দ্বারা প্রস্তাবিত হিসাবে পিএইচপি-এফপিএম ব্যবহার করে এবং আপনার হাই- তে আরও বিশদে বর্ণিত হিসাবে ইভেন্ট কনফিগারেশনটি অ্যাপাচি-র সাথে কাজ করতে পারেন- Mod_proxy_fcgi এবং php-fpm ব্যবহার করে অ্যাপাচি httpd 2.4.x এ পারফরম্যান্স পিএইচপি । মূল ধারণাটি হ'ল অ্যাপাচি 2 এবং পিএইচপি-এফপিএম অ্যাপাচি মডিউল হিসাবে চলমান পিএইচপি অপেক্ষা সকেটের মাধ্যমে যোগাযোগ করে।

1) অ্যাপাচি পিএইচপি মডিউল সরান বা অক্ষম করুন

যেহেতু উবুন্টু প্যাকেজগুলি পিএইচপি ইনস্টল করার সময় প্রিফার্ক অ্যাপাচিতে জোর দেয়, আমাদের সেগুলি আলাদা করতে হবে। Libapache2-mod-php7.0 আনইনস্টল করতে অ্যাপটি ব্যবহার করে আমি এটি করেছি কারণ আমার আর প্যাকেজটির প্রয়োজন নেই:

sudo apt-get remove libapache2-mod-php7.0

বিকল্পভাবে, আপনি তার পরিবর্তে php7.0 অ্যাপাচি মডিউলটি অক্ষম করতে পারেন, তবে এটি আপনার সিস্টেম থেকে অ্যাপ প্যাকেজটি সরিয়ে ফেলবে না, যা বিরক্তিকর সিস্টেম ক্রাফ্টের পিছনে ছেড়ে যায়।

sudo a2dismod php7.0

2) অ্যাপাচি ইভেন্ট মোডে স্যুইচ করুন এবং fcgid সক্ষম করুন

আমি বিশ্বাস করি এই আদেশগুলি কৌশলটি করা উচিত:

sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo a2enmod proxy_fcgi

3) পিএইচপি-এফপিএম ইনস্টল করুন

আমি ইতিমধ্যে পিএইচপি 7 এর বিভিন্ন মডিউল দিয়ে ইনস্টল করেছি, তাই আমি এই আদেশটি দিয়ে কেবল পিএইচপি-এফপিএম ইনস্টল করেছি:

sudo apt-get install php7.0-fpm

4) পিএইচপি-এফপিএম দিয়ে পিএইচপি ফাইল হ্যান্ডেল করতে আপনার ভার্চুয়ালহোস্ট কনফিগারেশন সম্পাদনা করুন:

আমার ক্ষেত্রে, আমি ডিফল্ট এসএসএল হোস্ট, / etc / apache2 / sites- উপলভ্য /default-ssl.conf সম্পাদনা করেছি এবং এই লাইনটি ঠিক উপরেই যুক্ত করেছি:

ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/run/php/php7.0-fpm.sock|fcgi://localhost/var/www/html/

গুরুত্বপূর্ণ এটি অ্যাপাচিকে পিএইচপি-এফপিআরএম-এর সাথে পিএইচপি ফাইল অনুরোধগুলি পরিচালনা করতে নির্দেশ দেয় এবং এই নির্দেশের পাথটি ( /run/php/php7.0-fpm.sock ) অবশ্যই ফাইল / ইত্যাদি / পিএইচপি-শোনার নির্দেশের দ্বারা নির্দিষ্ট পাথের সাথে মিলবে must /7.0/fpm/pool.d/www.conf

5) অ্যাপাচি পুনরায় চালু করুন

sudo service apache2 restart

ইভেন্ট মোড সক্ষম হয়েছে কিনা তা পরীক্ষা করতে, এই আদেশটি ব্যবহার করুন:

sudo apachectl -V

আউটপুটে, আপনার এটি দেখতে হবে:

Server MPM:     event

একটি phpinfo পৃষ্ঠা তৈরি এবং এটি আপনার ব্রাউজারে অ্যাক্সেস করার চেষ্টা করুন। আপনি Server API: FPM/FastCGIআউটপুট দেখতে হবে ।


5
আমি প্রস্তাব দিচ্ছি যে প্রক্সিপ্যাস ম্যাচটি ব্যবহার করবেন না, কারণ এটি ডিরেক্টরিতে .htaccess ব্যবহার করার অনুমতি দেয় না। পরিবর্তে এটি ব্যবহার করুন: <ফাইলম্যাচ \। Php $> সেটহ্যান্ডলার "প্রক্সি: ইউনিক্স: /run/php/php7.0-fpm.sock | এফসিজি: // লোকালহস্ট /" </FilesMatch>
waza123


আপনি যা করতে বলেছিলেন তার বিপরীতে যদি আমি এই ফাইলটি স্পর্শ না করি তবে কী হবে: /etc/apache2/sites-available/default-ssl.conf ,? খনি https এবং HTTP উভয়ই সূক্ষ্মভাবে কাজ করছে
user5858

আমি প্রক্সিপাস ম্যাচ ব্যতীত উত্তর অনুসরণ করেছি, @ waza123 এর মন্তব্য থেকে ফাইলস্যাচ লাইনটি 000-default.conf শীর্ষে যুক্ত করে অ্যাপাচি 2 পুনরায় চালু করেছি এবং সবকিছু সঠিকভাবে কাজ করছে। আপনাদের দুজনকেই ধন্যবাদ আমার ছোট ভিপিএস এমপিএম_প্রেফ্রোকের উপর একটি টোন মেমরি এবং সিপিইউ সঞ্চয় করছে
dw1

আমাকে উবুন্টু সার্ভার 19.10 দিয়ে প্রক্সিপাস বা ফাইল সম্পাদনা করতে হবে না। পদক্ষেপ 3 (পিএইচপি-এফপিএম ইনস্টল করার) পরে, আমি সবেমাত্র করেছি a2enconf /etc/apache2/conf-available/php7.3-fpm.conf; systemctl reload apacheএবং যখন আমি <?php phpinfo();ভিতরে দিয়ে একটি phpinfo.php ফাইল তৈরি করি তখন সার্ভার এপিআই লাইনটি এফপিএম / ফাস্টসিজিআই বলে। বিটিডাব্লু, আমি পিএইচপি 7.3 ইনস্টল করেছি কারণ এই পোস্টটি লেখার সময় কোনওটি কমপক্ষে সেই সংস্করণে থাকা উচিত, উচ্চতর না হলে এবং উবুন্টু সার্ভার 19.10 এর জন্য উবুন্টু অ্যাপ্ট্রি সংগ্রহস্থলগুলি বর্তমানে পিএইচপি 7.3-তে যেতে হবে।
সার্ভারচেকার

6

ডিস্ট্রসগুলি সুবিধার জন্য "mod_php" পদ্ধতি সরবরাহ করে।

যদিও সর্বাধিক পারফরম্যান্ট উপায় হ'ল অ্যাপাচি ডাব্লু / ইভেন্ট + মোড_প্রক্সি_ফসিগি -> পিএইচপি-এফপিএম।

সম্ভবত তাদের সময়ের সাথে আপগ্রেড করা উচিত তবে তাদের পক্ষে শক্ত যখন অনেকগুলি ফ্রেমওয়ার্ক এক ধরণের "প্লাগ ও প্লে" ফ্যাশনে .htaccess Mod_php কনফিগারেশন নিয়ে আসে। শেষ অবধি, এডমিনই কেবলমাত্র তাদের সাইটটিকে সঠিকভাবে পরিচালনা এবং কনফিগার করতে দায়বদ্ধ।

আপনি যদি উত্পাদনে থাকেন তবে আমি আপনাকে আপগ্রেড এবং পরিবর্তনগুলি অনুশীলন করতে একটি টেস্ট সার্ভার ব্যবহার করার পরামর্শ দেব।

উইকি সম্পর্কে আমি পছন্দ করি বা আপনাকে "হ্যান্ডলার" পদ্ধতিটি প্রস্তাব করব। https://wiki.apache.org/httpd/PHP-FPM# প্রক্সি_ভিয়া_হ্যান্ডলার

অর্থাৎ, সকেট প্রস্তুত থাকতে php-fpm কনফিগার করুন এবং অ্যাপাচি ব্যবহারকারীর কাছে অনুরোধ প্রেরণের জন্য পর্যাপ্ত অনুমতি সহ এটি ব্যবহারের জন্য অ্যাপাচি কনফিগার করুন।

একটি দ্রুত উদাহরণ:

# needed modules for reverse proxying to php-fpm
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so


<Virtualhost *:443>
    ServerName whatever.example.com
    #other typical directives here
    <Directory /var/www/php-app>
        <FilesMatch \.php>
            SetHandler "proxy:unix:/path/to/app.sock|fcgi://localhost/"
        <FilesMatch>
    </Directory>
</VirtualHost>

সম্পাদনা:

এইভাবে আপনি কোন পিএইচপি সংস্করণ ব্যবহার করেন তা বিবেচনা করে না কারণ অ্যাপাচি যত্ন করে না, এটি কেবল পিএইচপি-এফএমপি-র যথাযথ অনুরোধগুলিকে উল্টো করে দেবে।

এছাড়াও, এমএমপিএইভেন্ট ব্যবহার করতে সক্ষম হতে মোড_এফপি আনলোড করতে ভুলবেন না।

সম্পাদনা 2:

অনুরোধ অনুসারে, আপনাকে ডিবিয়ান / উবুন্টু থেকে মোড_এফপি প্যাকেজগুলি আনইনস্টল করার দরকার নেই, অ্যাপাচি কেবল এটির কনফিগারেশন সম্পর্কে চিন্তা করে, সুতরাং মডিউলটি আনলোড করা হবে।


আপনার প্রতিক্রিয়ার জন্য ধন্যবাদ. আমি প্রচুর পরীক্ষা এবং ত্রুটি করছি এবং বর্তমানে এটি কাজ করছে বলে মনে হচ্ছে approach আসল প্রক্রিয়াটি আরও কিছুটা জড়িত কারণ আপনাকে প্রিফার্ক থেকে ইভেন্টে অ্যাপাচি পেতে হবে, লাইবপাচে ২-মোড-পিএইচপি .0.০ আনইনস্টল করতে হবে। আমি আশা করি এখানে আরও কিছুটা সম্পূর্ণ উত্তর প্রস্তুত করব।
এস ইম্প

অ্যাপাচি httpd স্ট্যান্ডপয়েন্ট থেকে "আনইনস্টল" করার দরকার নেই, কেবল মডিউলটি আনলোড করুন। ইভেন্ট / প্রেফের্কের সাথে একইভাবে, এমপিএমের মডিউলগুলিও ২.৪-এ রয়েছে, সুতরাং একটি প্রিফোর্ক এবং লোড ইভেন্টটি আনলোড করে।
ইজরা-এস

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

সম্ভবত আমি এগুলি ধরে নিয়েছি, অ্যাপাচি ডিবিয়ান প্যাকেজগুলির জন্য কোনও চিন্তা করে না, কেবল এটির কার্যকরী কনফিগারেশন।
এজরা-এস

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