Ubuntu-da Yii PHP çarçuwasyny nädip gurmaly


Yii (Yee ýa-da [ji:] diýilýär) erkin we açyk çeşme, çalt, ýokary öndürijilik, ygtybarly, çeýe, ýöne pragmatiki we PHP ulanyp, her dürli web programmalaryny ösdürmek üçin umumy web programma üpjünçiligi çarçuwasydyr.

Bu makalada häzirki zaman PHP web programmalaryny ösdürip başlamak üçin Ubuntu LTS (uzak möhletleýin goldaw) goýberişlerinde Yii çarçuwasynyň iň soňky wersiýasyny nädip gurmalydygyny öwrenersiňiz.

Yii Ubuntu LTS (uzak möhletleýin goldaw) neşirlerini saklaýar:

  • Ubuntu 20.04 LTS (\ Fokal)
  • Ubuntu 18.04 LTS (\ Bionic)
  • Ubuntu 16.04 LTS (\ Ksenial)

  • Ubuntu serweriniň işleýän mysaly.
  • PHP 5.4.0 ýa-da ondan ýokary LEMP ýygyndysy.
  • Kompozitor - PHP üçin programma derejesindäki paket dolandyryjysy.

Bu sahypada

  • Ubuntu-da kompozitor arkaly Yii çarçuwasyny gurmak
  • PHP Ösüş Serwerini ulanyp Yii işletmek
  • NGINX HTTP serwerini ulanyp önümçilikde Yii taslamasyny işletmek
  • Geliň şifrlemek arkaly Yii programmalarynda HTTPS açyň

“Yii” -ni “Composer” paket dolandyryjysyny ulanyp ýa-da arhiw faýlyndan gurnamagyň iki usuly bar. Öňküsi maslahat berilýär, sebäbi size täze giňeltmeler gurmaga ýa-da ýekeje buýruk bilen Yii täzelemäge mümkinçilik berýär.

Kompozitor gurulmadyk bolsa, aşakdaky buýruklary ulanyp gurup bilersiňiz, soňra Yii gurar we garaşlylygyny dolandyrar.

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

Kompozitor gurlandan soň, web programmalaryňyzy ýa-da web sahypalaryňyzyň faýllaryny saklaýan /var/www/html/ bukjasyna geçiň, soňra kompozitor ulanyp Yii paketini guruň (synag taslamasyny adyňyz bilen çalşyň web programmasynyň katalogy).

$ cd /var/www/html/
$ composer create-project --prefer-dist yiisoft/yii2-app-basic testproject

Bu pursatda, ösüş üçin Yii çarçuwasyny ulanyp başlamaga taýyn. PHP ösüş serwerini işletmek üçin testprojects katalogyna geçiň (katalogyňyzyň ady öňki buýrukda görkezeniňize görä üýtgeşik bolmaly), soňra ösüş serwerini işe giriziň. Düzgüne görä, 8080-nji portda işlemeli.

$ cd /var/www/html/testproject/
$ php yii serve

Ösüş serwerini başga portda, mysal üçin 5000 portda işletmek üçin, görkezilişi ýaly --port baýdagyny ulanyň.

$ php yii serve --port=5000

Soňra web brauzeriňizi açyň we aşakdaky adresi ulanyp geziň:

http://SERVER_IP:8080
OR
http://SERVER_IP:5000

Önümçilikde Yii programmasyny ýerleşdirmek we oňa girmek üçin goldanýan web serwer programma üpjünçiligi ýaly HTTP serweri gerek.

Portuňyzy ýazmazdan Yii programmasyna girmek üçin domeniňizi Yii çarçuwaly programma serwerine görkezmek üçin zerur DNS A ýazgysyny döretmeli.

Bu gollanma üçin, NGINX bilen Yii programmasyny nädip ýerleşdirmelidigini görkezeris. Şeýlelik bilen, NGINX hyzmat edip biler ýaly, programmaňyz üçin/etc/nginx/sites-available/katalogynyň aşagynda wirtual host ýa-da serwer blok konfigurasiýa faýly döretmeli.

$ sudo vim /etc/nginx/sites-available/testproject.me.conf

