ວິທີການຕິດຕັ້ງ Yii PHP Framework ໃນ Ubuntu


Yii (ອອກສຽງວ່າ Yee ຫຼື [ji:]) ເປັນແຫຼ່ງເປີດທີ່ບໍ່ເສຍຄ່າແລະເປີດ, ໄວ, ມີປະສິດຕິພາບສູງ, ປອດໄພ, ມີຄວາມຍືດຫຍຸ່ນແຕ່ຍັງມີຄວາມຄ່ອງແຄ້ວ, ແລະມີໂຄງຮ່າງການຂຽນໂປແກຼມເວັບທົ່ວໄປທີ່ມີປະສິດທິພາບໃນການພັດທະນາໂປແກຼມເວັບທຸກປະເພດໂດຍໃຊ້ PHP.

ໃນບົດຂຽນນີ້, ທ່ານຈະໄດ້ຮຽນຮູ້ວິທີການຕິດຕັ້ງກອບ Yii ລຸ້ນ ໃໝ່ ຫຼ້າສຸດໃນ Ubuntu LTS (ການສະ ໜັບ ສະ ໜູນ ໄລຍະຍາວ) ເພື່ອເລີ່ມຕົ້ນການພັດທະນາໂປແກຼມ PHP Web ທີ່ທັນສະ ໄໝ.

Yii ຖືລຸ້ນ Ubuntu LTS (ການສະ ໜັບ ສະ ໜູນ ໄລຍະຍາວ) ຕໍ່ໄປນີ້:

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

  • ຕົວຢ່າງທີ່ໃຊ້ງານຂອງ server server.
  • stack LEMP ກັບ PHP 5.4.0 ຫຼືສູງກວ່າ.
  • ເຄື່ອງປະກອບຂໍ້ມູນ - ເປັນຜູ້ຈັດການລະດັບໂປແກຼມ ສຳ ລັບ PHP.

ໃນ ໜ້າ ນີ້

  • ຕິດຕັ້ງກອບ Yii ຜ່ານ Composer ໃນ Ubuntu
  • ແລ່ນ Yii ໂດຍໃຊ້ໂປແກຼມພັດທະນາ PHP
  • ການແລ່ນໂຄງການ Yii ໃນການຜະລິດໂດຍໃຊ້ NGINX HTTP Server
  • ເປີດໃຊ້ HTTPS ໃນ Yii Applications ໂດຍໃຊ້ Let’s encryption

ມີສອງວິທີໃນການຕິດຕັ້ງ Yii, ໂດຍໃຊ້ຕົວຈັດການຊຸດ Composer ຫຼືໂດຍການຕິດຕັ້ງມັນຈາກເອກະສານເກັບ. ແບບເກົ່າແມ່ນວິທີທີ່ແນະ ນຳ, ເພາະມັນຊ່ວຍໃຫ້ທ່ານສາມາດຕິດຕັ້ງການຂະຫຍາຍ ໃໝ່ ຫລືປັບປຸງ Yii ໂດຍ ຄຳ ສັ່ງດຽວ.

ຖ້າທ່ານບໍ່ໄດ້ຕິດຕັ້ງ Composer, ທ່ານສາມາດຕິດຕັ້ງມັນໂດຍໃຊ້ ຄຳ ສັ່ງຕໍ່ໄປນີ້ເຊິ່ງຕໍ່ມາຈະຕິດຕັ້ງ Yii ແລະຈັດການຄວາມເພິ່ງພາອາໄສຂອງມັນ.

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

ເມື່ອທ່ານໄດ້ຕິດຕັ້ງຕົວປະກອບແລ້ວ, ຍ້າຍເຂົ້າໄປໃນໄດເລກະທໍລີ /var/www/html/ ເຊິ່ງຈະເກັບຮັກສາໂປແກຼມເວັບຂອງທ່ານຫຼືໄຟລ໌ເວບໄຊທ໌, ຫຼັງຈາກນັ້ນຕິດຕັ້ງຊຸດ Yii ໂດຍໃຊ້ເຄື່ອງປະກອບ (ທົດແທນໂຄງການທີ່ມີຊື່ຂອງທ່ານ ໄດເລກະທໍລີຂອງ web application).

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

