অ্যাপাচি ২.৪ + পিএইচপি-এফপিএম + প্রক্সিপাসম্যাচ


31

আমি সম্প্রতি আমার স্থানীয় মেশিনে অ্যাপাচি ২.৪ ইনস্টল করেছি, পিএইচপি-এফপিএম ব্যবহার করে পিএইচপি 5.4.8 এর সাথে।

সবকিছু বেশ সহজেই চলে গেল (কিছুক্ষণ পরে ...) তবে এখনও একটি অদ্ভুত ত্রুটি রয়েছে:

আমি এই জাতীয় PHP-FPM এর জন্য অ্যাপাচি কনফিগার করেছি:

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot "/Users/apfelbox/WebServer"
    ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/Users/apfelbox/WebServer/$1
</VirtualHost>

এটি কাজ করে, উদাহরণস্বরূপ যদি আমি কল http://localhost/info.phpকরি আমি সঠিক পাই phpinfo()(এটি কেবল একটি পরীক্ষার ফাইল)।

তবে আমি যদি কোনও ডিরেক্টরি কল করি তবে আমি বডি সহ File not found.ত্রুটি লগটিতে একটি 404 পাই :

[Tue Nov 20 21:27:25.191625 2012] [proxy_fcgi:error] [pid 28997] [client ::1:57204] AH01071: Got error 'Primary script unknown\n'

হালনাগাদ

আমি এখন মোড_উইরাইট দিয়ে প্রক্সিং করার চেষ্টা করেছি:

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot "/Users/apfelbox/WebServer"

    RewriteEngine on    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/Users/apfelbox/WebServer/$1 [L,P]
</VirtualHost>

তবে সমস্যাটি হ'ল: এটি সর্বদা পুনঃনির্দেশিত হয়, কারণ http://localhost/স্বয়ংক্রিয়ভাবে http://localhost/index.phpঅনুরোধ করা হয় because

DirectoryIndex index.php index.html

আপডেট 2

ঠিক আছে, তাই আমি মনে করি "সম্ভবত প্রক্সি দেওয়ার জন্য কোনও ফাইল আছে কিনা তা পরীক্ষা করে দেখুন:

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot "/Users/apfelbox/WebServer"

    RewriteEngine on    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/Users/apfelbox/WebServer/$1 [L,P]
</VirtualHost>

এখন সম্পূর্ণ পুনর্লিখন আর কাজ করে না ...

আপডেট 3

এখন আমার এই সমাধানটি রয়েছে:

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot "/Users/apfelbox/WebServer"

    RewriteEngine on    
    RewriteCond /Users/apfelbox/WebServer/%{REQUEST_FILENAME} -f
    RewriteRule ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/Users/apfelbox/WebServer/$1 [L,P]
</VirtualHost>

প্রথমে পরীক্ষা করে দেখুন যে পিএইচপি-এফপিএম ( পূর্ণ এবং পরম পাথ সহ) পাস করার জন্য একটি ফাইল রয়েছে এবং তারপরে পুনরায় লেখার কাজটি করুন।

উপ-ডিরেক্টরিতে ইউআরএল পুনর্লিখন ব্যবহার করার সময় এটি কাজ করে না, এটি http://localhost/index.php/test/ সো ব্যাক টু স্কোয়ারের মতো URL গুলির জন্যও ব্যর্থ হয়।


কোন ধারনা?

উত্তর:


34

অ্যাপাচি ডকুমেন্টেশনগুলি অনুসন্ধান এবং পড়ার কয়েক ঘন্টা পরে আমি একটি সমাধান নিয়ে এসেছি যা পুলটি ব্যবহার করতে দেয় এবং ইউআরএল। Php ফাইলগুলি থাকা সত্ত্বেও .htaccess এ পুনর্লিখনের নির্দেশকেও অনুমতি দেয়।

