我在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
应该停止。