Aşakdaky konfigurasiýany göçüriň we göçüriň ( testprojects.me we www.testprojects.me domen adyňyz bilen çalşyň). Şeýle hem, NGINX-iň FastCGI haýyşlaryny PHP-FPM-e geçirjekdigini kesgitläň, bu mysalda UNIX rozetkasyny ulanýarys (/run/php/php7.4-fpm.sock):

server {
    set $host_path "/var/www/html/testproject";
    #access_log  /www/testproject/log/access.log  main;

    server_name  testprojects.me www.testprojects.me;
    root   $host_path/web;
    set $yii_bootstrap "index.php";

    charset utf-8;

    location / {
        index  index.html $yii_bootstrap;
        try_files $uri $uri/ /$yii_bootstrap?$args;
    }

    location ~ ^/(protected|framework|themes/\w+/views) {
        deny  all;
    }

    #avoid processing of calls to unexisting static files by yii
    location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
        try_files $uri =404;
    }

    # pass the PHP scripts to FastCGI server listening on UNIX socket 
    location ~ \.php {
        fastcgi_split_path_info  ^(.+\.php)(.*)$;

        #let yii catch the calls to unexising PHP files
        set $fsn /$yii_bootstrap;
        if (-f $document_root$fastcgi_script_name){
            set $fsn $fastcgi_script_name;
        }
       fastcgi_pass   unix:/run/php/php7.4-fpm.sock;
        include fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fsn;

       #PATH_INFO and PATH_TRANSLATED can be omitted, but RFC 3875 specifies them for CGI
        fastcgi_param  PATH_INFO        $fastcgi_path_info;
        fastcgi_param  PATH_TRANSLATED  $document_root$fsn;
    }

    # prevent nginx from serving dotfiles (.htaccess, .svn, .git, etc.)
    location ~ /\. {
        deny all;
        access_log off;
        log_not_found off;
    }
}

Faýly ýazdyryň we ýapyň.

Soňra NGINX konfigurasiýa sintaksisiniň dogrulygyny barlaň, eger Ok bolsa, täze programmany görkezilişi ýaly işlediň:

$ sudo nginx -t
$ sudo ln -s /etc/nginx/sites-available/testprojects.me.conf /etc/nginx/sites-enabled/testprojects.me.conf

Soňra täze üýtgeşmeleri ulanmak üçin NGINX hyzmatyny täzeden açyň:

$ sudo systemctl restart nginx

Web brauzeriňize gaýdyp, domen adyňyz bilen geziň.

http://testprojects.me
OR
http://www.testprojects.me

Netijede, web sahypaňyzda HTTPS-i işletmeli. Mugt “Let Encrypt SSL/TLS” şahadatnamasyny ulanyp bilersiňiz (bu häzirki zaman web brauzerleri tarapyndan awtomatlaşdyrylan we ykrar edilýär) ýa-da täjirçilik CA-dan şahadatnama alyp bilersiňiz.

“Geliň, şifrlemek” şahadatnamasyny ulanmak kararyna gelseňiz, sertifikat guralyny ulanyp awtomatiki gurup we sazlap bolýar. Certbot gurmak üçin, ony gurmak üçin snapd gurmaly.

$ sudo snap install --classic certbot

Soňra NGINX web serweri bilen ulanmak üçin mugt SSL/TLS şahadatnamany almak we gurmak/sazlamak üçin certbot ulanyň (täzelenmek üçin dogry e-poçta beriň we gurnamany tamamlamak baradaky görkezmelere eýeriň):

$ sudo certbot --nginx

Indi Yii programmaňyzyň HTTPS-de işleýändigini tassyklamak üçin web brauzeriňize ýene bir gezek giriň (HTTP awtomatiki usulda HTTPS-e gönükdirilmelidigini ýadyňyzdan çykarmaň).

http://testprojects.me
OR
http://www.testprojects.me

Programmaňyzy maglumat bazasyna birikdirmek ýaly has giňişleýin maglumat üçin resmi Yii taslama web sahypasyndan Yii çarçuwaly resminamalara serediň. Synap görüň we Yii hakda pikirleriňizi paýlaşyň ýa-da aşakdaky seslenme formasy arkaly sorag beriň.