<VirtualHost ...>

 ...

 # This is to forward all PHP to php-fpm.
 <FilesMatch \.php$>
   SetHandler "proxy:unix:/path/to/socket.sock|fcgi://unique-domain-name-string/"
 </FilesMatch>

 # Set some proxy properties (the string "unique-domain-name-string" should match
 # the one set in the FilesMatch directive.
 <Proxy fcgi://unique-domain-name-string>
   ProxySet connectiontimeout=5 timeout=240
 </Proxy>

 # If the php file doesn't exist, disable the proxy handler.
 # This will allow .htaccess rewrite rules to work and 
 # the client will see the default 404 page of Apache
 RewriteCond %{REQUEST_FILENAME} \.php$
 RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI} !-f
 RewriteRule (.*) - [H=text/html]

</VirtualHost>

অ্যাপাচি ডকুমেন্টেশন অনুসারে, সেটহ্যান্ডলার প্রক্সি প্যারামিটারের জন্য অ্যাপাচি HTTP সার্ভার 2.4.10 প্রয়োজন requires

আমি আশা করি যে এই সমাধানটি আপনাকেও সহায়তা করবে।


2
এটি অবশ্যই 2015 এর উত্তর, এখানে অন্য সব কিছুই আধুনিক সেটআপের জন্য বকাঝকা (আসুন যাক দেবশিয়ান স্থিতিশীল বলি)
দিমিত্রি ডিবি

1
আমি বেশ কিছুদিন ধরে এই একই সমস্যার জন্য প্রাচীরের বিরুদ্ধে মাথা ঘুরছি, এবং আপনার মতো আমারও একই ধরণের সেটআপ রয়েছে। আপনি দয়া করে আপনার .htaccess পুনর্লিখনের নির্দেশাবলী পোস্ট করবেন? আমি যা বুঝি সেগুলি থেকে, এই উত্তরের সমস্ত কিছুই কেবলমাত্র আপনার httpd.d / site.conf ফাইলে রয়েছে।
ডেভিড ডব্লু

1
এই রাইরাইটরুলটি ব্যবহার করা এই মুহুর্তে বেশ বিপজ্জনক বলে মনে হচ্ছে কারণ এটি config.php যদি অ্যালাইসড ডিরেক্টরিগুলির মধ্যে থাকে এবং সুতরাং% {DOCUMENT_ROOT} /% {REQUEST_URI in তে বিদ্যমান না থাকে তবে এটি সরলভাবে ফাইলগুলি প্রকাশ করতে পারে }
জুলাকিস

1
আশ্চর্যজনক কোড 9 লাইন। এটি পবিত্র কচুকাঠি এবং একমাত্র জিনিস যা আমার জন্য 100% কাজ করে। কেবলমাত্র একটি বহিঃপ্রকাশ: আপনি যদি লোকেশনম্যাচ ব্যবহার করে কোনও সমাধান থেকে স্যুইচ করছেন তবে আপনার fcgi url এ পরম ফাইলের পাথ যুক্ত করতে হবে না। এর জন্য নজর রাখার জন্য প্রক্সি চালু করুন এবং অ্যাপাচে লগইন পুনর্লিখন করুন।
ফিল

1
+1 কারণ আমি যে সমস্ত সংস্থান দেখেছি তার বিপরীতে এই পোস্টটি আমাকে "অনন্য-ডোমেন-নেম-স্ট্রিং" বলতে কী বোঝায় তা বুঝতে সহায়তা করেছে।
তিন

10

আমি ভাল হিসাবে এই সমস্যা গতকাল গাড়ীতে আঘাত - এ্যাপাচি 2.4 থেকে স্থানান্তরিত ডেবিয়ান / পরীক্ষামূলক মধ্যে ডেবিয়ান / অস্থির আমাকে অত্যাচার এই নতুন কাপড় সঙ্গে মোকাবিলা করার জন্য; অবশ্যই আমাদের উত্পাদন সার্ভারে নয়;)।

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

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

লক্ষ্য করুন DirectoryIndex index.php, এটির কারণ হতে পারে আপনার কোনও কনফিগারই "ফোল্ডার" এর জন্য কাজ করেনি (কমপক্ষে এটি এখানে কাজ করে না)।

