Bii o ṣe le Fi Framework Yii PHP sori Ubuntu


Yii (ti a pe ni Yee tabi [ji:]) jẹ orisun ọfẹ ati ṣiṣi, iyara, iṣẹ giga, aabo, rọ sibẹsibẹ pragmatic, ati ilana siseto wẹẹbu jeneriki daradara fun idagbasoke gbogbo iru awọn ohun elo wẹẹbu nipa lilo PHP.

Ninu nkan yii, iwọ yoo kọ bi o ṣe le fi sori ẹrọ ẹya tuntun ti ilana Yii ni Ubuntu LTS (awọn atilẹyin igba pipẹ) awọn idasilẹ lati bẹrẹ idagbasoke awọn ohun elo Wẹẹbu PHP igbalode.

Yii ni idaduro Ubuntu LTS atẹle (atilẹyin igba pipẹ) awọn idasilẹ:

  • Ubuntu 20.04 LTS (\ "Focal")
  • Ubuntu 18.04 LTS (\ "Bionic")
  • Ubuntu 16.04 LTS (\ "Xenial")

  • Apẹẹrẹ ti nṣiṣẹ ti olupin Ubuntu.
  • A akopọ LEMP pẹlu PHP 5.4.0 tabi loke.
  • Olupilẹṣẹ iwe-oluṣakoso ohun elo ipele-ipele fun PHP.

Lori oju-iwe yii

  • Fifi Ilana Yii nipasẹ Olupilẹṣẹ iwe ni Ubuntu
  • Nṣiṣẹ Yii Lilo PHP Olupilẹṣẹ Idagbasoke
  • Ṣiṣe Ṣiṣe Yii ni Ṣiṣejade Lilo Lilo NGINX HTTP Server
  • Jeki HTTPS lori Awọn ohun elo Yii Lilo Jẹ ki Encrypt

Awọn ọna meji lo wa lati fi sori ẹrọ Yii, ni lilo oluṣakoso package Olupilẹṣẹ tabi nipa fifi sii lati faili faili iwe-ipamọ kan. Eyi akọkọ jẹ ọna ti a ṣe iṣeduro, bi o ṣe fun ọ laaye lati fi awọn amugbooro tuntun sori ẹrọ tabi imudojuiwọn Yii nipasẹ aṣẹ kan.

Ti o ko ba fi Olupilẹṣẹ sori ẹrọ, o le fi sii nipa lilo awọn ofin wọnyi, eyi ti yoo fi Yii sii nigbamii ati ṣakoso awọn igbẹkẹle rẹ.

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

Lọgan ti o ba ti fi olupilẹṣẹ sori ẹrọ, gbe sinu itọsọna /var/www/html/ eyi ti yoo tọju awọn ohun elo wẹẹbu rẹ tabi awọn faili oju opo wẹẹbu, lẹhinna fi sori ẹrọ package Yii nipa lilo olupilẹṣẹ (rọpo iṣẹ akanṣe pẹlu orukọ ti rẹ itọsọna ohun elo wẹẹbu).

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

Ni aaye yii, o ti ṣetan lati bẹrẹ lilo ilana Yii fun idagbasoke. Lati ṣiṣe olupin idagbasoke PHP, gbe sinu ilana awọn iṣẹ akanṣe (orukọ itọsọna rẹ yẹ ki o yatọ si da lori ohun ti o sọ tẹlẹ ninu aṣẹ ti tẹlẹ), lẹhinna ṣe ifilọlẹ olupin idagbasoke. Nipa aiyipada, o yẹ ki o ṣiṣẹ lori ibudo 8080.

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

Lati ṣiṣe olupin idagbasoke lori ibudo miiran, fun apẹẹrẹ, ibudo 5000, lo asia --port bi o ti han.

$ php yii serve --port=5000

Lẹhinna ṣii aṣawakiri wẹẹbu rẹ ki o lọ kiri ni lilo adirẹsi atẹle:

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

Lati fi ranṣẹ ati iraye si ohun elo Yii ni iṣelọpọ, nilo olupin HTTP gẹgẹbi sọfitiwia olupin Wẹẹbu ti o ni atilẹyin.

Lati wọle si ohun elo Yii laisi titẹ ibudo rẹ, o nilo lati ṣẹda DNS ti a beere A lati tọka si agbegbe rẹ si olupin ohun elo ilana Yii rẹ.

Fun itọsọna yii, a yoo fihan bi a ṣe le fi ohun elo Yii ranṣẹ pẹlu NGINX. Nitorinaa, o nilo lati ṣẹda agbalejo foju tabi faili iṣeto iṣeto bulọọki olupin labẹ/ati be be/nginx/awọn aaye wa/itọsọna fun ohun elo rẹ ki NGINX le ṣe iranṣẹ fun.

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

Daakọ ati lẹẹ iṣeto ti atẹle naa ninu rẹ (rọpo testprojects.me ati www.testprojects.me pẹlu orukọ ibugbe rẹ). Tun ṣafihan awọn ọna NGINX yoo kọja awọn ibeere FastCGI si PHP-FPM, ninu apẹẹrẹ yii, a nlo iho UNIX (/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;
    }
}

Fipamọ faili naa ki o pa.

Lẹhinna ṣayẹwo sintasi iṣeto NGINX fun atunṣe, ti o ba dara, mu ohun elo tuntun ṣiṣẹ bi o ti han:

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

Lẹhinna tun bẹrẹ iṣẹ NGINX lati lo awọn ayipada tuntun:

$ sudo systemctl restart nginx

Pada si ẹrọ aṣawakiri wẹẹbu rẹ ki o lọ kiri pẹlu orukọ ašẹ rẹ.

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

Ni ikẹhin, o nilo lati mu HTTPS ṣiṣẹ lori oju opo wẹẹbu rẹ. O le lo ọfẹ Jẹ ki a Encrypt SSL/TLS ijẹrisi (eyiti o jẹ adaṣe ati idanimọ nipasẹ gbogbo awọn aṣawakiri wẹẹbu igbalode) tabi gba iwe-ẹri lati CA ti iṣowo.

Ti o ba pinnu lati lo iwe-ẹri Jẹ ki Encrypt, o le fi sori ẹrọ laifọwọyi ati tunto nipa lilo ọpa certbot. Lati fi sori ẹrọ certbot, o nilo lati fi sori ẹrọ snapd lati fi sii.

$ sudo snap install --classic certbot

Lẹhinna lo certbot lati gba ati fi sori ẹrọ/tunto ijẹrisi SSL/TLS ọfẹ rẹ fun lilo pẹlu olupin ayelujara NGINX (pese imeeli ti o wulo fun isọdọtun ki o tẹle awọn itọpa lati pari fifi sori ẹrọ):

$ sudo certbot --nginx

Bayi lọ si aṣawakiri wẹẹbu rẹ lẹẹkan si lati jẹrisi pe ohun elo Yii rẹ ti n ṣiṣẹ ni bayi lori HTTPS (ranti HTTP yẹ ki o ṣe atunṣe laifọwọyi si HTTPS).

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

Fun alaye diẹ sii bii sisopọ ohun elo rẹ si ibi ipamọ data, wo iwe ilana ilana Yii lati oju opo wẹẹbu iṣẹ akanṣe Yii. Fun u ni idanwo ati pin awọn ero rẹ nipa Yii tabi beere eyikeyi ibeere nipasẹ fọọmu esi ni isalẹ.