Symfony CLI-新的本地开发工具

在2018年12月的里斯本SymfonyCon会议上,Symfony框架的创建者Fabien Potansier引入了一个symfony.phar-一种用于基于官方项目模板快速创建Symfony应用程序的工具: skeletonwebsite-skeletondemo 。 它还允许您运行本地Web服务器进行开发。


然后用Golang语言重写了该工具,该工具允许实现许多其他功能,例如对本地Web服务器的https协议的支持,与SymfonyCloud的紧密集成等等! 亲爱的读者,我邀请您更详细地了解此工具,因为它不仅在Symfony框架中起作用。


在本文中,我们将在本地开发的背景下查看该工具,并且不会影响与SymfonyCloud的集成。


项目创建


要基于官方模板之一创建新的Symfony项目,您需要运行以下命令:


$ symfony new [--full | --demo] <path-to-project> 

默认情况下,使用最小骨架模板。 要安装网站骨架,您需要使用--full选项运行命令。 因此,要安装演示项目,必须使用--demo选项运行命令。


在底层, symfony new执行composer create-project命令,然后初始化一个新的Git存储库并立即创建一个Initial commit。


symfony新


本地服务器


要启动服务器,只需在应用程序的根目录中运行命令


 $ symfony serve 

symfony服务


它将分析使用的计算机上的可用SAPI,并使用以下优先级从现有的SAPI中选择最佳的:首先放置PHP FPM,然后放置PHP CGI,最后放置PHP CLI。 可以使用以下命令查看可用的SAPI列表:


 $ symfony local:php:list 

symfony本地:php:列表


之后,团队将启动服务器,该服务器将在地址127.0.0.1处可用,并从8000开始选择可用端口。


默认情况下,服务器以交互方式启动。 我们立即看到服务器和应用程序日志,但是我们的终端被阻止了。 可以在守护程序模式下启动服务器。 为此,请在运行symfony serve命令时添加-d选项。


可以通过运行以下命令查看日志:


 $ symfony server:log 

您还可以使用以下命令查看正在运行的服务器的状态:


 $ symfony server:status 

要停止正在运行的服务器,请使用以下命令:


 $ symfony server:stop 

UPD:以前,我们使用symfony / web-server-bundle软件包启动服务器。 随着Symfony CLI的到来,此软件包变得不那么相关,因为它只能使用PHP CLI SAPI启动服务器,并且不支持HTTPS,域名,PHP FPM SAPI等。


TLS支持


某些第三方服务或库要求您使用HTTPS协议发送请求。 通过使用以下命令安装其他组件,Symfony CLI可以非常轻松地配置TLS支持:


 $ symfony server:ca:install 

symfony服务器:ca:安装


然后只需重新启动浏览器,然后瞧-已配置TLS支持! 使用symfony serve命令启动服务器,然后可以使用HTTPS协议转到该站点。


我不是很想在https://127.0.0.1:8000https://localhost:8000上打开所有项目,但是您呢? 这带来了不便:如果同时运行多个项目,则需要记住该项目在哪个端口上运行; 服务器重新启动时,端口可以更改,等等。


Symfony CLI也可以解决此问题! 它为我们提供了一个代理服务器,您可以使用它创建漂亮的域名。 为此,请使用以下命令将所需的域名绑定到我们的项目:


 $ symfony proxy:domain:attach <domain-name> 

symfony代理:域:附加


因此, demo-project.com域绑定到项目目录。 接下来,我们需要使用以下命令启动代理服务器:


 $ symfony proxy:start 

symfony代理:开始


我们以守护程序模式启动了代理服务器,并且可以在我们的地址http://127.0.0.1:7080 ,我们可以在浏览器中打开它:


symfony代理服务器


在这里,我们将看到域列表,文件系统中项目的路径以及每个项目的服务器状态。 在此屏幕截图中,您可以看到所有服务器都处于“已Stopped状态,即它们尚未运行。 下一步,我们需要在操作系统设置中添加此代理服务器


macOS代理配置


这样就完成了代理服务器的设置,然后您需要使用已知的symfony serve命令启动服务器。 除了带有端口的IP地址,我们还将看到我们的域名,可以在浏览器中使用它! .wip后缀将添加到所有域名。


symfony服务


也就是说,在使用代理服务器流的情况下,项目的启动会有所变化:


  1. 我们启动代理服务器
     $ symfony proxy:start 
  2. 我们启动应用程序的服务器
     $ symfony serve 

为了完成该项目的工作,我们“镜像”了上述操作:


  1. 我们停止服务器
     $ symfony server:stop 
  2. 停止代理服务器
     $ symfony proxy:stop 

为了简化这些操作,我建议使用GNU Make实用程序。


PHP版本切换


如果在不同的项目上使用不同版本的PHP,则可能会遇到在版本之间进行切换的问题。 拥有某种自动化工具会很好,对吗? Symfony CLI可以解决此问题! 您只需要在项目的根目录中创建.php-version文件,并指定所需的版本作为内容即可。


 $ echo "7.2" > .php-version 

php版本


如您在上面的屏幕快照中所见,Symfony CLI读取了.php-version文件,并使用该文件中指定的版本启动了服务器。


另外,Symfony CLI为我们提供了PHP CLI的包装,该包装还考虑了.php-version文件中指定的PHP版本。 也就是说,如果您需要调用控制台脚本,例如bin/console ,请使用它。


 $ symfony php 

Symfony的PHP


为方便起见,您可以为此命令创建别名以节省时间并避免在编写命令时出错。 例如,我为自己创建了一个别名sphp


 $ echo "alias sphp='symfony php'" >> ~/.bash_profile && source ~/.bash_profile 

Symfony CLI为Composer提供了类似的包装器,因此您也不会遇到任何问题。 为了方便起见,您可以为此包装创建别名。 我有这个作曲家


 $ echo "alias scomposer='symfony composer'" >> ~/.bash_profile && source ~/.bash_profile 

检查有漏洞的软件包


另外,Symfony CLI提供了一个命令来检查项目中易受攻击的作曲家程序包。 您不再需要在项目中安装Symfony Security Checker依赖项。 另外, 官方文档建议Symfony CLI内置的版本效果更好,因为它不会向官方API发出HTTP请求。 您可以使用以下命令运行测试:


 $ symfony security:check 

symfony安全性:检查


结论


Symfony CLI是本地应用程序基础结构中非常方便的组件。 他具有运行支持HTTPS协议的Web服务器,创建域名,自动切换每个项目的PHP版本以及检查漏洞依赖项的能力。


可以在此链接上找到该组件的正式文档。
任何问题都可以在GitHub上的官方symfony / cli存储库中进行描述。


在评论中分享使用此工具的经验。


感谢您的关注!

Source: https://habr.com/ru/post/zh-CN451138/


All Articles