আমি এখনও File not found.ডিরেক্টরিগুলি পাই , তবে কেবলমাত্র যদি কোনও সূচি ফাইল না থাকে তবে এটি বিশ্লেষণ করতে পারে। এটি থেকে মুক্তি পেতেও পছন্দ করবে তবে এটি এখনকার মতো সমালোচনা নয়।


<VirtualHost *:80>
    ServerName site.localhost

    DocumentRoot /your/site/webroot
    <Directory />
            Options FollowSymlinks
            DirectoryIndex index.php
            AllowOverride All
            Require all granted
    </Directory>

    <LocationMatch "^(.*\.php)$">
            ProxyPass fcgi://127.0.0.1:9000/your/site/webroot
    </LocationMatch>

    LogLevel debug
    ErrorLog /your/site/logs/error.log
    CustomLog /your/site/logs/access.log combined
</VirtualHost>

উপরের vhost এইভাবে মূলটিতে একটি .htaccess সহ পুরোপুরি ভালভাবে কাজ করে:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

URL rewriting inside a subdirectoryযদিও আপনি যা বলতে চাইছেন তা আমি পুরোপুরি পাই না (আমি কেবলমাত্র মূলের সূচকটি লিখছি) ph


(ওহ, এবং আপনাকে নিশ্চিত করতে হবে যে Xdebug আপনার সিস্টেমে FPM এর সাথে বিরোধ না করে, তারা যে বক্সগুলি একই পোর্টগুলি ব্যবহার করতে চায় তার বাইরে))


এটি একটি ভাল সমাধান তবে দুর্ভাগ্যক্রমে এই পন্থাটি কার্যকর হয় না ph /ms_blog_1/wp-admin/load-scriptts.php?blah=blah
ফিল

আমার জন্য, কেবল DirectoryIndex index.htmlপ্রশ্নে vhost এ একটি ওভাররাইড যুক্ত করা এটি ঠিক করেছে। যদি আমার কাছে থাকে DirectoryIndex index.php, তবে মনে হয় অন্যান্য পিএইচপি ফাইলগুলি 'ফাইল পাওয়া যায় নি' এবং 'প্রাথমিক স্ক্রিপ্ট অজানা' ত্রুটি প্রদান করে। আমার ক্ষেত্রে আমার কাছে index.htmlএকটি পিএইচপি ফাইল রয়েছে test.php
geerlingguy

4

আপনাকে যা করতে হবে তা হ'ল সেট করা:

 ProxyErrorOverride on

এবং এর দ্বারা গ্রাহক পৃষ্ঠাটি সেট করতে ভুলবেন না:

ErrorDocument 404 /path/to/error_page_file    

2

এটাই আমি পেয়েছি। এটা ঠিক আছে বলে মনে হচ্ছে। আমি দ্রুপালকে একটি উপ-ডিরেক্টরিতে রেখেছি এবং এর পুনর্লিখনের কাজ, ডিরেক্টরি সূচকগুলি কাজ করে, এবং PATH_INFO কাজ করে।

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} ^/((.*\.php)(/.*)?)$
RewriteCond %2 -f
RewriteRule . fcgi://127.0.0.1:9000/%1 [L,P]
RewriteOptions Inherit

আমি পুনরায় লিখন ("যদি" এবং এই জাতীয়) ছাড়াই এরকম কিছু করার চেষ্টা করেছি, তবে কাজ করার মতো কিছুই পাই না।

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


2

তবুও আরেকটি সমাধান (অ্যাপাচি> = 2.4.10 প্রয়োজন) - ভোস্টের অভ্যন্তরে:

# define worker
<Proxy "unix:/var/run/php5-fpm-wp.bbox.nuxwin.com.sock|fcgi://domain.tld" retry=0>
    ProxySet connectiontimeout=5 timeout=7200
</Proxy>

<If "%{REQUEST_FILENAME} =~ /\.php$/ && -f %{REQUEST_FILENAME}">
    SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
    SetHandler proxy:fcgi://domain.tld
