Image

ज्ञानधार → एक ही डोमेन पर विभिन्न फ़ोल्डरों में विभिन्न php संस्करणों के साथ दो php-fpm सेवाएँ स्थापित करना

[वर्चुअल सर्वर]
प्रकाशन तिथि: 24.11.2022

कार्य विभिन्न PHP संस्करणों के साथ दो अनुप्रयोगों को एक साथ एक nginx वेब सर्वर और एक डोमेन नाम पर तैनात करना है। हमारे उदाहरण में, यह ग्राहकों (सीआरएम) के साथ बातचीत के लिए एक वेबसाइट और एप्लिकेशन होगी।

कार्य साइट को खुला बनाना है:

  • domain.tld - (मुख्य डोमेन)
  • domain.tld/nested-app (आवेदन)

सुरक्षा सुनिश्चित करने के लिए, एप्लिकेशन फ़ोल्डर को साइट के समान स्तर पर स्थित होना चाहिए, ताकि यदि साइट हैक हो जाए, तो कोई हमलावर एप्लिकेशन फ़ाइलों तक पहुंच प्राप्त न कर सके और इसके विपरीत भी। हमारे उदाहरण में, हम Centos 7 पर सेटअप कर रहे हैं।

  • /var/www/domain.tld/site - (साइट फ़ोल्डर)
  • /var/www/domain.tld/nested-app - (एप्लिकेशन फ़ोल्डर)

जैसा कि हम देख सकते हैं, वे पदानुक्रम में समान स्तर पर हैं। चूंकि एप्लिकेशन विभिन्न php संस्करणों का उपयोग करते हैं, इसलिए हमें php के साथ दूसरी php-fpm सेवा को स्थापित और कॉन्फ़िगर करने की आवश्यकता होगी, और इसे nginx पर कॉन्फ़िगर करना होगा।

1. php 8 और php-fpm सेवा स्थापित करें

wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
wget https://rpms.remirepo.net/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7.rpm epel-release-latest-7.noarch.rpm

आइए रेमी रिपॉजिटरी सेटिंग्स में php 8 को सक्षम करें और आवश्यक पैकेज इंस्टॉल करें:

apt install php php-fpm php-mysql php-common php-cli php-json php-opcache php-readline php-mbstring php-xml php-gd php-curl

2. php 7 और दूसरी php-fpm सेवा स्थापित करें

yum install centos-release-scl
yum install rh-php73 rh-php73-php-fpm
scl enable rh-php73 bash
semanage port -a -t http_port_t -p tcp 9003
systemctl start rh-php73-php-fpm
systemctl enable rh-php73-php-fpm

कॉन्फ़िगरेशन के लिए सब कुछ तैयार है; इस कॉन्फ़िगरेशन में हमने सेवा को ऑटोस्टार्ट में जोड़ा है।

3. nginx को स्थापित और कॉन्फ़िगर करें

yum install nginx

हमारे डोमेन के लिए कॉन्फ़िगरेशन इस प्रकार होगा:

/etc/nginx/conf.d/domain_tld.conf
server { 

listen xx.x.xx.x:443 ssl;
listen [ipv6]:443 ssl; 
server_name domain.tld www.domain.tld; 
index index.php index.html;

 set $base /var/www/domain.tld;
 root $base/site;
 ssl_certificate /etc/ssl/domain_tld/cert23.crt;
 ssl_certificate_key /etc/ssl/domain_tld/cert23.key;
 client_body_timeout 5s;
 client_header_timeout 5s;
 client_max_body_size 32m;
 ssl_session_timeout 5m;

 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 ssl_protocols SSLv2 SSLv3 TLSv1 TLSv1.2;
 ssl_ciphers HIGH:!aNULL:!MD5;
 ssl_prefer_server_ciphers on;

 add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; ";
 ssl_stapling on;
 ssl_stapling_verify on;

 gzip on;
 gzip_disable "msie6";

 gzip_types text/plain text/css application/json application/x-javascript text/xml 
application/xml application/xml+rss text/javascript application/javascript;

# -- www to no www --

 if ($host ~* ^www.domain.tld$) {
 rewrite ^(.*)$ https://domain.tld$1 permanent;
 }
# -- www to no www --

location / {
 try_files $uri $uri/ /index.php?$query_string;   }

location ^~ /nested-app {alias $base/nested-app;

        if (!-e $request_filename) {
            rewrite ^ /nested-app/index.php last;        }

location ~ \.php$ {
            if (!-f $request_filename) {rewrite ^
            /nested-app/index.php last;
            } include /etc/nginx/fastcgi_params;
            fastcgi_pass 127.0.0.1:9003;
            fastcgi_param SCRIPT_FILENAME $request_filename;
            }
  }
location ~ \.php$ { include /etc/nginx/fastcgi_params;
        fastcgi_pass 127.0.0.1:9000; 
        fastcgi_param SCRIPT_FILENAME $request_filename;
    }
}

हमारे मामले में:

  • domain.tld - बंदरगाह पर चल रहा है 9000
  • domain.tld/nested-app - बंदरगाह पर चल रहा है 9003

आपको किस PHP की आवश्यकता है, इसके आधार पर प्रत्येक की सेटिंग में पोर्ट निर्दिष्ट करें, क्योंकि डिफ़ॉल्ट रूप से दोनों में पोर्ट 9000 है।

यह कॉन्फ़िगरेशन फ़ाइल में किया गया है:

  • मुख्य के लिए /etc/php-fpm.d/www.conf
  • अतिरिक्त के लिए с php 7 /etc/opt/rh/rh-php73/php-fpm.d/www.conf

कॉन्फ़िगरेशन लागू करने के लिए आपको सभी सेवाओं को पुनरारंभ करना होगा

systemctl restart rh-php73-php-fpm
systemctl restart php-fpm
systemctl restart nginx




No Comments Yet