Giunsa ang Pag-install sa Yii PHP Framework sa Ubuntu


Ang Yii (gipahayag nga Yee o [ji:]) usa ka libre ug open-source, paspas, taas nga performance, luwas, flexible apan pragmatic, ug episyente nga generic nga web programming framework para sa pagpalambo sa tanang matang sa web application gamit ang PHP.

Niining artikuloha, makakat-on ka unsaon pag-instalar sa pinakabag-o nga bersyon sa Yii framework sa Ubuntu LTS (long-term nga suporta) nga gipagawas aron masugdan ang pag-ugmad sa modernong PHP Web applications.

Gihuptan ni Yii ang mosunod nga Ubuntu LTS (long-term nga suporta) nga pagpagawas:

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

  • Usa ka nagdagan nga instance sa Ubuntu server.
  • Usa ka LEMP stack nga adunay PHP 5.4.0 o labaw pa.
  • Usa ka Composer – usa ka application-level package manager para sa PHP.

Niini nga panid

  • Pag-instalar sa Yii Framework pinaagi sa Composer sa Ubuntu
  • Pagpadagan sa Yii Gamit ang PHP Development Server
  • Pagpadagan sa Yii Project sa Production Gamit ang NGINX HTTP Server
  • Enable HTTPS sa Yii Applications Gamit ang Let's Encrypt

Adunay duha ka paagi sa pag-instalar sa Yii, gamit ang Composer package manager o pinaagi sa pag-instalar niini gikan sa archive file. Ang kanhi mao ang girekomendar nga paagi, tungod kay kini makapahimo kanimo sa pag-instalar sa bag-ong mga extension o pag-update sa Yii pinaagi sa usa ka sugo.

Kung wala kay Composer nga na-install, mahimo nimo kini i-install gamit ang mga mosunod nga mga sugo, nga sa ulahi mag-install sa Yii ug magdumala sa mga dependency niini.

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

Kung na-install na nimo ang kompositor, balhin sa direktoryo /var/www/html/ nga magtipig sa imong mga aplikasyon sa web o mga file sa website, dayon i-install ang Yii package gamit ang kompositor (ilisan ang testproject sa ngalan sa imong direktoryo sa web application).

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

Niini nga punto, andam ka nga magsugod sa paggamit sa Yii framework alang sa kalamboan. Para makadagan ang PHP development server, balhin sa testprojects directory (ang imong directory name kinahanglang lahi depende sa imong gispesipiko sa miaging command), unya ilunsad ang development server. Sa kasagaran, kini kinahanglan nga modagan sa port 8080.

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

Aron mapadagan ang development server sa laing pantalan, pananglitan, port 5000, gamita ang --port nga bandera sama sa gipakita.

$ php yii serve --port=5000

Dayon ablihi ang imong web browser ug pag-navigate gamit ang mosunod nga adres:

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

Aron ma-deploy ug ma-access ang aplikasyon sa Yii sa produksiyon, nanginahanglan usa ka HTTP server sama sa gisuportahan nga software sa Web server.

Aron ma-access ang Yii application nga dili i-type ang imong port, kinahanglan nimo nga maghimo sa gikinahanglan nga DNS A record aron matudlo ang imong domain sa imong Yii framework application server.

Alang sa kini nga giya, ipakita namon kung giunsa ang pag-deploy sa aplikasyon sa Yii sa NGINX. Busa, kinahanglan kang maghimo ug virtual host o server block configuration file ubos sa /etc/nginx/sites-available/ directory para sa imong aplikasyon aron ang NGINX makaalagad niini.

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

Kopyaha ug idikit ang mosunod nga configuration niini (ilisan ang testprojects.me ug www.testprojects.me sa imong domain name). Ipiho usab ang mga paagi nga ipaagi sa NGINX ang mga hangyo sa FastCGI sa PHP-FPM, sa kini nga pananglitan, naggamit kami usa ka UNIX socket (/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;
    }
}

I-save ang file ug isira kini.

Unya susiha ang NGINX configuration syntax alang sa pagkahusto, kung kini Ok, pagana ang bag-ong aplikasyon sama sa gipakita:

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

Dayon i-restart ang serbisyo sa NGINX aron magamit ang bag-ong mga pagbag-o:

$ sudo systemctl restart nginx

Balik sa imong web browser ug pag-navigate gamit ang imong domain name.

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

Sa katapusan, kinahanglan nimo nga i-enable ang HTTPS sa imong website. Mahimo nimong gamiton ang usa ka libre nga Let's Encrypt SSL/TLS nga sertipiko (nga awtomatiko ug giila sa tanan nga modernong mga web browser) o makakuha usa ka sertipiko gikan sa usa ka komersyal nga CA.

Kung magdesisyon ka nga mogamit usa ka sertipiko sa Let's Encrypt, mahimo kini awtomatiko nga ma-install ug ma-configure gamit ang tool sa certbot. Aron ma-install ang certbot, kinahanglan nimo nga i-install ang snapd aron ma-install kini.

$ sudo snap install --classic certbot

Dayon gamita ang certbot aron makuha ug i-install/i-configure ang imong libre nga SSL/TLS nga sertipiko para magamit sa NGINX web server (paghatag ug balido nga email alang sa pagbag-o ug sunda ang mga prompt aron makompleto ang instalasyon):

$ sudo certbot --nginx

Karon adto sa imong web browser sa makausa pa aron sa pagkumpirma nga ang imong Yii nga aplikasyon nagdagan na karon sa HTTPS (hinumdomi nga ang HTTP kinahanglan nga awtomatikong i-redirect sa HTTPS).

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

Para sa dugang nga impormasyon sama sa pagkonektar sa imong aplikasyon sa database, tan-awa ang Yii framework documentation gikan sa opisyal nga Yii project website. Sulayi kini ug ipaambit ang imong mga hunahuna bahin sa Yii o pangutana bisan unsang pangutana pinaagi sa porma sa feedback sa ubos.