</If>

সুতরাং এখানে, পিএইচপি-র জন্য fcgi হ্যান্ডলারটি কেবলমাত্র ফাইলের উপস্থিত থাকলে এবং এর নামটি পিএইচপি ফাইল এক্সটেনশনের সাথে মিলে গেলে সেট করা হবে।

BTW: যারা যা ধারণা সেট করতে হবে জন্য ProxyErrorOverride করার উপর , সচেতন থাকবেন, এই সত্যিই একটি খারাপ ধারণা হবে। এই নির্দেশের ব্যবহার কোনও সমস্যা সৃষ্টি না করেই নয়। উদাহরণস্বরূপ, 503-র মতো এইচটিটিপি কোড প্রেরণকারী কোনও পিএইচপি অ্যাপ্লিকেশন অপ্রত্যাশিত ফলাফলের দিকে নিয়ে যাবে। ডিফল্ট ত্রুটি হ্যান্ডলার যে কোনও ক্ষেত্রে এবং পিএইচপি অ্যাপ্লিকেশনগুলিতে জড়িত যেগুলি API সরবরাহ করে, এটি সত্যই খারাপ আচরণ।


দুর্ভাগ্যক্রমে এখনও এএইচ01071 ছিল: ত্রুটি পেয়েছে 'প্রাথমিক স্ক্রিপ্ট অজানা \ n' "এই সমাধানটি ব্যবহার করার সময়।
ক্লোর

1

এটি সমাধানের সর্বোত্তম উপায় হ'ল মোড_প্রক্সি এবং মোড_উইরাইট এবং পিএইচপি-এফপিএম-এর জন্য ডিবাগিং লগগুলি চালু করা। অ্যাপাচি ২.৪-এ আপনি কেবলমাত্র নির্দিষ্ট মডিউলগুলির জন্য ডিবাগিং লগগুলি চালু করতে পারেন। http://httpd.apache.org/docs/current/mod/core.html# লগেলভেল প্রতি-মডিউল এবং প্রতি ডিরেক্টরি কনফিগারেশন অ্যাপাচি এইচটিটিপি সার্ভার ২.৩. and এবং তার পরে পাওয়া যায়

সম্ভবত আপনি ডিরেক্টরিতে একটি ডাবল স্ল্যাশ পাচ্ছেন?

আমি যা ব্যবহার করি তা এখানে এবং এটি কার্যকর কাজ করে:

<LocationMatch ^(.*\.php)$>
  ProxyPass fcgi://127.0.0.1:9000/home/DOMAINUSER/public_html$1
</LocationMatch>

1

এই সমস্যাটির সাথে আমার ডিল করার ক্ষেত্রে একটি জিনিস আমি এনেছি, তা হ'ল আপনি যদি এই সমন্বয়টি ব্যবহার করেন:

chroot = /path/to/site
chdir = /

আপনার এফপিএম পুল কনফিগারেশনে, ProxyPassনির্দেশের পুরো পথটি পাস করবেন না ।

ProxyPass fcgi://127.0.0.1:9020/$1

তবে - কেবল- যদি সেই বন্দরের পুলটি ক্রোটযুক্ত হয়।


1

সমস্যাটি সম্পর্কিত কিনা তা আমি নিশ্চিত নই, তবে আমি এখানে একটি পার্টিয়ালি কাজের সমাধান খুঁজে পেয়েছি:

https://stackoverflow.com/questions/44054617/mod-rewrite-in-2-4-25-triggering-fcgi-primary-script-unknown-error-in-php-fpm

কৌতুকটি যুক্ত হবে বলে মনে হচ্ছে? .htaccess RewritRule এ চর ব্যবহার করুন, উদাহরণস্বরূপ:

RewriteRule ^(.*)$ index.php?/$1 [L,NS]

পরিবর্তে:

RewriteRule ^(.*)$ index.php/$1 [L,NS]

