网站搜索

如何在 Ubuntu 上安装 Yii PHP 框架


Yii(发音为 Yee[ji:])是一个免费、开源、快速、高性能、安全、灵活且实用的、高效的通用 Web 编程框架,用于使用 PHP 开发各种 Web 应用程序。

在本文中,您将了解如何在 Ubuntu LTS(长期支持)版本中安装最新版本的 Yii 框架,以开始开发现代 PHP Web 应用程序。

平台支持

Yii 拥有以下 Ubuntu LTS(长期支持)版本:

  • Ubuntu 20.04 LTS(“焦点”)
  • Ubuntu 18.04 LTS(“仿生”)
  • Ubuntu 16.04 LTS(“Xenial”)

要求

  • Ubuntu 服务器的运行实例。
  • PHP 5.4.0 或更高版本的 LEMP 堆栈。
  • Composer – PHP 的应用程序级包管理器。

在本页

  • 在 Ubuntu 中通过 Composer 安装 Yii 框架
  • 使用 PHP 开发服务器运行 Yii
  • 使用 NGINX HTTP 服务器在生产环境中运行 Yii 项目
  • 使用 Let’s Encrypt 在 Yii 应用程序上启用 HTTPS

有两种方法安装 Yii,使用 Composer 包管理器或从存档文件安装。前者是推荐的方式,因为它允许您通过单个命令安装新扩展或更新 Yii

在 Ubuntu 中通过 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

安装 Composer 后,进入将存储 Web 应用程序或网站文件的目录 /var/www/html/,然后使用 Yii 包安装>composer(将 testproject 替换为您的 Web 应用程序目录的名称)。

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

使用 PHP 开发服务器运行 Yii

至此,您就可以开始使用 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

使用 NGINX HTTP 服务器在生产环境中运行 Yii 项目

要在生产中部署和访问 Yii 应用程序,需要 HTTP 服务器,例如 NGINX、Apache/HTTPD 或任何其他受支持的 Web 服务器软件。

要在不输入端口的情况下访问 Yii 应用程序,您需要创建所需的 DNS A 记录,以将您的域指向 Yii 框架应用程序服务器。

在本指南中,我们将展示如何使用 NGINX 部署 Yii 应用程序。因此,您需要在您的应用程序的 /etc/nginx/sites-available/ 目录下创建一个虚拟主机或服务器块配置文件,以便 NGINX 可以为其提供服务。

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

将以下配置复制并粘贴到其中(将 testprojects.mewww.testprojects.me 替换为您的域名)。还指定NGINXFastCGI请求传递给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

使用 Let’s Encrypt 在 Yii 应用程序上启用 HTTPS

最后,您需要在网站上启用HTTPS。您可以使用免费的 Let’s Encrypt SSL/TLS 证书(该证书是自动化的,并被所有现代 Web 浏览器识别),也可以从商业 CA 获取证书。

如果您决定使用 Let’s Encrypt 证书,可以使用 certbot 工具自动安装和配置它。要安装certbot,需要先安装snapd才能安装。

sudo snap install --classic certbot

然后使用 certbot 获取并安装/配置您的免费 SSL/TLS 证书以与 NGINX Web 服务器一起使用(提供有效的电子邮件用于续订并按照提示完成安装):

sudo certbot --nginx

现在再次访问您的网络浏览器,确认您的 Yii 应用程序现在正在 HTTPS 上运行(记住 HTTP 应自动重定向到 >HTTPS)。

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

有关将应用程序连接到数据库等更多信息,请参阅 Yii 项目官方网站上的 Yii 框架文档。尝试一下并分享您对 Yii 的想法,或通过下面的反馈表提出任何问题。