نصب Phalcon، سریع‌ترین فریم‌ورک PHP، روی سرور لینوکسی

Installation of Phalcon (the Fastest PHP Framework) on a Linux Server

06 مرداد 1400
نصب Phalcon سریع ترین فریم ورک PHP روی سرور لینوکسی

همانطور که می دانید امروزه برای هر زبانی ده ها فریم ورک مختلف و کامل وجود دارد، بنابراین از این نظر همیشه پشتیبانی داریم اما امروز می خواهم در مورد فریم ورکی صحبت کنم که به احتمالا نام آن را نشنیده باشید اما با اختلاف زیاد سریع ترین فریم ورک PHP شناخته می شود.

Phalcon یکی از فریم ورک های کمتر شناخته شده اما در عین حال یکی از قدرتمندترین فریم ورک های شناخته شده است. این فریم ورک در حال حاضر بیش از ۱۰ هزار ستاره در گیت هاب دارد و از سال ۲۰۱۲ به صورت متن باز ارائه شده است. نکته جالب در رابطه با این فریم ورک این است که با زبان های C و Zephir و به صورت یک extension برای زبان PHP ساخته شده است. این موضوع باعث سرعت باورنکردنی این فریم ورک شد اما در عین حال یکی از دلایل ناآشنا بودنش نیز می باشد.

برای استفاده از این فریم ورک باید از شرکت هاستینگ بخواهید که phalcon را برایتان فعال کند یا اینکه یک VPS خریداری کرده و خودتان آن را فعال کنید. همچنین دیباگ کردن برنامه های phalcon سخت تر است چرا که به زبان C نوشته شده است و علاوه بر آن فعال سازی و نصب آن نیز تقریبا کار دشواری است. تمام این موارد باعث محبوبیت کمتر فالکون شده اند اما اگر سختی های ابتدایی کار را بپذیرید فریم ورکی با سرعتی باورنکردنی خواهید داشت.

بیایید نگاهی به بنچ مارک های انجام شده با این فریم ورک در برابر دیگر فریم ورک ها داشته باشیم:

مصرف مموری در فالکون از همه کمتر است
مصرف مموری در فالکون از همه کمتر است
فالکون ۱۴۰۰ درخواست را بر ثانیه پردازش می کند در حالی که دیگر فریم ورک ها شدیدا درگیر می شوند
فالکون ۱۴۰۰ درخواست را بر ثانیه پردازش می کند در حالی که دیگر فریم ورک ها شدیدا درگیر می شوند
تعداد فایل های درگیر در پردازش هر درخواست در فالکون بسیار کمتر از دیگر فریم ورک ها است که باعث افزایش سرعت آن می شود
تعداد فایل های درگیر در پردازش هر درخواست در فالکون بسیار کمتر از دیگر فریم ورک ها است که باعث افزایش سرعت آن می شود
زمان مورد نیاز برای پردازش ۱۰۰۰ درخواست در فالکون حدود ۰.۷ ثانیه بوده است که بسیار سریع تر از دیگر رقبا است
زمان مورد نیاز برای پردازش ۱۰۰۰ درخواست در فالکون حدود ۰.۷ ثانیه بوده است که بسیار سریع تر از دیگر رقبا است

آماده سازی محیط سرور لینوکسی برای فالکون

همانطور که توضیح دادم فالکون به صورت یک extension برای PHP ساخته شده است، بنابراین برای فعال کردن آن نیاز به دسترسی ریشه ای به سرور دارید تا فایل php.ini را ویرایش کنید. در اکثر میزبانی های اشتراکی در ایران چنین قابلیتی وجود ندارد اما می توانید از شرکت هاستینگ خود این درخواست را داشته باشید. اگر شرکت هاستینگ درخواست شما را قبول کند این افزونه فعال خواهد شد و به فالکون دسترسی خواهید داشت.

اگر شرکت هاستینگ این درخواست را قبول نکند باید به سراغ خرید VPS بروید تا خودتان به همه چیز دسترسی داشته باشید. من می خواهم در این بخش از مقاله نحوه نصب فالکون را روی VPS های لینوکسی (Ubuntu) نشان بدهم. برای کار با فالکون به موارد زیر نیاز داریم:

  • Apache
  • MySQL
  • PHP
  • Composer

در اکثر VPS هایی که خریداری می کنید به Apache و MySQL و PHP دسترسی دارید (به صورت پیش فرض نصب شده است) اما در عین حال من دستورات نصبشان را برایتان توضیح می دهم. از شما انتظار دارم که خودتان بدانید چطور باید این برنامه ها را پیکربندی کنید. ابتدا تمام repo ها را به روز رسانی می کنیم:

sudo apt update

سپس وب سرور Apache را نصب می کنیم:

sudo apt install apache2

سپس MySQL را نصب می کنیم:

