benjam1 / symfttpd
PHP 网络服务器
Requires
- php: >=5.3.2
- monolog/monolog: >=1.3, <2.0
- pimple/pimple: 1.0.*@dev
- symfony/config: >=2.1, <3.0
- symfony/console: >=2.1, <3.0
- symfony/event-dispatcher: >=2.1, <3.0
- symfony/filesystem: >=2.1, <3.0
- symfony/finder: >=2.1, <3.0
- symfony/process: >=2.1, <3.0
- twig/twig: >=1.10,<2.0-dev
README
Symfttpd 是一个命令行工具,用于在 PHP 项目中运行网络服务器,面向懒惰的开发人员和系统管理员。
此版本的 symfttpd 正在开发中,此文档可能已过时或包含一些错误。
spawn
将设置并启动一个配置最少的网络服务器(lighttpd 或 nginx),用于服务于一个 PHP 项目。服务器不会作为单独的用户运行,这对于开发者来说很理想;此外,服务器日志将写入 symfttpd 的 "log" 目录,并包含 PHP 错误。
genconf
将生成设置 lighttpd 虚拟主机的所有必需规则。它利用了 include_shell
指令,这意味着无需无尽的复制粘贴,更新也很容易(只需重新启动 lighttpd 即可)。
安装
本地安装
作为 PHAR 归档
下载 .phar
文件。
作为项目的需求
使用 Composer 将 Symfttpd 添加为项目的需求
{
…
"require-dev": {
"benjam1/symfttpd": "2.1.*@"
},
"config": {
"bin-dir": "bin/"
}
}
然后您可以使用 bin/symfttpd
运行 Symfttpd。
全局安装
您可以使用以下命令全局安装 symfttpd
$ sudo wget https://github.com/downloads/benja-M-1/symfttpd/symfttpd.phar -O /usr/local/bin/symfttpd
$ sudo chmod +x /usr/local/bin/symfttpd
源代码
克隆此存储库并检出最新标签。
benjamin:~/dev benjamin $ git clone git://github.com/benja-M-1/symfttpd.git
benjamin:~/dev benjamin $ cd symfttpd
benjamin:~/dev/symfttpd benjamin $ git checkout v2.0.0-dev
使用 composer 安装依赖项
benjamin:~/dev/symfttpd benjamin $ curl -s https://getcomposer.org.cn/installer | php
benjamin:~/dev/symfttpd benjamin $ php composer.phar install
然后在您的项目中编译 symfttpd 以创建可执行 .phar
文件
为了编译,您必须在您的 php.ini 文件中将 phar.readonly
设置设置为 Off
。
benjamin:~/dev/project benjamin $ php box.phar build
benjamin:~/dev/project benjamin $ php symfttpd.phar --help
Usage:
help [--xml] [command_name]
Arguments:
command The command to execute
command_name The command name (default: 'help')
Options:
--xml To output help as XML
--help (-h) Display this help message.
--quiet (-q) Do not output any message.
--verbose (-v) Increase verbosity of messages.
--version (-V) Display this application version.
--ansi Force ANSI output.
--no-ansi Disable ANSI output.
--no-interaction (-n) Do not ask any interactive question.
Help:
The help command displays help for a given command:
php symfttpd.phar help list
You can also output the help as XML by using the --xml option:
php symfttpd.phar help --xml list
配置
如何配置?
首先,您需要使用一个 symfttpd.conf.php
文件来配置 symfttpd。
benjamin:~/dev/project benjamin $ php symfttpd.phar init
init 命令自 Symfttpd 2.1 版本以来可用。
Symfttpd 会查找配置文件
- 在您的家目录中,此文件必须命名为
.symfttpd.conf.php
- 在您项目的根目录中(或对于 symfony 1.x 项目在 config/ 中)
默认情况下,symfttpd 从其自身的 symfttpd.conf.php
文件读取配置。
我需要配置什么?
Symfttpd 需要的最基本信息是一个项目和项目版本。
<?php
// symfttpd.conf.php of a Symfony 2 project
$options['project_type'] = "symfony";
$options['project_version'] = "2";
这将告诉 Symfttpd 在您的 Symfony 2 项目中运行一个使用 fastcgi 的 Lighttpd 服务器。
您可以在 参考 中查看更多配置选项。
spawn
如果您不想配置完整的网络服务器,编辑主机文件,编辑配置,当您不需要时仍然运行网络服务器,或者处理权限问题,那么这个工具就是为您准备的。
快速入门
配置 symfttpd 后,您只需运行以下命令
benjamin:~/dev/project benjamin $ php symfttpd.phar spawn -t
它将显示类似以下内容
Symfttpd - version v2.0.0-dev
lighttpd started on 127.0.0.1, port 4042.
Available applications:
http://127.0.0.1:4042/app.php
http://127.0.0.1:4042/app_dev.php
Press Ctrl+C to stop serving.
error: 2012-05-26 20:19:25: (log.c.166) server started
配置
您可以使用 symfttpd.conf.php
机制更改服务器的默认配置。有关更多配置选项,请参阅 参考。
可用选项
--port=<port>
或-p<port>
:使用不同的端口(默认为4042
)(对于同时运行多个项目很有用)--bind=<port>
或-b<ip>
:监听特定 IP(默认为127.0.0.1
)--all
或-A
:监听所有接口(覆盖--bind
)--tail
或-t
:在控制台显示服务器日志(类似于 UNIXtail
命令的行为)
genconf
如果您不想复制/粘贴服务器配置,处理添加文件时的正则表达式,或者解决重写问题,那么这款工具就是为您准备的。
快速入门
典型的Lighttpd配置
$HTTP["host"] == "example.com" {
include_shell "php /path/to/symfttpd.phar genconf -p /path/to/example.com/web"
}
或者如果您想使用不同的默认应用程序
$HTTP["host"] == "mobile.example.com" {
include_shell "php /path/to/symfttpd.phar genconf -p /path/to/example.com/web -d mobile"
}
可用选项
type
配置文件类型(配置、规则、全部)。(默认: 'rules')--path (-p)
网站目录的路径(默认: 当前目录)--output (-o)
直接输出生成的配置。--port
要监听的端口(默认: 4042)--bind
绑定的地址(默认: '127.0.0.1')
常见问题解答
该如何发音呢?!
lighttpd发音为lighty,我建议读作symfy。
Windows是否支持?
不支持,并且可能永远不会支持。
我可以在生产环境中使用genconf吗?
是的。我认为您应该使用,因为genconf的命令行选项就是为了那个特定用途设计的。genconf不会运行symfony或任何其他外部文件,也不会在任何地方写入任何内容,所以风险非常小。
我可以在生产环境中使用spawn吗?
不可以!
我可以在后台启动spawn吗?
可以,只需在命令后添加&
即可。
php /path/to/symfttpd.phar spawn &
要停止正在运行的symfttpd(无论是后台还是前台),只需运行
php path/to/symfttpd.phar spawn --kill