সমস্যার উত্সটি অ্যাপাচি ২.৪.২৫-এর পরিবর্তিত মডেল_রাইটের পরিবর্তন বলে মনে হচ্ছে। আমি একটি "লুপ" পর্যবেক্ষণ করতে অ্যাপাচি ট্রেস 1 লগ স্তরটি ব্যবহার করেছি যা index.php / $ 1 পাশ করার পরে পিএইচপি-এফএমপি থেকে $ 1 পাস করে। AH 1 "AH01071: উত্পন্ন ত্রুটি পেয়েছে 'প্রাথমিক স্ক্রিপ্ট অজানা \ n'" ত্রুটি।

আশা করি এই ছোট্ট জোয়ারটি কাউকে তাদের সমস্যাগুলি সমাধান করতে সহায়তা করবে।


0

এই বিষয়ে লিনোডের দুর্দান্ত টিউটোরিয়াল রয়েছে

মূলত আপনি পুরো সার্ভারের জন্য এমন একটি হ্যান্ডলার সেটআপ করেন যা কোনও পিএইচপি স্ক্রিপ্টগুলি ধরবে এবং এগুলিকে দ্রুত-সিজি-তে পাস করবে।


0

ড্রপাল উদাহরণগুলির জন্য php-fpm + অ্যাপাচি ২.৪.। এ স্যুইচ করার পরেও আমার ত্রুটি রয়েছে

তবে আমি এমপিএম ইভেন্ট মোড ব্যবহার করছি

শুধু sertোকান

DirectoryIndex index.php আমার জন্য কাজ কর

তারপরে আমার ভোস্ট সেটিংস নীচের মত দেখাচ্ছে

<VirtualHost *:8080>
  ServerAdmin webmaster@localhost
  ServerName sever.com
  DocumentRoot /var/www/html/webroot
    ErrorLog logs/web-error_log
    CustomLog logs/web-access_log common
<IfModule mpm_event_module>
    ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/webroot/$1
</IfModule>
  <Directory /var/www/html/webroot>
     Options FollowSymlinks
     DirectoryIndex index.php
     AllowOverride All
     Require all granted
  </Directory>
</VirtualHost>

ধন্যবাদ

ড্রুপালের ডিফল্ট .htaccess ফাইলটি সংশোধন করার দরকার নেই


[বুধ এপ্রিল 25 01: 41: 31.526781 2018] [প্রক্সি_এফসিগি: ত্রুটি] [পিড 2012: tid 140181155772160] (70007) নির্দিষ্ট সময়সীমা শেষ হয়েছে: [ক্লায়েন্ট 127.0.0.1:60308] এইচ01075: অনুরোধ প্রেরণে ত্রুটি: রেফারার: www / অ্যাডমিন / প্রতিবেদন
সিলিওনিং করা

0

আমি আমার সার্ভারে একই সমস্যার মুখোমুখি হই (সেন্টোস 7.3.16 ডকার)। পিএইচপি-এফপিএম লগ সন্ধান করার পরে, আমি একটি সিস লাইব মিস করেছি। WARNING: [pool www] child 15081 said into stderr: "php-fpm: pool www: symbol lookup error: /lib64/libnsssysinit.so: undefined symbol: PR_GetEnvSecure" তারপরে, আমি এনএসপিআর পুনরুদ্ধার করব, এটি কাজ করে। যদি কোনও পদ্ধতি চেষ্টা করার পরেও সমাধানগুলি খুঁজে না পান, আপনি এটি চেষ্টা করে দেখতে পারেন। yum -y install/reinstall nspr


0

এটি ওয়ার্ডপ্রেস 5.1.1 এর সাথে এবং পিএইচপি 7.3, ফাস্টসিজিআই, প্রক্সি, এবং মারিয়াডিবি / মাইএসকিউএল এর সাথে একত্রে আরও কাজ করে। আমার সার্ভারে দুবার পরীক্ষা করা হয়েছে। একটি যাদুমন্ত্র মত কাজ করে.