sudo apt install mysql-server

در مرحله بعدی PHP را به همراه برخی از افزونه هایش نصب می کنیم:

sudo apt install php libapache2-mod-php php-mysql php-gd php_pdo php_mysqlnd php_pgsql

هر افزونه دیگری را نیز لازم داشتید نصب کنید. به طور مثال بسته به نحوه استفاده شما از Phalcon ممکن است به افزونه های زیر نیز نیاز داشته باشید:

توجه داشته باشید که شما لزوما به این افزونه ها نیاز ندارید بلکه بسته به نحوه استفاده خود از فالکون ممکن است به آن ها نیاز پیدا کنید. در این صورت می توانید به سادگی آن ها را نصب نمایید.

نکته: برای اجرای فالکون باید از PHP نسخه 7.2 و جدیدتر استفاده کنید. نسخه 7.1 دیگر توسط فالکون پشتیبانی نمی شود.

در مرحله آخر نیز composer را دانلود می کنیم:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

حالا می توانیم با دستور زیر فایل دانلود شده composer را نصب کنیم:

php composer-setup.php --install-dir=/usr/local/bin --filename=composer

از این به بعد با اجرای دستور composer در ترمینال باید composer و نسخه نصب شده آن را مشاهده کنید که یعنی همه چیز با موفقیت نصب شده است.

در مرحله بعدی باید یک افزونه به نام php-psr را نصب کنیم. برای استفاده از فالکون به این افزونه نیاز خواهیم داشت. برای نصب این پکیج ابتدا باید پکیج های وابسته اش را نصب کنیم:

sudo apt install build-essential clang automake autoconf

پس نصب این پکیج ها باید کد های افزونه php-psr را از گیت هاب دانلود کنیم بنابراین در ترمینال می گوییم:

git clone https://github.com/jbboehr/php-psr.git

سپس وارد پوشه ایجاد شده می شویم:

cd php-psr

و سپس دستورات زیر را به ترتیب در ترمینال خود اجرا کنید:

phpize

./configure

make

make test

sudo make install

پس از انجام این کار باید افزونه php-psr ساخته شده با فرمت so را به فایل php.ini اضافه کنیم:

echo extension=psr.so | tee -a /path/to/your/php.ini

البته می توانید به صورت دستی فایل php.ini را باز کرده و این افزونه را در آن قرار بدهید:

extension=psr.so

هر دو روش جواب خواهند داد. در نهایت وب سرور خودتان (Apache) را یک بار ریستارت کنید:

sudo systemctl restart apache2.service

نصب فالکون روی سرور

روش های مختلفی برای نصب فالکون وجود دارد اما ساده ترین آن ها اجرای دستور زیر در ترمینال است:

curl -s https://packagecloud.io/install/repositories/phalcon/stable/script.deb.sh | sudo bash

با انجام این کار repository فالکون برایتان نصب می شود. در مرحله بعدی خود افزونه فالکون را نصب می کنیم:

sudo apt-get install php7.2-phalcon

اگر بعدا به خطایی برخورد کردید می توانید به فایل php.ini رفته و بعد از خط افزونه psr (به شکل extension=psr.so) این خط را اضافه کنید:

extension=phalcon.so

در نهایت فایل php.ini را ذخیره کرده و وب سرور را دوباره ریستارت کنید.

در مرحله بعدی Phalcon developer tools را نصب خواهیم کرد چرا که استفاده از فریم ورک فالکون را برایمان ساده تر می کند. برای این کار ابتدا ترمینال را باز کرده و دستور زیر را اجرا می کنم:

cd /var/www

با این کار وارد پوشه www (پوشه اصلی وب سرور آپاچی) می شویم. در مرحله بعدی با استفاده از این دستور یک فایل composer.json را می سازیم:

nano composer.json

با اجرای این دستور فایل composer.json ایجاد شده و درون ویرایشگر nano باز می شود. شما فقط باید محتوای زیر را در آن کپی کنید:

{

    "require-dev": {

        "phalcon/devtools": "~4.1"

    }

}

حالا کلید های CTRL+X را بزنید تا محتویات بالا درون فایل composer.json ذخیره شوند. در مرحله بعدی دستور زیر را اجرا کنید تا devtools برایمان نصب شود:

composer install

حالا برای ساده تر شدن کار یک alias را به سیستم خودمان اضافه می کنیم:

alias phalcon=/var/www/vendor/phalcon/devtools/phalcon.php

شما می توانید این کد را مستقیما درون فایل bashrc. از سیستم ubuntu خود قرار بدهید و سپس ترمینال را ریستارت کنید. از این به بعد با اجرای دستور phalcon در ترمینال باید نتیجه ای شبیه به نتیجه زیر را مشاهده کنید:

Phalcon DevTools (4.x.x)