ໃນຈຸດນີ້, ທ່ານພ້ອມແລ້ວທີ່ຈະເລີ່ມ ນຳ ໃຊ້ກອບ Yii ເພື່ອການພັດທະນາ. ເພື່ອ ດຳ ເນີນການ server ພັດທະນາ PHP, ຍ້າຍເຂົ້າໄປທີ່ໄດເລກະທໍລີທົດລອງ (ຊື່ໄດເລກະທໍລີຂອງທ່ານຄວນຈະແຕກຕ່າງກັນຂື້ນກັບສິ່ງທີ່ທ່ານລະບຸໄວ້ໃນ ຄຳ ສັ່ງກ່ອນ), ຈາກນັ້ນເປີດຕົວ server ພັດທະນາ. ໂດຍຄ່າເລີ່ມຕົ້ນ, ມັນຄວນຈະໃຊ້ງານຢູ່ port 8080.

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

ເພື່ອ ດຳ ເນີນການ server ພັດທະນາຢູ່ໃນພອດອື່ນ, ຍົກຕົວຢ່າງ port 5000, ໃຊ້ທຸງ --port ຕາມທີ່ສະແດງ.

$ php yii serve --port=5000

ຫຼັງຈາກນັ້ນເປີດໂປແກຼມທ່ອງເວັບຂອງທ່ານແລະ ນຳ ທາງໂດຍໃຊ້ທີ່ຢູ່ດັ່ງຕໍ່ໄປນີ້:

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

ເພື່ອ ນຳ ໃຊ້ແລະເຂົ້າໃຊ້ໂປແກຼມ Yii ໃນການຜະລິດ, ຕ້ອງມີເຄື່ອງແມ່ຂ່າຍ HTTP ເຊັ່ນ NGINX, Apache/HTTPD, ຫຼືໂປແກຼມ Web server ອື່ນໆທີ່ຮອງຮັບ.

ເພື່ອເຂົ້າໃຊ້ໂປແກຼມ Yii ໂດຍບໍ່ຕ້ອງພິມທີ່ Port ຂອງທ່ານ, ທ່ານຕ້ອງສ້າງບັນທຶກ DNS ທີ່ຕ້ອງການເພື່ອບັນທຶກໂດເມນຂອງທ່ານໄປທີ່ server ຂອງທ່ານ.

ສຳ ລັບ ຄຳ ແນະ ນຳ ນີ້, ພວກເຮົາຈະສະແດງວິທີການ ນຳ ໃຊ້ໂປແກຼມ Yii ກັບ NGINX. ດັ່ງນັ້ນ, ທ່ານ ຈຳ ເປັນຕ້ອງສ້າງແຟ້ມການຕັ້ງຄ່າໂຮດຕິ້ງຫລືເຊີຟເວີເສມືນພາຍໃຕ້// etc/nginx/sites-available/ໄດເລກະທໍລີ ສຳ ລັບການສະ ໝັກ ຂອງທ່ານເພື່ອໃຫ້ NGINX ສາມາດຮັບໃຊ້ມັນ.

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

ຄັດລອກແລະວາງລົງການຕັ້ງຄ່າຕໍ່ໄປນີ້ໃນມັນ (ທົດແທນ testprojects.me ແລະ www.testprojects.me ດ້ວຍຊື່ໂດເມນຂອງທ່ານ). ພ້ອມທັງລະບຸວິທີການ NGINX ຈະສົ່ງ ຄຳ ຮ້ອງຂໍ FastCGI ໄປທີ່ PHP-FPM, ໃນຕົວຢ່າງນີ້, ພວກເຮົາ ກຳ ລັງໃຊ້ເຕົ້າຮັບ 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;
    }
}

ບັນທຶກເອກະສານແລະປິດມັນ.