CentOS / ফেডোরা / রেড হ্যাটতে প্রথমে

sudo yum remove php*
sudo yum --enablerepo=extras install epel-release
sudo yum install php-fpm php-mysql php-gd php-imap php-mbstring 
sudo grep -E '(proxy.so|fcgi)' /etc/httpd/conf.modules.d/00-proxy.conf
sudo mv /etc/httpd/conf.d/php.conf /etc/httpd/conf.d/php.conf_bak

এই ফাইলটি সম্পাদনা করুন:

sudo nano /etc/php-fpm.d/www.conf

এটি আটকান:

[www]

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all addresses on a
;                            specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = 127.0.0.1:9000
listen = /run/php-fcgi.sock

sudo ll /run/php-fcgi.sock

Srw-rw-rw- দেওয়া উচিত।

বা কীভাবে ডেবিয়ান / উবুন্টুতে সেট আপ করবেন

টিউটোরিয়াল:

উত্স: https://emi.is/?page=articles&article=php-7-installation-and-configration-for-apache-2.4- using- php- fpm-( dedeban, -repository)


sudo apt purge 'php*' or sudo apt-get purge 'php*'
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt install php7.3 php7.3-fpm php-mysql php-mbstring php-gd php-imap libapache2-mod-security2 modsecurity-crs
systemctl status php7.3-fpm
systemctl stop php7.3-fpm.service

sudo a2dismod php7.0 php7.1 php7.2 mpm_event mpm_worker
sudo a2enmod mpm_prefork
sudo a2enmod php7.3
sudo systemctl restart apache2 (httpd in CentOS)

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


sudo apt --assume-yes install php7.3-fpm
sudo systemctl stop php7.3-fpm.service
sudo rm /var/log/php7.0-fpm.log
sudo mkdir /var/log/php7.3-fpm/
sudo touch /var/log/php7.3-fpm/error.log
sudo mkdir /var/log/php7.3/
sudo touch /var/log/php7.3/error.log
sudo mkdir /var/tmp/php7.3/
sudo > /etc/php/7.3/fpm/php.ini
sudo > /etc/php/7.3/fpm/php-fpm.conf
sudo rm /etc/php/7.3/fpm/pool.d/www.conf
sudo touch /etc/php/7.3/fpm/pool.d/example.com.conf
sudo useradd --comment "PHP" --shell "/usr/sbin/nologin" --system --user-group php

sudo nano /etc/php/7.3/fpm/php.ini

পেস্ট করুন


[PHP]
date.timezone = Europe/Prague
display_errors = Off
error_log = /var/log/php7.3/error.log
error_reporting = 32767
log_errors = On
register_argc_argv = Off
session.gc_probability = 0
short_open_tag = Off
upload_tmp_dir = /var/tmp/php7.3/

sudo nano /etc/php/7.3/fpm/php-fpm.conf

পেস্ট করুন