Available commands:

info (alias of: i)

commands (alias of: list, enumerate)

controller (alias of: create-controller)

module (alias of: create-module)

model (alias of: create-model)

all-models (alias of: create-all-models)

project (alias of: create-project)

scaffold (alias of: create-scaffold)

migration (alias of: create-migration)

webtools (alias of: create-webtools)

serve (alias of: server)

console (alias of: shell, psysh)

با این حساب همه چیز به درستی نصب شده است. فالکون به شما اجازه می دهد هر نوع ساختاری را برای پوشه های خودتان در نظر بگیرید. من از همان ساختار پیش فرضی استفاده می کنم که ابزار developer tools به ما می دهد. برای این کار ابتدا به پوشه سایت خود در Apache بروید. این آدرس برای من بدین شکل است:

/var/www/roxo.ir/public_html

طبیعتا نام این پوشه بسته به سایت شما متفاوت خواهد بود. باز هم می گویم که من انتظار دارم شما با نحوه کارکرد Apache آشنا باشید. بنابراین ترمینال را باز کرده و دستور زیر را در آن می نویسم:

cd /var/www/roxo.ir/public_html

با انجام این کار ترمینال در مسیر مورد نظر باز می شود. در مرحله بعدی دستور زیر را در ترمینال اجرا می کنیم:

phalcon create-project example

با انجام این کار یک پروژه جدید به نام example برایتان ساخته می شود. طبیعتا شما می توانید هر نامی را به آن بدهید. با انجام این کار Apache پوشه www/roxo.ir را می بیند و محتویات آن را در آدرس سایت نمایش می دهد بنابراین اگر به آدرس YourDomain.com/example در مرورگر بروید باید صفحه اولیه را مشاهده کنید که یک صفحه خوش آمد گویی از طرف فالکون است. طبیعتا باید به جای YourDomain نام دامنه سایت خود را قرار بدهید.

در نظر داشته باشید که ما در این مثال از وب سرور Apache استفاده کرده ایم اما شما می توانید از هر وب سرور دیگری مانند Nginx نیز استفاده نمایید. به طور مثال کد های زیر برای پیکربندی Nginx به همراه PHP-FPM استفاده می شود:

server {

    # Port 80 will require nginx to be started with root permissions

    # Depending on how you install nginx to use port 80 you will need

    # to start the server with `sudo` ports about 1000 do not require

    # root privileges

    # listen      80;




    listen        8000;

    server_name   default;




    ##########################

    # In production require SSL

    # listen 443 ssl default_server;




    # ssl on;

    # ssl_session_timeout  5m;

    # ssl_protocols  SSLv2 SSLv3 TLSv1;

    # ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;

    # ssl_prefer_server_ciphers   on;




    # These locations depend on where you store your certs

    # ssl_certificate        /var/nginx/certs/default.cert;

    # ssl_certificate_key    /var/nginx/certs/default.key;

    ##########################




    # This is the folder that index.php is in

    root /var/www/default/public;

    index index.php index.html index.htm;




    charset utf-8;

    client_max_body_size 100M;

    fastcgi_read_timeout 1800;




    # Represents the root of the domain

    # https://localhost:8000/[index.php]

    location / {

        # Matches URLS `$_GET['_url']`

        try_files $uri $uri/ /index.php?_url=$uri&$args;

    }




    # When the HTTP request does not match the above

    # and the file ends in .php

    location ~ [^/]\.php(/|$) {

        # try_files $uri =404;




        # Ubuntu and PHP7.0-fpm in socket mode

        # This path is dependent on the version of PHP install

        fastcgi_pass  unix:/var/run/php/php7.0-fpm.sock;







        # Alternatively you use PHP-FPM in TCP mode (Required on Windows)

        # You will need to configure FPM to listen on a standard port

        # https://www.nginx.com/resources/wiki/start/topics/examples/phpfastcgionwindows/

        # fastcgi_pass  127.0.0.1:9000;




        fastcgi_index /index.php;




        include fastcgi_params;

        fastcgi_split_path_info ^(.+?\.php)(/.*)$;

        if (!-f $document_root$fastcgi_script_name) {

            return 404;

        }

       

        fastcgi_param PATH_INFO       $fastcgi_path_info;

        # fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;

        # and set php.ini cgi.fix_pathinfo=0

       

        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

    }




    location ~ /\.ht {

        deny all;

    }




    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {

        expires       max;

        log_not_found off;

        access_log    off;

    }

}

شما می توانید با مراجعه به این صفحه از documentation رسمی Phalcon در رابطه با پیکربندی انواع وب سرورها مطالعه کنید. به شما تبریک می گویم، فریم ورک فالکون را نصب کردید!


منبع: وب سایت phalcon

نویسنده شوید

دیدگاه‌های شما

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.