HHVM, Nginx और PHP (साथ ही साथ Laravel)

एचएचवीएम + नेग्नेक्स + पीएचपी + लारवेल कई लोग लारवेल के उपयोग के लिए Nginx पर HHVM को स्थापित करने में रुचि रखते थे। चलिए शुरू करते हैं।

HHVM (या हिपहॉप वर्चुअल मशीन) एक वर्चुअल मशीन है जिसे PHP में लिखे प्रोग्राम को चलाने के लिए डिज़ाइन किया गया है। JIT संकलन तकनीक का उपयोग बायटेकोड निष्पादन गति को बढ़ाने के लिए करता है।

प्रविष्टि

मेरे अधिकांश लेखों की तरह, मैं हमारे सामान को स्थापित करने के लिए एक सर्वर के रूप में Ubuntu 12.04 LTS का उपयोग करूंगा। हालाँकि, हम बहुत अच्छी तरह से ब्रू ( nginx और hhvm ) का उपयोग करके मैक पर इसे स्थापित कर सकते हैं। HHVM को अन्य प्लेटफार्मों (उबंटू के नए संस्करणों सहित) पर स्थापित करने के बारे में जानकारी यहाँ से प्राप्त की जा सकती है

अच्छा, चलिए!

मूल बातें सेट करना

सबसे पहले, हमारे उद्देश्य के लिए आवश्यक बुनियादी चीजों को स्थापित करें:

$ sudo apt-get update $ sudo apt-get install -y unzip vim git-core curl wget build-essential python-software-properties 


Nginx स्थापना

अगला, Nginx स्थापित करें। वह पहले क्यों आ रहा है? जब से hhvm-fastcgi पैकेज स्थापित कर रहा है, यह [पैकेज] कुछ Nginx विन्यास बदल जाएगा अगर यह पता लगाता है।

 $ sudo apt-get install -y nginx 


HHVM FastCGI स्थापित करें

एचएचवीएम ब्लॉग को देखते हुए , हम फास्टएचजीआई के साथ एचएचवीएम स्थापित कर सकते हैं। निम्न कोड HHVM स्थापित करेगा और FastCGI के साथ काम करने के लिए इसे कॉन्फ़िगर करेगा।

 $ echo deb http://dl.hhvm.com/ubuntu precise main | sudo tee /etc/apt/sources.list.d/hhvm.list $ sudo apt-get update $ sudo apt-get install -y --force-yes hhvm-fastcgi 

नोट: मैंने कुछ निर्भरता मुद्दों को ठीक करने के लिए --force-Yes ध्वज को जोड़ा।

HHVM कॉन्फ़िगर करें

HHVM मूल रूप से PHP का एक देशी संस्करण है, इसलिए हमें अलग से PHP स्थापित करने की आवश्यकता नहीं है। स्थापना के बाद, आप सामान्य PHP के रूप में HHVM का उपयोग कर सकते हैं। उदाहरण के लिए, आप php फ़ाइलों को निष्पादित कर सकते हैं:

 $ hhvm some_file.php 

चूंकि हमारे पास संभवतः कंपोज़र और PHPUnit है, जो कमांड लाइन से एक्सेसिबिलिटी ग्रहण करते हैं, इसलिए हम hhvm पर php सिमिलिंक बना सकते हैं:

 $ sudo ln -s `which hhvm` /usr/local/bin/php 

अब हम हमेशा की तरह PHP का उपयोग कर सकते हैं!

 $ php -v HipHop VM v2.3.2 (rel) Compiler: tags/HHVM-2.3.2-0-gf951cb8d8812c59344d5322454853b584b668636 Repo schema: 5b5a4fc9cde5a5d014d1dfdb491bf74e4e700131 


एचएचवीएम फास्ट-सीजीआई

मैं Vagrant का उपयोग कर रहा हूं और मैं चाहता हूं कि मेरी रूट निर्देशिका / योनि निर्देशिका हो। रूट बदलने के लिए, हमें HHVM और Nginx दोनों को कॉन्फ़िगर करने की आवश्यकता है।

HHVM से शुरू करते हैं। संपादन के लिए फ़ाइल: /etc/hhvm/server.hdf यहां निष्पादित करने के लिए एक एकल-पंक्ति कमांड है:

 # Change doc root from /var/www/ to /vagrant/ $ sudo sed -i 's/SourceRoot = \/var\/www\//SourceRoot = \/vagrant\//' /etc/hhvm/server.hdf 

फिर परिवर्तनों को लागू करने के लिए HHVM को पुनरारंभ करें:

 $ sudo service hhvm-fastcgi restart 


Nginx कॉन्फ़िगर करें

अब Nginx को कॉन्फ़िगर करें। मैं एक नई कॉन्फ़िगरेशन फ़ाइल बनाऊंगा जिसे आवारा कहा जाता है :

 # Create and edit our new configuration file $ sudo vim /etc/nginx/sites-available/vagrant 

यहां आप इस फ़ाइल की अंतिम सामग्री देख सकते हैं:

 // File /etc/nginx/sites-available/vagrant server { root /vagrant; index index.html index.htm index.php; server_name localhost; # 192.168.33.10.xip.io if you are using Vaprobash include hhvm.conf; # Include HHVM's configuration file for Nginx location / { try_files $uri $uri/ /index.php?q=$uri&$args; } location ~ /\.ht { deny all; } } 


दो महत्वपूर्ण बिंदु

