【问题标题】:How to run Laravel Project from bash file?如何从 bash 文件运行 Laravel 项目?
【发布时间】:2023-03-10 02:49:01
【问题描述】:

我已经完成了我的项目,我需要一个文件来在终端中运行 3 个命令。

php artisan serve
php artisan migrate
php artisan queue:work --daemon --timeout=

我需要接收数据库名称、用户名、密码并更改 .env 文件

到目前为止,这是我的 bash shell

#!/bin/bash
echo "Server Ready"
sudo php artisan serve;
echo "Migration Started";
sudo php artisan migrate;
echo "migration Finished Successfuly";
echo "Queue Started";
sudo php artisan queue:work --daemon --timeout=3000;

但我需要帮助才能使其充分发挥作用。

我运行这个脚本,在第一个命令 php artisan serve 之后我的脚本停止了

【问题讨论】:

  • “停止”是什么意思?有没有给出任何错误信息?此外,给定的 shell 脚本不包含提到的第一个命令,您只能使用 sudo 使用该命令 - 有什么原因吗?
  • 需要注意的是,php artisan serve永远不要在生产环境中使用。它只能处理一个并发请求,并且仅用于开发/测试。

标签: php laravel bash shell


【解决方案1】:

我找到了我的遮阳篷

#!/bin/bash

cp .env.example .env

# config name database
sed -i -e 's/DB_DATABASE=laravel//g' .env
echo -n "Enter a database name > "
read database
sed  -i "12i  DB_DATABASE=$database" .env

# config username
sed -i -e 's/DB_USERNAME=root//g' .env
echo -n "Enter a  username > "
read username
sed  -i "12i  DB_DATABASE=$username" .env

# config password
sed -i -e 's/DB_PASSWORD=//g' .env
echo -n "Enter  password > "
read password
sed  -i "12i  DB_DATABASE=$password" .env

echo "Server Ready"
sudo php artisan serve &
echo "Migration Started" 
sudo php artisan migrate &
echo "migration Finished Successfuly" 
echo "Queue Started"
sudo php artisan queue:work --daemon --timeout=3000 &

我将它发布给需要它的人 在第 1 行将 .env.example 重命名为 .env 之后用用户选择的名称重命名数据库 并为用户名和密码执行此操作 感谢最后一行我的朋友@Lajos Arpad,我们可以一起运行 php artisan 命令

【讨论】:

    【解决方案2】:

    php artisan serve 命令正在运行一个内部 php 网络服务器。这意味着它需要阻塞当前线程来监听 PHP 输入。 您可以在所有其他命令之后简单地运行此命令。

    #!/bin/bash
    echo "Migration Started";
    sudo php artisan migrate;
    echo "migration Finished Successfuly";
    echo "Queue Started";
    sudo php artisan queue:work --daemon --timeout=3000;
    echo "Server Ready"
    sudo php artisan serve;
    

    但是,正如提到的here,您应该必须使用该命令才能拥有运行环境。您可能想改用 WAMP 服务器。或者,如果您喜欢冒险,也可以选择 docker。

    【讨论】:

    • 在第二个命令中,我将再次停止,就像工匠服务队列停止脚本一样
    • @hoseininjast 我已经更新了我的问题。对于您的 .env 文件,这应该很重要,因为代码正在检索环境变量,并且可以从任何地方访问这些变量。不过,您应该使用php artisan serve
    • 我不确定你的php artisan queue:work 命令是做什么的,但它是否阻塞了线程。我建议在另一个终端运行php artisan serve
    • 我想将此文件提供给我的朋友,当他运行该工匠迁移表和队列 startet 以侦听作业和工匠以启动本地服务器时
    • ways to use multithreading in bash。你可以调查一下。
    【解决方案3】:

    你只需要在每行的末尾加上 & ,这将是一个阻塞,你不打算等待它:

    #!/bin/bash
    echo "Server Ready"
    sudo php artisan serve &
    echo "Migration Started" 
    sudo php artisan migrate &
    echo "migration Finished Successfuly" 
    echo "Queue Started"
    sudo php artisan queue:work --daemon --timeout=3000 &
    

    关于您的 .env 文件,您可以在 PHP 中实现一个脚本,该脚本获取命令行输入并相应地更改 .env,然后使用您需要的任何输入调用它。

    【讨论】:

    • 我找到了我的遮阳篷,谢谢。我现在将发布完整的遮阳篷
    猜你喜欢
    • 1970-01-01
    • 2018-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-08
    • 1970-01-01
    • 2023-03-14
    • 2017-06-13
    相关资源
    最近更新 更多