Nginx, APC और PostgreSQL के साथ PHP कैसे सेट करें?


9

मैं Ubuntu सर्वर 10.10 का उपयोग करता हूं और मैं NginX , PHP 5.3.3, PostgreSQL और अधिमानतः APC और PHP सुहोसिन के साथ एक वेब सर्वर वातावरण स्थापित करना चाहूंगा ।

मैंने पहले ही PostgreSQL को apt-get install postgresqlऔर Nginx के साथ सेट कर दिया है apt-get install nginx

लेकिन मैं इनके लिए PHP कैसे सेट करूँ? क्या मैं इसका उपयोग apt-get installकर सकता हूं या क्या मुझे स्रोतों को डाउनलोड करना होगा और इसे संकलित करना होगा? मैं इसका उपयोग करना पसंद करूंगा apt-get

मैं Nginx के लिए PHP-FPM का उपयोग करना पसंद करूंगा । अधिकांश ट्यूटोरियल जो मैंने इंटरनेट पर पाए हैं वे पुराने हैं और PHP को संकलित करते हैं, लेकिन उत्पादन सर्वर के लिए यह अनुशंसित नहीं है।

मैं Nginx, APC और PostgreSQL के साथ सबसे आसान PHP कैसे सेट करूँ? या कम से कम PHP-FPM + Nginx?


अपडेट करें

मैंने अब एक नया उबंटू सर्वर 10.10 स्थापित किया है और पीटर को php5-suhosinजोड़ा गया कमांड निष्पादित किया है। उसके बाद Nginx ठीक काम करता है, तो मैं नीचे दी गई होने के लिए जनरेट की गई कन्फ़्यूजन फ़ाइल को संपादित करता हूं। नई कॉन्फ़िग फ़ाइल को पुनः लोड करने के बाद, Nginx अभी भी एक index.htmlफ़ाइल का उपयोग करके ठीक काम करता है , लेकिन जब मैं एक index.phpफ़ाइल जोड़ता हूं तो यह काम करना बंद कर देता है। मुझे लगता है कि यह PHP-FPM, APC या कुछ PHP से संबंधित के साथ करना है। लेकिन यह PHP-FPM के लिए भी विन्यास फाइल हो सकता है।

यहां Nginx के लिए कॉन्फ़िगरेशन फ़ाइल है जो मैं उपयोग कर रहा हूं, यह अधिकतर डिफ़ॉल्ट रूप से उत्पन्न होता है। मैंने टिप्पणियाँ छोड़ दी हैं।

server {

    listen 80;
    listen [::]:80 default ipv6only=on;

    server_name localhost;

    access_log /var/log/nginx/localhost.access.log;

    location /favicon.ico {
        empty_gif;
    }

    location / {
        root     /var/www;
        index    index.php index.html index.htm;
    }

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }

}

कृपया इसे उत्तर दें और फिर इसे स्वीकार करें, इस तरह हम दोनों को एक साथ संयुक्त समाधान के रूप में वोट कर सकते हैं।
जॉर्ज कास्त्रो

@ जॉर्ज: यह कोई जवाब नहीं है, मैं सिर्फ अपनी कॉन्फ़िगरेशन फ़ाइल दिखा रहा हूं जो काम नहीं करती है । पीटर स्मिट ने टिप्पणियों के साथ मिलकर सही समाधान पोस्ट किया और मैंने इसे एक उत्तर के रूप में स्वीकार किया है।
जोनास

मेरी गलती है, रॉक ऑन!
जॉर्ज कास्त्रो

जवाबों:


8

उबंटू 10.10 से शुरू यह नए php5-fpm पैकेज के साथ तुच्छ है

निम्न पैकेज आपकी जरूरत का हर काम करते हैं

  • nginx - वेबसर्वर
  • php5-fpm - फास्ट-सीजीआई php सर्वर
  • php-apc - php के लिए APC पैकेज
  • php5-pgsql - PHP के लिए PostgreSQL मॉड्यूल
  • postgresql - PostgreSQL डेटाबेस सर्वर

