ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Yii 2 框架安装完全指南:从 Composer 到 Web 服务器配置

Yii 2 框架安装完全指南:从 Composer 到 Web 服务器配置 后端Web框架【免费下载链接】yii2Yii 2: The Fast, Secure and Professional PHP Framework项目地址https://gitcode.com/gh_mirrors/yi/yii2点击查看免费下载导读本文基于 Yii 2 官方入门指南系统讲解在真实环境中安装 Yii 2 的完整路径先介绍推荐使用的 Composer 安装方式与归档文件安装方式再深入验证安装结果内置服务器、环境要求检查最后给出 Apache、Nginx、NGINX Unit 与 IIS 四类主流 Web 服务器的生产级配置方案。读完本文你将能够独立完成 Yii 2 环境搭建、资产Asset依赖管理以及 Web 服务器前端部署并理解每个步骤背后的框架源码实现。Yii 2当前仓库 framework/ 即框架本体的安装通常同时带来两样东西框架本身与一个项目模板Project Template。项目模板是一个开箱即用的可运行 Yii 项目预置了登录、联系表单、数据库访问等基础功能其代码组织方式即官方推荐的目录结构非常适合作为新项目的起点。官方提供两种模板Basic 项目模板适合绝大多数 Web 应用官方估算约 90% 的场景代码组织简单但功能完备官方强烈建议新手从它入手Advanced 项目模板面向团队协作与多层级应用代码分层更复杂详见指南的高级模板专题说明。一、环境准备前置条件与 Composer 安装在安装 Yii 之前需要确认 PHP 运行环境满足要求。当前仓库中 framework/composer.json 声明php: 7.4.0同时框架自带的 framework/requirements/requirements.php 将PHP 7.3.0 及以上版本列为强制要求mandatory true并逐项检查以下扩展类别扩展/能力是否强制用途说明来自 requirements.php 的 memo 字段强制PHP 7.3.0是框架运行基础强制Reflection、PCRE、SPL、Ctype、MBString是反射、正则、多字节字符串处理等基础能力建议OpenSSL否安全组件yii\base\Security的加解密方法建议Intl≥1.0.2、ICU≥49、ICU Data≥49.1否Yii::t()高级参数格式化、Inflector::slug()非拉丁语言、EmailValidator/UrlValidator 的 IDN 特性、yii\i18n\Formatter建议Fileinfo否文件上传时检测正确的 MIME 类型建议DOM否REST API 通过yii\web\XmlResponseFormatter输出 XML 响应建议IPv6 支持AF_INET6否IpValidator::expandIPv6的 IPv6 地址展开建议pcntl否yii2-queue 的 CLI 操作注意requirements.php 文件本身的检查逻辑由 framework/requirements/YiiRequirementChecker.php 实现安装后的项目可以直接复用这份检查清单。安装 Composer包管理器Yii 2 首选通过 Composer 安装。若本机尚未安装可按官方指引安装Linux/macOScurl -sS https://getcomposer.org/installer | php sudo mv composer.phar /usr/local/bin/composerWindows 用户则下载并运行 Composer-Setup.exe 安装程序。本指南中的命令均假设 Composer 已全局安装可直接执行composer命令若你只在本地保留了composer.phar请相应地把所有composer命令替换为php composer.phar ...。已安装 Composer 的用户应确保版本够新可执行composer self-update升级。新手建议先通读 Composer 官方基本用法章节再继续。关于 GitHub API 限流重要提醒安装 Yii 时Composer 需要向 GitHub API 发起大量请求请求数与应用的依赖数量成正比可能触发GitHub API 速率限制。一旦触发Composer 会要求输入 GitHub 登录凭据以换取 API 访问令牌。在网速较快时这一限制可能先于 Composer 的自动处理被触发因此官方强烈建议在安装 Yii 之前就预先配置好 GitHub API 令牌具体配置方法可参考 Composer 官方文档的API 速率限制与 OAuth 令牌一节。二、方式一推荐通过 Composer 安装 Yii在 Web 可访问的目录下执行以下命令即可创建基于Basic 项目模板的 Yii 应用composer create-project --prefer-dist yiisoft/yii2-app-basic basic--prefer-dist优先下载压缩包而不是从 Git 克隆完整历史速度更快basic目标目录名可自行修改命令会安装最新稳定版的 Yii 应用模板。失败恢复若composer create-project中途失败可参考 Composer 官方文档的 Troubleshooting 章节排查常见错误修复问题后进入basic目录执行composer update即可继续被中断的安装。安装开发版想尝鲜最新开发版本注意切勿用于生产环境可能破坏运行中的代码可加--stability选项composer create-project --prefer-dist --stabilitydev yiisoft/yii2-app-basic basicComposer 安装背后的依赖解析Composer 安装并非只拉取框架代码。从 framework/composer.json 的require段可以看到框架本身依赖yiisoft/yii2-composer、ezyang/htmlpurifier、cebe/markdown以及一组 Bower 资产包jQuery、inputmask、punycode、yii2-pjax。也就是说框架与前端 JS/CSS 库的版本是在同一次 Composer 解析中一并锁定的这正是下文安装资产一节的基础。三、方式二通过归档文件安装不借助 Composer 时从归档安装只需三步从官方下载页下载对应版本的归档文件解压到 Web 可访问的目录手动修改config/web.php为cookieValidationKey配置项填入密钥Composer 方式会自动生成归档方式必须手工完成// !!! insert a secret key in the following (if it is empty) - this is required by cookie validation cookieValidationKey enter your secret key here,cookieValidationKey是 Yii 对 Cookie 做校验签名的密钥用于防止客户端篡改 Cookie。若留空涉及 Cookie 校验的功能如会话、CSRF 相关 Cookie将无法正常工作这也是归档安装最容易被忽略的一步。建议填入一段足够长的随机字符串。四、其他安装选项上述两种方式都会得到一个开箱即用的 Web 应用适合大多数项目尤其适合刚开始学习 Yii 的场景。此外还有两个方向的选项只装框架、从零构建应用若你不需要模板想完全掌控应用结构可参考从零构建应用专题使用高级模板面向团队协作、多层级如前后端分离目录应用详见指南入门章节的模板说明。五、安装资产Assets与依赖管理Yii 的前端资产CSS/JavaScript 库依赖Bower 与/或 NPM 包框架通过 Composer 统一获取这些库使 PHP 包与前端包版本在同一时刻一起解析避免版本错位。这一机制可通过两种途径实现asset-packagist.org推荐仓库镜像或composer asset pluginfxp/composer-asset-plugin。资产管理的完整概念Asset Bundle、发布机制等请参阅资产Assets专题。如果你希望完全绕过 Composer 安装资产——例如改用原生 Bower/NPM 客户端管理、使用 CDN或干脆不安装资产——可在项目的composer.json中添加如下replace段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 安装资产后资产安装与版本冲突的解决责任就转移到了你身上。不同扩展自带的资产文件之间可能出现不一致需自行做好版本协调。另外从 framework/composer.json 可见框架默认的 jQuery 依赖范围较宽1.11 至 3.7 多个稳定分支自管资产时尤其要注意与实际使用的 jQuery 版本匹配。六、验证安装内置服务器与最低环境要求使用 PHP 内置 Web 服务器安装完成后可在项目根目录直接运行框架自带的serve控制台命令无需配置任何 Web 服务器即可预览应用php yii serve默认监听8080 端口。若端口被占用或想在同一台机器上同时跑多个应用用--port指定端口php yii serve --port8888该命令的实现位于 framework/console/controllers/ServeController.php其关键行为可以从源码中得到印证$port属性默认值为8080ServeController.php#L38与文档说明一致$docroot默认指向app/webServeController.php#L42即应用入口目录actionIndex($address)默认地址为localhost最终通过PHP_BINARY . -S {address} -t {documentRoot}启动 PHP 内置服务器ServeController.php#L88启动前会调用isAddressTaken()用fsockopen探测端口是否已被占用ServeController.php#L128-L137端口被占时会以非零退出码EXIT_CODE_ADDRESS_TAKEN_BY_ANOTHER_PROCESS 5结束。随后用浏览器访问http://localhost:8080/浏览器中应出现如上图所示的 Congratulations! 欢迎页。若未出现请检查 PHP 环境是否满足 Yii 的要求可通过以下任一方式核查Web 方式把requirements.php复制到web/目录下即web/requirements.php再通过浏览器访问http://localhost/requirements.php命令行方式在项目根目录直接执行cd basic php requirements.php关于运行环境的最低要求指南指出 PHP 5.4 或以上即可运行 Yii 2.0理想情况下使用最新版 PHP 7而当前仓库对框架的要求更高——framework/composer.json 要求php 7.4.0framework/requirements/requirements.php 也将最低版本校验为 PHP 7.3.0。因此以当前仓库为准请确保 PHP 版本满足上述约束。若应用需要数据库还应安装 PDO 扩展及对应的数据库驱动如 MySQL 使用pdo_mysql。七、配置 Web 服务器生产部署若只是本地试玩 Yii 而暂无生产部署计划可暂时跳过本节。按上述步骤安装的应用在 Windows/macOS/Linux 上运行 PHP 5.4 时开箱即可配合 Apache 或 Nginx 工作Yii 2.0 也兼容 HHVM但 HHVM 与原生 PHP 存在个别行为差异使用时需格外留意。生产环境通常希望应用可通过https://www.example.com/index.php访问而不是https://www.example.com/basic/web/index.php为此需将 Web 服务器的document root 指向basic/web目录可选按路由与 URL 创建专题隐藏 URL 中的index.php。安全收益将basic/web设为文档根目录后basic/web的兄弟目录存放私有应用代码与敏感数据将不再被 Web 服务器直接暴露这是一项重要的安全改进。共享主机环境若托管环境不允许修改 Web 服务器配置可通过调整应用结构提升安全性参见共享主机环境专题。反向代理环境若应用运行在反向代理之后可能需要在请求组件中配置受信任的代理与请求头参见请求Requests专题。Apache 配置推荐在httpd.conf或虚拟主机配置中写入以下内容并将path/to/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,R404] # 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该配置的核心逻辑真实存在的文件/目录直接放行其余请求全部转发给index.php配合urlManager的showScriptName false实现干净 URL。Nginx 配置推荐使用 Nginx 时应将 PHP 安装为FPM SAPI。以下配置中把path/to/basic/web与mysite.test替换为实际路径与主机名server { charset utf-8; client_max_body_size 128M; listen 80; ## listen for ipv4 #listen [::]:80 default_server ipv6onlyon; ## 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 isnt 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_pathinfo0可避免大量不必要的系统stat()调用提升性能若运行 HTTPS还需添加fastcgi_param HTTPS on;让 Yii 能正确识别安全连接location ~ ^/assets/.*\.php$ { deny all; }用于阻止assets目录下 PHP 文件的执行Yii 发布到web/assets的静态资源不应被当作 PHP 执行。NGINX Unit 配置NGINX Unit 可借助其 PHP 语言模块运行 Yii 应用示例配置如下同样需替换/path/to/app/web/为实际路径{ 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/*形式出现的请求排除/assets/*交给applications/yii/direct直接以 PHP 执行其余请求由share静态分享/path/to/app/web/若找不到对应文件则回退fallback到applications/yii/index即index.php。也可以在同一份配置中设置 PHP 环境变量或自定义php.ini。IIS 配置在 IIS 上建议以虚拟主机网站方式托管应用将文档根目录指向path/to/app/web并配置运行 PHP然后在web目录中放置web.config文件内容如下?xml version1.0 encodingUTF-8? configuration system.webServer directoryBrowse enabledfalse / rewrite rules rule nameHide Yii Index stopProcessingtrue match url. ignoreCasefalse / conditions add input{REQUEST_FILENAME} matchTypeIsFile ignoreCasefalse negatetrue / add input{REQUEST_FILENAME} matchTypeIsDirectory ignoreCasefalse negatetrue / /conditions action typeRewrite urlindex.php appendQueryStringtrue / /rule /rules /rewrite /system.webServer /configuration该规则与 Apache/Nginx 思路一致directoryBrowse关闭目录浏览当请求对应的文件/目录不存在时将请求重写到index.php并保留查询字符串从而隐藏入口脚本名。如需在 IIS 上配置 PHP 环境可参考微软官方的 IIS 建站与 PHP 站点配置文档。八、安装后的下一步安装并验证通过后可以顺着官方指南继续前进运行应用理解 Yii 应用的启动流程说 Hello编写第一个控制器与视图使用表单与使用数据库搭建第一个真实功能用 Gii 生成代码借助代码生成器快速搭建 CRUD。同时本仓库中对应框架源码可作为深入学习的素材例如 framework/web/Web 应用与请求处理、framework/console/controllers/ServeController.php内置服务器命令、framework/requirements/requirements.php环境要求清单以及 tests/framework/ 下的测试用例如 tests/framework/console/controllers/ServeControllerTest.php对相关行为的验证。至此你已经走完了准备环境 → 安装框架与模板 → 处理资产依赖 → 验证运行 → 配置生产 Web 服务器的完整链路可以基于 Basic 项目模板开始你的 Yii 2 开发之旅。赞分享后端Web框架【免费下载链接】yii2Yii 2: The Fast, Secure and Professional PHP Framework项目地址https://gitcode.com/gh_mirrors/yi/yii2点击查看免费下载相关推荐Yii 2 安装完全指南从 Composer 到 Web 服务器部署基于 Basic 项目模板Yii 2 安装完全指南从 Composer 到 Web 服务器部署基于 Basic 项目模板 本篇指南以 Yii 2 官方《Установка Yii》后端Web框架Yii 2 安装与部署实战指南从 Composer 安装到 Apache/Nginx/IIS 服务器配置Yii 2 安装与部署实战指南从 Composer 安装到 Apache/Nginx/IIS 服务器配置 本篇技术指南以 Yii 2 官方文档中的安装章节为核后端Web框架Yii 2 安装完全指南Composer 与压缩包两种方式、环境验证与 Apache/Nginx 服务器配置Yii 2 安装完全指南Composer 与压缩包两种方式、环境验证与 Apache/Nginx 服务器配置 本文以 Yii 2 官方指南的安装章节为核心系后端Web框架上一篇3个epaper.js实战技巧让你的电子纸显示更智能下一篇Relay 的 usePreloadedQuery Hook 详解基于 Query Reference 实现 render-as-you-fetch 数据读取创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表