ຫຼັງຈາກນັ້ນກວດເບິ່ງ syntax ການຕັ້ງຄ່າ NGINX ເພື່ອຄວາມຖືກຕ້ອງ, ຖ້າມັນບໍ່ເປັນຫຍັງ, ໃຫ້ເປີດໃຊ້ໂປແກຼມ ໃໝ່ ດັ່ງທີ່ສະແດງ:

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

ຫຼັງຈາກນັ້ນໃຫ້ບໍລິການ NGINX ເລີ່ມຕົ້ນເພື່ອ ນຳ ໃຊ້ການປ່ຽນແປງ ໃໝ່:

$ sudo systemctl restart nginx

ກັບໄປທີ່ຕົວທ່ອງເວັບເວັບໄຊຕ໌ຂອງທ່ານແລະ ນຳ ທາງຊື່ໂດເມນຂອງທ່ານ.

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

ສຸດທ້າຍ, ທ່ານຕ້ອງການເປີດໃຊ້ HTTPS ໃນເວັບໄຊທ໌ຂອງທ່ານ. ທ່ານສາມາດໃຊ້ໃບຢັ້ງຢືນ SSL/TLS ຟຣີຂອງ Let’s Let’s (ທີ່ຖືກອັດຕະໂນມັດແລະຖືກຮັບຮູ້ໂດຍຕົວທ່ອງເວັບເວັບໄຊຕ໌ທີ່ທັນສະ ໄໝ ທັງ ໝົດ) ຫຼືໄດ້ຮັບໃບຢັ້ງຢືນຈາກ CA ການຄ້າ.

ຖ້າທ່ານຕັດສິນໃຈໃຊ້ໃບຢັ້ງຢືນ Let’s Encrypt, ມັນສາມາດຕິດຕັ້ງແລະຕັ້ງຄ່າໂດຍອັດຕະໂນມັດໂດຍໃຊ້ເຄື່ອງມື certbot. ການຕິດຕັ້ງ certbot, ທ່ານຕ້ອງການຕິດຕັ້ງ snapd ເພື່ອຕິດຕັ້ງມັນ.

$ sudo snap install --classic certbot

ຫຼັງຈາກນັ້ນໃຫ້ໃຊ້ certbot ເພື່ອຮັບແລະຕິດຕັ້ງ/ຕັ້ງຄ່າໃບຢັ້ງຢືນ SSL/TLS ທີ່ບໍ່ເສຍຄ່າຂອງທ່ານເພື່ອໃຊ້ກັບ server server NGINX (ໃຫ້ອີເມວທີ່ຖືກຕ້ອງ ສຳ ລັບການຕໍ່ອາຍຸແລະປະຕິບັດຕາມການກະຕຸ້ນເຕືອນໃຫ້ ສຳ ເລັດການຕິດຕັ້ງ):

$ sudo certbot --nginx

ດຽວນີ້ເຂົ້າໄປທີ່ ໜ້າ ເວັບຂອງທ່ານອີກຄັ້ງ ໜຶ່ງ ເພື່ອຢັ້ງຢືນວ່າໂປແກຼມ Yii ຂອງທ່ານ ກຳ ລັງໃຊ້ຢູ່ HTTPS (ຈື່ HTTP ຄວນຈະໂອນໄປຫາ HTTPS ໂດຍອັດຕະໂນມັດ).

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

ສຳ ລັບຂໍ້ມູນເພີ່ມເຕີມເຊັ່ນການເຊື່ອມຕໍ່ໃບສະ ໝັກ ຂອງທ່ານກັບຖານຂໍ້ມູນ, ເບິ່ງເອກະສານກອບ Yii ຈາກເວັບໄຊທ໌ໂຄງການ Yii ຢ່າງເປັນທາງການ. ທົດລອງແລະແບ່ງປັນຄວາມຄິດຂອງທ່ານກ່ຽວກັບ Yii ຫຼືຖາມ ຄຳ ຖາມໃດໆຜ່ານແບບຟອມ ຄຳ ເຫັນຂ້າງລຸ່ມນີ້.