सबसे पहले, हम एक स्थान ब्लॉक को परिभाषित नहीं करते हैं। HHVM से पहले Nginx को स्थापित करना HHVM के लिए Nginx देखने और आपके लिए /etc/nginx/hhvm.conf फ़ाइल बनाने का अवसर प्रस्तुत करता है। Hhvm.conf फ़ाइल जिसमें हम पहले से ही शामिल हैं, PHP द्वारा आवश्यक स्थान ब्लॉक है।
दूसरे, hhvm.conf फ़ाइल रूट निर्देशिका / var / www को मानती है। यह रूट / योनि सेटिंग को अधिलेखित करता है हमें इसे बदलने की आवश्यकता है ताकि हमारी योनि फ़ाइल hhvm.mf फ़ाइल में रूट निर्देश को हटाकर रूट डायरेक्टरी निर्धारित करे:

 $ sudo vim /etc/nginx/hhvm.conf # Then comment out the line 'root /var/www' and save 

/Etc/nginx/hhvm.conf फ़ाइल स्वयं:

 location ~ \.php$ { # root /var/www fastcgi_keep_conn on; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name; include fastcgi_params; } 

अब हमारे द्वारा बनाए गए वर्चुअल होस्ट को चालू करें:

 $ sudo ln -s /etc/nginx/sites-available/vagrant /etc/nginx/sites-enabled/vagrant 


अब आपको परिवर्तनों को प्रभावी करने के लिए HHVM-FastCGI और Nginx को पुनरारंभ करना होगा। लेकिन पहले, एक परीक्षण php फ़ाइल बनाएँ।

थोड़ा php

एक साधारण परीक्षण फ़ाइल बनाएँ:

 $ vim /vagrant/index.php 

कुछ इस तरह सरल:

 <?php echo phpinfo(); // Expected output: HipHop 

छोटे के लिए मामला। बस hhvm-fastcgi और nginx को पुनः आरंभ करें। उसके बाद, आप ब्राउज़र में सर्वर के आईपी पते (या 192.168.33.10.xip.io पर, यदि आप Vaprobash का उपयोग करते हैं ) से कनेक्ट करते समय index.php देख सकते हैं।

 $ sudo service hhvm-fastcgi restart $ sudo service nginx reload 

आपको ब्राउज़र में "हिपहॉप" देखना चाहिए।

Laravel

हमारे मामले में, लारवेल की स्थापना सामान्य स्थापना से अलग नहीं है। चूंकि हमने PHP को लिंक किया है, इसलिए सब कुछ एक घड़ी की तरह काम करना चाहिए। आइए कोशिश करते हैं।

संगीतकार स्थापित करें

यह एक सामान्य वैश्विक स्थापना होगी:

 $ curl -sS https://getcomposer.org/installer | php $ sudo mv composer.phar /usr/local/bin/composer 


लारवेल स्थापित करें

अब हमें एक नई लार्वा परियोजना बनाने का अवसर दिया गया है। मैं इसे नाम दे दूंगा:

 # Move to /vagrant so we install Laravel # into /vagrant/hhlaravel $ cd /vagrant $ composer create-project laravel/laravel hhlaravel 

आप चाय या कॉफी तब तक पी सकते हैं जब तक सभी निर्भरताएं स्थापित न हो जाएं :)

अंतिम चरण: लारवेल की स्थापना

आइए थोड़ा ट्वीक करें और रूट डायरेक्टरी को / पब्लिक में सेट करें:

 # Fast CGI document root $ sudo sed -i 's/SourceRoot = \/vagrant\//SourceRoot = \/vagrant\/hhlaravel\/public\//' /etc/hhvm/server.hdf # Nginx document root sudo sed -i 's/root \/vagrant;/root \/vagrant\/hhlaravel\/public;/' /etc/nginx/sites-available/vagrant # Reload configuration $ sudo service hhvm-fastcgi restart $ sudo service nginx reload 

सब कुछ तैयार है! आप ब्राउज़र का उपयोग करके प्रदर्शन की जांच कर सकते हैं।

चेतावनी और नोट्स

आप त्रुटि लॉग पर बहुत अधिक ध्यान देना चाहेंगे। डिफ़ॉल्ट रूप से, HHVM ब्राउज़र में कोई त्रुटि प्रदर्शित नहीं करता है। लारवेल लॉग की जाँच करें:

 # Show last 50 lines written out to laravel log $ tail -n 50 -f /vagrant/hhlaravel/app/logs/laravel.log 

HHVM लॉग की जाँच करें:

 $tail -n 50 -f /var/log/hhvm/error.log 

आप सर्वर कॉन्फ़िगरेशन को बदलकर अपने लॉग में स्टैक ट्रेस भी प्राप्त कर सकते हैं।

/Etc/hhvm/server.hdf को संपादित करें और इंजेक्टस्टैकट्रेस और नेटिवैकटैक निर्देश जोड़ें
 Log { Level = Warning AlwaysLogUnhandledExceptions = true RuntimeErrorReportingLevel = 8191 UseLogFile = true UseSyslog = false File = /var/log/hhvm/error.log InjectedStackTrace = true NativeStackTrace = true Access { * { File = /var/log/hhvm/access.log Format = %h %l %u % t \"%r\" %>s %b } } } 

अंत में, आप डिबग की सेटिंग /etc/hhvm/server.hdf में जोड़कर ब्राउज़र विंडो में थोड़ा सा आउटपुट जोड़ सकते हैं:

 Debug { FullBacktrace = true ServerStackTrace = true ServerErrorMessage = true TranslateSource = true } 

हालाँकि, याद रखें कि त्रुटि लॉग में अधिक विस्तृत त्रुटि जानकारी होगी। यहां HHVM के लिए दूरस्थ डिबगर का उपयोग करने के बारे में एक लेख है (मैंने इसे स्वयं परीक्षण नहीं किया है)।

Source: https://habr.com/ru/post/In208778/


All Articles