如何在Ubuntu上安装Yii PHP Framework
Yii是一个免费的开源、快速、高性能、安全、灵活而又实用、高效的通用网络编程框架,用于使用PHP开发各种网络应用。
在本文中,你将学习如何在Ubuntu LTS版本中安装最新版本的Yii框架,以开始开发现代PHP Web应用程序。
平台支持
Yii持有以下Ubuntu LTS(长期支持)版本。
Ubuntu 20.04 LTS ("Focal")
Ubuntu 18.04 LTS ("Bionic")
Ubuntu 16.04 LTS ("Xenial")
准备工作
一个正在运行的Ubuntu服务器实例。
一个PHP 5.4.0或以上的LEMP协议栈。
一个Composer--PHP的应用程序级包管理器。
有两种方法来安装Yii,使用Composer包管理器或从存储库文件安装。推荐前面的方式,因为它可以让你通过一个命令安装新的扩展或更新Yii。
1、在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,移动到/var/www/html/目录下,这将存储你的web应用程序或网站文件,然后使用composer安装Yii包(用你的web应用程序的目录名替换testproject)。
$ cd /var/www/html/
$ composer create-project --prefer-dist yiisoft/yii2-app-basic testproject
2、使用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
3、在生产中使用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
复制并粘贴下面的配置(用你的域名替换a5idc.net和www.a5idc.net)。同时指定NGINX向PHP-FPM传递FastCGI请求的方式,在本例中,我们使用UNIX套接字(/run/php/php7.4-fpm.sock)。
erver {
set $host_path "/var/www/html/testproject";
#access_log /www/testproject/log/access.log main;
server_name a5idc.net www.a5idc.net;
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配置语法是否正确,如果OK,启用新的应用程序,如下所示。
$ sudo nginx -t
$ sudo ln -s /etc/nginx/sites-available/a5idc.net.conf /etc/nginx/sites-enabled/a5idc.net.conf
然后重新启动NGINX服务以应用新的更改。
$ sudo systemctl restart nginx
回到你的网页浏览器,用你的域名导航。
http://a5idc.net
OR
http://www.a5idc.net
4、使用Let's Encrypt在Yii应用程序上启用HTTPS。
最后,你需要在你的网站上启用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)。
有关将您的应用程序连接到数据库的更多信息,请参见Yii项目官方网站上的Yii框架文档。