सभी एक साथ sudo apt-get install nginx php5-fpm php-apc php5-pgsql postgresql

इसके अलावा मैं यह जांचने का सुझाव देता हूं कि क्या एपाचे 2 स्थापित है। यदि हां, तो इसे sudo apt-get remove apache2पोर्ट 80 के लिए अपाचे और नग्नेक्स प्रतिस्पर्धा से बचने के लिए इसे हटा दें ।

यह भी ध्यान दें कि xdebug मानक भी php5-fpm की तरह पोर्ट 9000 का उपयोग करना चाहता है। इसलिए यदि आप xdebug का उपयोग करते हैं, तो उस पोर्ट को उदाहरण के लिए बदलकर 9001 करें

और बोनस के रूप में एक उदाहरण नेग्नेक्स कॉन्फ़िगरेशन (इसे / etc / nginx / साइट्स में उपलब्ध है और इसे / etc / nginx / साइट्स-सक्षम में सेमल करें)

server {
  listen 80;
  server_name site.com;
  access_log /data/log/www/site.com/access.log;
  error_log /data/log/www/site.com/error.log;

  root /data/www_data/site.com/public;
  index index.php;

  location = /favicon.ico {
    empty_gif;
    #return 204;
  }

  location ~ \.php$ {
    include /etc/nginx/fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass 127.0.0.1:9000;
  }
}

मैंने अब यह किया है, और मैंने एक सरल test.phpफ़ाइल बनाई है , लेकिन यह काम नहीं करता है। मेरा ब्राउज़र कहता है "टूटी हुई कड़ी" और Nginx त्रुटि लॉग में केवल "favicon.ico" के बारे में एक प्रविष्टि है। मुझे लगता है कि मेरी कॉन्फ़िगरेशन फ़ाइल के साथ कुछ है, लेकिन मुझे वास्तव में कोई पता नहीं है और त्रुटि को खोजने के लिए यह बहुत कठिन है।
जोनास

@ जोनास यह हो सकता है कि nginx और php5-fpm अभी शुरू नहीं हुए हैं। उस मामले में, sudo service nginx startऔर sudo service php5-fpm startकाम करना चाहिए। बेशक, किसी भी त्रुटि के लिए वे देखें।
पीटर स्मित

@ जोनास आपकी त्रुटि लॉग में favicon.ico नहीं होना चाहिए, कम से कम यदि आपने मेरे समाधान से खाली_गिफ़ भाग को कॉपी नहीं किया है। इसके अलावा, परिवर्तन ( sudo service nginx reload) के बाद हमेशा पुनरारंभ करना न भूलें । यदि अन्य सभी विफल रहता है, तो शायद आप अपने कॉन्फ़िगरेशन फ़ाइल को अपने प्रश्न में जोड़ सकते हैं।
पीटर स्मिट

मैंने Nginx के लिए अपनी कॉन्फ़िगरेशन फ़ाइल के साथ प्रश्न को अपडेट किया है, PHP सेटअप में कुछ गड़बड़ है। अपनी कॉन्फ़िगरेशन फ़ाइल में फ़ेविकॉन के बारे में अपनी पंक्तियाँ जोड़ने के बाद मुझे अब Nginx त्रुटि लॉग में कोई त्रुटि नहीं मिलती है। Nginx .htmlफ़ाइलों के साथ काम करता है, लेकिन यह .phpफ़ाइलों के लिए काम नहीं करता है ।
जोनास

1
@ जोनास एक पृष्ठ जिसने मुझे 'क्लीन' विन्यास फाइल बनाने में मदद की है wiki.nginx.org/Pitfalls है , लेकिन उन परिवर्तनों को लागू करने के बारे में चेतावनी को अनदेखा न करें जिन्हें आप नहीं समझते हैं।
पीटर स्मिट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.