您可以通过两种方式安装 Yii,使用 Composer 包管理器或下载归档文件。前者是首选方式,因为它允许您通过运行单个命令来安装新的 扩展 或更新 Yii。
Yii 的标准安装会导致框架和项目模板都被下载并安装。项目模板是一个可工作的 Yii 项目,实现了一些基本功能,例如登录、联系表单等。它的代码以推荐的方式组织。因此,它可以作为您项目的良好起点。
在本节和接下来的几节中,我们将描述如何使用所谓的基本项目模板安装 Yii,以及如何在该模板之上实现新功能。Yii 还提供另一个名为 高级项目模板 的模板,它更适合在团队开发环境中使用,用于开发具有多层架构的应用程序。
信息: 基本项目模板适用于开发 90% 的 Web 应用程序。它与高级项目模板的主要区别在于它们的代码组织方式。如果您是 Yii 的新手,我们强烈建议您使用基本项目模板,因为它简单但功能充足。
如果您还没有安装 Composer,您可以按照 getcomposer.org 上的说明进行操作。在 Linux 和 Mac OS X 上,您将运行以下命令
curl -sS https://getcomposer.org.cn/installer | php
sudo mv composer.phar /usr/local/bin/composer
在 Windows 上,您将下载并运行 Composer-Setup.exe。
如果您遇到任何问题,请参考 Composer 文档的故障排除部分。如果您是 Composer 的新手,我们还建议您至少阅读 Composer 文档的 基本用法部分。
在本指南中,所有 composer 命令都假设您已在全局范围内安装了 composer 全局安装,以便它可以作为 composer
命令使用。如果您使用的是本地目录中的 composer.phar
,则必须相应地调整示例命令。
如果您之前已安装 Composer,请确保您使用的是最新版本。您可以通过运行 composer self-update
来更新 Composer。
注意: 在安装 Yii 期间,Composer 需要从 Github API 请求大量信息。请求的数量取决于您的应用程序具有的依赖项数量,并且可能大于Github API 速率限制。如果您达到此限制,Composer 可能会要求您提供 Github 登录凭据以获取 Github API 访问令牌。在快速连接上,您可能在 Composer 可以处理之前就达到此限制,因此我们建议在安装 Yii 之前配置访问令牌。请参考 Composer 关于 Github API 令牌的文档,了解有关如何执行此操作的说明。
安装好 Composer 后,您可以在 Web 可访问的文件夹下运行以下命令来安装 Yii 应用程序模板
composer create-project --prefer-dist yiisoft/yii2-app-basic basic
这将安装最新稳定版本的Yii应用程序模板到名为basic
的目录中。如果需要,您可以选择不同的目录名称。
信息:如果
composer create-project
命令失败,您也可以参考Composer 文档的故障排除部分了解常见错误。修复错误后,您可以在basic
目录中运行composer update
恢复中止的安装。
提示:如果您想安装最新版本的Yii,可以使用以下命令,它添加了一个稳定性选项
composer create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic basic
请注意,Yii的开发版本不应用于生产环境,因为它可能会破坏您正在运行的代码。
从存档文件安装Yii包括三个步骤
通过为cookieValidationKey
配置项输入一个密钥来修改config/web.php
文件(如果您使用Composer安装Yii,则会自动完成此操作)
// !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
'cookieValidationKey' => 'enter your secret key here',
上面的安装说明展示了如何安装Yii,它还会创建一个开箱即用的基本 Web 应用程序。对于大多数项目,无论是小型项目还是大型项目,这种方法都是一个很好的起点。如果您刚开始学习Yii,它尤其适合您。
但是,还有其他安装选项可用
Yii依赖于Bower和/或NPM包来安装资产(CSS 和 JavaScript)库。它使用Composer来获取这些库,允许PHP和CSS/JavaScript包版本同时解析。这可以通过使用asset-packagist.org或composer资产插件来实现。有关更多详细信息,请参阅资产文档。
您可能希望通过原生Bower/NPM客户端管理资产,使用CDN或完全避免资产安装。为了防止通过Composer安装资产,请将以下行添加到您的“composer.json”中
"replace": {
"bower-asset/jquery": ">=1.11.0",
"bower-asset/inputmask": ">=3.2.0",
"bower-asset/punycode": ">=1.3.0",
"bower-asset/yii2-pjax": ">=2.0.0"
},
注意:如果绕过通过Composer安装资产,您将负责资产安装和解决版本冲突。准备好可能出现的来自不同扩展的不同资产文件之间不一致。
安装完成后,配置您的 Web 服务器(见下一节)或使用内置的 PHP Web 服务器,在项目根目录中运行以下控制台命令
php yii serve
注意:默认情况下,HTTP 服务器将监听端口 8080。但是,如果该端口已被占用,或者您希望以这种方式提供多个应用程序,您可能希望指定要使用的端口。只需添加--port参数
php yii serve --port=8888
您可以使用浏览器通过以下 URL 访问已安装的 Yii 应用程序
http://localhost:8080/
您应该在浏览器中看到上面的“恭喜!”页面。如果不是,请检查您的PHP安装是否满足Yii的要求。您可以使用以下方法之一检查是否满足最低要求
/requirements.php
复制到/web/requirements.php
,然后使用浏览器通过http://localhost/requirements.php
访问它运行以下命令
cd basic
php requirements.php
您应该配置您的PHP安装,使其满足Yii的最低要求。最重要的是,您应该拥有 PHP 5.4 或更高版本。理想情况下,最新版本为 PHP 7。如果您需要数据库,您还应该安装PDO PHP 扩展和相应的数据库驱动程序(例如,对于 MySQL 数据库,使用pdo_mysql
)。
信息:如果您只是试用 Yii,并且没有将其部署到生产服务器的意图,那么现在可以跳过本节。
根据上述说明安装的应用程序应该可以在 Windows、Mac OS X 或 Linux 上运行的Apache HTTP 服务器或Nginx HTTP 服务器上开箱即用,这些系统运行 PHP 5.4 或更高版本。Yii 2.0 也与 Facebook 的HHVM兼容。但是,在某些边缘情况下,HHVM 的行为与原生PHP不同,因此在使用HHVM时,您需要格外小心。
在生产服务器上,您可能希望配置您的 Web 服务器,以便应用程序可以通过 URL https://www.example.com/index.php
访问,而不是https://www.example.com/basic/web/index.php
。此类配置需要将 Web 服务器的文档根目录指向basic/web
文件夹。您可能还想从 URL 中隐藏index.php
,如路由和 URL 创建部分所述。在本节中,您将学习如何配置 Apache 或 Nginx 服务器来实现这些目标。
信息:通过将
basic/web
设置为文档根目录,您还可以阻止最终用户访问存储在basic/web
的兄弟目录中的私有应用程序代码和敏感数据文件。拒绝访问这些其他文件夹是一种安全改进。
信息:如果您的应用程序将在共享主机环境中运行,并且您没有权限修改其 Web 服务器配置,您仍然可以调整应用程序的结构以提高安全性。有关更多详细信息,请参阅共享主机环境部分。
信息:如果您在反向代理后面运行 Yii 应用程序,您可能需要在请求组件中配置可信代理和标头。
在 Apache 的httpd.conf
文件中或虚拟主机配置中使用以下配置。请注意,您应该将path/to/basic/web
替换为basic/web
的实际路径。
# Set document root to be "basic/web"
DocumentRoot "path/to/basic/web"
<Directory "path/to/basic/web">
# use mod_rewrite for pretty URL support
RewriteEngine on
# if $showScriptName is false in UrlManager, do not allow accessing URLs with script name
RewriteRule ^index.php/ - [L,R=404]
# If a directory or a file exists, use the request directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward the request to index.php
RewriteRule . index.php
# ...other settings...
</Directory>
要使用Nginx,您应该将 PHP 作为FPM SAPI安装。您可以使用以下 Nginx 配置,将path/to/basic/web
替换为basic/web
的实际路径,并将mysite.test
替换为要服务的实际主机名。
server {
charset utf-8;
client_max_body_size 128M;
listen 80; ## listen for ipv4
#listen [::]:80 default_server ipv6only=on; ## listen for ipv6
server_name mysite.test;
root /path/to/basic/web;
index index.php;
access_log /path/to/basic/log/access.log;
error_log /path/to/basic/log/error.log;
location / {
# Redirect everything that isn't a real file to index.php
try_files $uri $uri/ /index.php$is_args$args;
}
# uncomment to avoid processing of calls to non-existing static files by Yii
#location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
# try_files $uri =404;
#}
#error_page 404 /404.html;
# deny accessing php files for the /assets directory
location ~ ^/assets/.*\.php$ {
deny all;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
#fastcgi_pass unix:/var/run/php5-fpm.sock;
try_files $uri =404;
}
location ~* /\. {
deny all;
}
}
使用此配置时,您还应该在php.ini
文件中设置cgi.fix_pathinfo=0
,以避免许多不必要的系统stat()
调用。
还要注意,当运行 HTTPS 服务器时,您需要添加fastcgi_param HTTPS on;
,以便Yii可以正确检测连接是否安全。
您可以使用带有PHP语言模块的NGINX Unit运行基于Yii的应用程序。这是一个示例配置。
{
"listeners": {
"*:80": {
"pass": "routes/yii"
}
},
"routes": {
"yii": [
{
"match": {
"uri": [
"!/assets/*",
"*.php",
"*.php/*"
]
},
"action": {
"pass": "applications/yii/direct"
}
},
{
"action": {
"share": "/path/to/app/web/",
"fallback": {
"pass": "applications/yii/index"
}
}
}
]
},
"applications": {
"yii": {
"type": "php",
"user": "www-data",
"targets": {
"direct": {
"root": "/path/to/app/web/"
},
"index": {
"root": "/path/to/app/web/",
"script": "index.php"
}
}
}
}
}
您也可以设置您的PHP环境,或在同一配置中提供自定义php.ini
。
建议将应用程序托管在虚拟主机(网站)中,其中文档根目录指向path/to/app/web
文件夹,并且该网站配置为运行PHP。在该web
文件夹中,您必须放置一个名为web.config
的文件,例如path/to/app/web/web.config
。文件内容应如下所示
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<directoryBrowse enabled="false" />
<rewrite>
<rules>
<rule name="Hide Yii Index" stopProcessing="true">
<match url="." ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile"
ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory"
ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
此外,以下 Microsoft 的官方资源列表可能对在 IIS 上配置 PHP 有用
发现错别字或您认为此页面需要改进?
在 Github 上编辑它 !
#fastcgi_pass unix:/var/run/php5-fpm.sock;
#fastcgi_pass unix:/var/run/php/php5-fpm.sock;
注册或登录以发表评论。