如何让php工匠服务运行作为后台服务器工作像Apache


How to let php artisan serve run as a background server to work like Apache?

我在VPS上安装了一个Laravel应用程序。这只是为了演示。

我将使用PuTTY ssh登录到VPS,并输入:

php artisan serve --host x.x.x.x

一切正常。但是,当我关闭PuTTY连接时,服务器关闭了。

是否有可能让工匠服务器运行在后台就像Apache?

您可以在后台运行任何shell命令,在命令末尾添加&。如果您希望它在断开连接后继续运行,那么使用nohup

运行它。
nohup php artisan serve &

为了稍后杀死它,您将获得一个进程ID,但不要被愚弄,因为这会启动其他进程,即使被杀死也会持续存在。要获得实际的服务器PID,可以通过使用grep

过滤ps输出来找到它。
ps -ef | grep "$PWD/server.php"

应该会给出如下输出:

jeff 23978 23977 0 16:50 pts/4 00:00:00/usr/bin/php7.0 -S 127.0.0.1:8000/path/to/larvel -project/server.php

jeff 24059 18581 0 16:51 pts/4 00:00:00 grep——color=auto/path/to/larvel -project/server.php

用户名后的第一个数字是要删除的PID。

kill 23978

不要为生产站点这样做,但是一个快速的演示可能是可以的。

至少在临时级别上,可能最快的方法是使用screen -您可以在screen会话中运行它,然后在Putty/shell中按Ctrl-a然后按d将其最小化。它将在会话关闭后继续运行。

加上Jeff的回答,您可能需要再次检查命令是否停止。
在我的例子中发生了这样的事情:

创建

nohup php artisan serve &
ps -ef | grep "$PWD/server.php"

输出示例:

jeff 23978 23977 0 16:50 pts/4 00:00:00/usr/bin/php7.0 -S 127.0.0.1:8000/path/to/larvel -project/server.php

jeff 24059 18581 0 16:51 pts/4 00:00:00 grep——color=auto/path/to/larvel -project/server.php

kill and double check

kill 23978
ps -ef | grep "$PWD/server.php"

输出示例:

jeff 23964 23977 0 16:50 pts/4 00:00:00/usr/bin/php7.0 -S 127.0.0.1:8001/path/to/larvel -project/server.php

jeff 24059 18581 0 16:51 pts/4 00:00:00 grep——color=auto/path/to/larvel -project/server.php

php artisan serve实际上并没有停止,只是改变了端口和ID!

id: 23978 => 23964 port: 127.0.0.1:8000 => 127.0.0.1:8001

解决方案

首先运行带有右侧ID的kill注释,您也可以使用此命令获得:

ps aux | grep artisan

所以按顺序应该是:

kill 23977
ps -ef | grep "$PWD/server.php"

输出示例:

jeff 23964 1 0 16:50 pts/4 00:00:00/usr/bin/php7.0 -S 127.0.0.1:8001/path/to/larvel -project/server.php

jeff 24059 18581 0 16:51 pts/4 00:00:00 grep——color=auto/path/to/larvel -project/server.php如果数字变成1,它就死了。然后:

kill 23964
ps -ef | grep "$PWD/server.php"

输出示例:

jeff 24059 18581 0 16:51 pts/4 00:00:00 grep——color=auto/path/to/larvel -project/server.php并且php artisan serve应该停止。