[global]
error_log = /var/log/php7.3-fpm/error.log
include = /etc/php/7.3/fpm/pool.d/*.conf

sudo nano /etc/php/7.3/fpm/pool.d/example.com.conf

পেস্ট করুন


[example.com]
group = php
listen = 127.0.0.1:9000
pm = ondemand
pm.max_children = 5
pm.max_requests = 200
pm.process_idle_timeout = 10s
user = php

sudo nano /etc/logrotate.d/php7.3-fpm

এটি টেক্সট ফাইলটিতে অনুলিপি করুন:

/var/log/php7.3-fpm.log {
    rotate 12
    weekly
    missingok
    notifempty
    compress
    delaycompress
    postrotate
            /usr/lib/php/php7.3-fpm-reopenlogs
    endscript
}

এটি সরান এবং তারপরে উপরের পরিবর্তে এটি আটকে দিন:

/var/log/php7.3/*.log /var/log/php7.3-fpm/*.log
{
copytruncate
maxage 365
missingok
monthly
notifempty
rotate 12
}

নির্দেশ যুক্ত করুন

sudo nano /etc/apache2/sites-available/example.com.conf


<VirtualHost *:80>
    ServerName www.example.com
    ServerAlias example.com
    ServerAdmin admin@example.com
    DocumentRoot /var/www/html/example.com/public_html
    DirectoryIndex index.php index.htm index.html index.xht index.xhtml
    LogLevel info warn
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    <FilesMatch "^\.ht">
    Require all denied
    </FilesMatch>

    <files readme.html>
    order allow,deny
    deny from all
    </files>

    RewriteEngine on
    RewriteCond %{SERVER_NAME} =example.com
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
    ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/example.com/public_html

    <Directory /var/www/html/example.com/public_html>
        Options Indexes FollowSymLinks Includes IncludesNOEXEC SymLinksIfOwnerMatch
        AllowOverride None
    </Directory>
</VirtualHost>

তারপরে সাইটটি সক্ষম করুন:

sudo a2ensite /etc/apache2/sites-available/example.com.conf

পরবর্তী সম্পাদনা এসএসএল সাইট (এই ক্ষেত্রে এসএসএল সার্টি কনফিগারেশন শুরুর আগে লেটস এনক্রিপ্ট থেকে সার্টবট ইনস্টল এবং কনফিগার করা হয়েছে)।

sudo nano /etc/apache2/sites-available/example.com-le-ssl.conf

<IfModule mod_ssl.c>
    #headers for security man in the middle attack find how to enable this mod in Google
    LoadModule headers_module modules/mod_headers.so
    <VirtualHost *:443>
        Header always set Strict-Transport-Security "max-age=15768000"
        SSLEngine On
        ServerName example.com
        ServerAdmin admin@example.com
        DocumentRoot /var/www/html/example.com/public_html
        <Directory /var/www/html/example.com/public_html>
        Options Indexes FollowSymLinks Includes IncludesNOEXEC SymLinksIfOwnerMatch
        AllowOverride All
        Require all granted
        DirectoryIndex index.php
        RewriteEngine On
         <FilesMatch ^/(.*\.php(/.*)?)$>
           SetHandler "fcgi://example.com:9000/var/www/html/example.com/public_html"
          </FilesMatch>
        </Directory>
    # Log file locations
    #LogLevel info ssl:warn
    LogLevel debug
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    # modern configuration
    SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
    #SSLCipherSuite HIGH:!aNULL:!MD5
    SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM$
    SSLHonorCipherOrder on
    SSLCompression off
    SSLSessionTickets off

    <FilesMatch "^\.ht">
    Require all denied
    </FilesMatch>

    <files readme.html>
       order allow,deny
       deny from all
    </files>

</VirtualHost>
    #Stapling OCSP for Let's Encrypt certs.
    SSLUseStapling          on
    SSLStaplingResponderTimeout     5
    SSLStaplingReturnResponderErrors        off
    SSLStaplingCache        shmcb:/var/run/ocsp(128000)
</IfModule>

sudo a2enmod proxy proxy_fcgi setenvif
sudo systemctl reload apache2.service
sudo chown --recursive root:adm /etc/php/
sudo chmod --recursive 0770 /etc/php/
sudo chown --recursive php:adm /var/log/php7.3/
sudo chown --recursive php:adm /var/log/php7.3-fpm/
sudo chmod --recursive 0770 /var/log/php7.3/
sudo chmod --recursive 0770 /var/log/php7.3-fpm/
sudo chown --recursive php:php /var/tmp/php7.3/
sudo chmod --recursive 0770 /var/tmp/php7.3/
sudo a2enconf php7.3-fpm
sudo systemctl enable php7.3-fpm.service
sudo systemctl start php7.3-fpm.service

দেবিয়ান / উবুন্টুতে একটি ফায়ারওয়ালে 9000 বন্দর যুক্ত মনে রাখবেন

sudo ufw allow 9000/tcp
sudo ufw status

সেন্টোস / ফেডোরা / রেড হ্যাট-এ

sudo firewall-cmd --zone=public --add-port=9000/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
sudo firewall-cmd --state 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.