ค้นหาเว็บไซต์

วิธีการติดตั้ง Yii PHP Framework บน Ubuntu


Yii (ออกเสียงว่า Yee หรือ [ji:]) เป็นโอเพ่นซอร์สฟรี รวดเร็ว ประสิทธิภาพสูง ปลอดภัย ยืดหยุ่น แต่ใช้งานได้จริง และเฟรมเวิร์กการเขียนโปรแกรมเว็บทั่วไปที่มีประสิทธิภาพสำหรับการพัฒนาเว็บแอปพลิเคชันทุกประเภทโดยใช้ PHP

ในบทความนี้ คุณจะได้เรียนรู้วิธีติดตั้ง เฟรมเวิร์ก Yii เวอร์ชันล่าสุดในรุ่น Ubuntu LTS (การสนับสนุนระยะยาว) เพื่อเริ่มพัฒนาเว็บแอปพลิเคชัน PHP สมัยใหม่

การสนับสนุนแพลตฟอร์ม

Yii มี Ubuntu LTS (การสนับสนุนระยะยาว) รุ่นต่อไปนี้:

  • Ubuntu 20.04 LTS (“โฟกัส”)
  • Ubuntu 18.04 LTS (“ไบโอนิค”)
  • อูบุนตู 16.04 LTS (“Xenial”)

ความต้องการ

  • อินสแตนซ์ที่ทำงานอยู่ของเซิร์ฟเวอร์ Ubuntu
  • LEMP stack ที่มี PHP 5.4.0 หรือสูงกว่า
  • A Composer – ตัวจัดการแพ็คเกจระดับแอปพลิเคชันสำหรับ PHP

บนหน้านี้

  • การติดตั้ง Yii Framework ผ่าน Composer ใน Ubuntu
  • ใช้งาน Yii โดยใช้เซิร์ฟเวอร์การพัฒนา PHP
  • การรันโปรเจ็กต์ Yii ในการผลิตโดยใช้เซิร์ฟเวอร์ NGINX HTTP
  • เปิดใช้งาน HTTPS บนแอปพลิเคชัน Yii โดยใช้ Let's Encrypt

มีสองวิธีในการติดตั้ง Yii โดยใช้ตัวจัดการแพ็คเกจ Composer หรือโดยการติดตั้งจากไฟล์เก็บถาวร วิธีแรกเป็นวิธีที่แนะนำ เนื่องจากช่วยให้คุณสามารถติดตั้งส่วนขยายใหม่หรืออัปเดต Yii ด้วยคำสั่งเดียว

การติดตั้ง Yii Framework ผ่าน Composer ใน Ubuntu

หากคุณไม่ได้ติดตั้ง 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 โดยใช้คำสั่ง ผู้แต่ง (แทนที่ testproject ด้วยชื่อไดเรกทอรีของแอปพลิเคชันเว็บของคุณ)

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

ใช้งาน Yii โดยใช้เซิร์ฟเวอร์การพัฒนา PHP

ณ จุดนี้ คุณพร้อมที่จะเริ่มใช้เฟรมเวิร์ก Yii เพื่อการพัฒนาแล้ว หากต้องการเรียกใช้เซิร์ฟเวอร์การพัฒนา PHP ให้ย้ายไปยังไดเร็กทอรี testprojects (ชื่อไดเร็กทอรีของคุณควรแตกต่างกันขึ้นอยู่กับสิ่งที่คุณระบุไว้ในคำสั่งก่อนหน้า) จากนั้นจึงเปิดเซิร์ฟเวอร์การพัฒนา ตามค่าเริ่มต้น ควรทำงานบนพอร์ต 8080

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

หากต้องการรันเซิร์ฟเวอร์การพัฒนาบนพอร์ตอื่น เช่น พอร์ต 5000 ให้ใช้แฟล็ก --port ตามที่แสดง

php yii serve --port=5000

จากนั้นเปิดเว็บเบราว์เซอร์ของคุณและนำทางโดยใช้ที่อยู่ต่อไปนี้:

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

การรันโปรเจ็กต์ Yii ในการผลิตโดยใช้เซิร์ฟเวอร์ NGINX HTTP

หากต้องการปรับใช้และเข้าถึงแอปพลิเคชัน Yii ในการใช้งานจริง ต้องใช้เซิร์ฟเวอร์ HTTP เช่น NGINX, Apache/HTTPD หรือซอฟต์แวร์เว็บเซิร์ฟเวอร์อื่นๆ ที่รองรับ

หากต้องการเข้าถึงแอปพลิเคชัน Yii โดยไม่ต้องพิมพ์พอร์ต คุณจะต้องสร้างระเบียน DNS A ที่จำเป็นเพื่อชี้โดเมนของคุณไปยังเซิร์ฟเวอร์แอปพลิเคชันเฟรมเวิร์ก Yii ของคุณ .

สำหรับคู่มือนี้ เราจะแสดงวิธีการปรับใช้แอปพลิเคชัน 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 (/ วิ่ง/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;
    }
}

บันทึกไฟล์และปิด

จากนั้นตรวจสอบความถูกต้องของไวยากรณ์การกำหนดค่า 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 บนแอปพลิเคชัน Yii โดยใช้ Let's Encrypt

สุดท้าย คุณต้องเปิดใช้งาน HTTPS บนเว็บไซต์ของคุณ คุณสามารถใช้ใบรับรอง Let's Encrypt SSL/TLS ฟรี (ซึ่งเป็นระบบอัตโนมัติและได้รับการยอมรับจากเว็บเบราว์เซอร์สมัยใหม่ทั้งหมด) หรือรับใบรับรองจาก CA เชิงพาณิชย์

หากคุณตัดสินใจที่จะใช้ใบรับรอง Let's Encrypt คุณจะสามารถติดตั้งและกำหนดค่าได้โดยอัตโนมัติโดยใช้เครื่องมือ certbot หากต้องการติดตั้ง certbot คุณต้องติดตั้ง snapd เพื่อติดตั้ง

sudo snap install --classic certbot

จากนั้นใช้ certbot เพื่อรับและติดตั้ง/กำหนดค่าใบรับรอง SSL/TLS ฟรีของคุณเพื่อใช้กับเว็บเซิร์ฟเวอร์ NGINX (ระบุอีเมลที่ถูกต้องสำหรับการต่ออายุและปฏิบัติตามคำแนะนำเพื่อทำการติดตั้งให้เสร็จสมบูรณ์):

sudo certbot --nginx

ไปที่เว็บเบราว์เซอร์ของคุณอีกครั้งเพื่อยืนยันว่าแอปพลิเคชัน Yii ของคุณทำงานบน HTTPS (โปรดจำไว้ว่า HTTP ควรเปลี่ยนเส้นทางไปยัง โดยอัตโนมัติ >HTTPS)

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

สำหรับข้อมูลเพิ่มเติม เช่น การเชื่อมต่อแอปพลิเคชันของคุณกับฐานข้อมูล โปรดดูเอกสารกรอบงาน Yii จากเว็บไซต์โครงการ Yii อย่างเป็นทางการ ลองใช้และแบ่งปันความคิดของคุณเกี่ยวกับ Yii หรือถามคำถามผ่านแบบฟอร์มข้อเสนอแนะด้านล่าง