[{"data":1,"prerenderedAt":362},["ShallowReactive",2],{"navigation":3,"/docs/getting-started/running-from-source":92,"/docs/getting-started/running-from-source-surround":357},[4],{"title":5,"path":6,"stem":7,"children":8,"page":39},"Docs","/docs","docs",[9,25,40,60,76,84],{"title":10,"path":11,"stem":12,"children":13,"icon":24},"Getting Started","/docs/getting-started","docs/1.getting-started/1.index",[14,16,20],{"title":15,"path":11,"stem":12},"Introduction",{"title":17,"path":18,"stem":19},"Quick start","/docs/getting-started/quick-start","docs/1.getting-started/2.quick-start",{"title":21,"path":22,"stem":23},"Running from source","/docs/getting-started/running-from-source","docs/1.getting-started/3.running-from-source","i-lucide-rocket",{"title":26,"icon":27,"path":28,"stem":29,"children":30,"page":39},"Configuration","i-lucide-settings-2","/docs/configuration","docs/2.configuration",[31,35],{"title":32,"path":33,"stem":34},"Adding a real database","/docs/configuration/adding-databases","docs/2.configuration/1.adding-databases",{"title":36,"path":37,"stem":38},"Customizing the image","/docs/configuration/customizing-the-image","docs/2.configuration/2.customizing-the-image",false,{"title":41,"path":42,"stem":43,"children":44,"icon":59},"Image variations","/docs/image-variations","docs/3.image-variations/1.index",[45,47,51,55],{"title":46,"path":42,"stem":43},"Choosing a variation",{"title":48,"path":49,"stem":50},"FPM-NGINX","/docs/image-variations/fpm-nginx","docs/3.image-variations/2.fpm-nginx",{"title":52,"path":53,"stem":54},"FrankenPHP","/docs/image-variations/frankenphp","docs/3.image-variations/3.frankenphp",{"title":56,"path":57,"stem":58},"FPM-Apache","/docs/image-variations/fpm-apache","docs/3.image-variations/4.fpm-apache","i-lucide-layers",{"title":61,"path":62,"stem":63,"children":64,"icon":75},"Benchmarks & Methodology","/docs/benchmarks","docs/4.benchmarks/1.index",[65,67,71],{"title":66,"path":62,"stem":63},"Methodology",{"title":68,"path":69,"stem":70},"Reading your results","/docs/benchmarks/reading-your-results","docs/4.benchmarks/2.reading-your-results",{"title":72,"path":73,"stem":74},"Testing from your own machine","/docs/benchmarks/testing-from-your-own-machine","docs/4.benchmarks/3.testing-from-your-own-machine","i-lucide-flask-conical",{"title":77,"path":78,"stem":79,"children":80,"icon":83},"Community Results","/docs/community-results","docs/5.community-results/1.index",[81],{"title":82,"path":78,"stem":79},"Submitting your results","i-lucide-users",{"title":85,"path":86,"stem":87,"children":88,"icon":91},"FAQ","/docs/faq","docs/6.faq/1.index",[89],{"title":90,"path":86,"stem":87},"Frequently asked questions","i-lucide-circle-help",{"id":93,"title":21,"body":94,"description":350,"extension":351,"links":352,"meta":353,"navigation":155,"path":22,"redirect":352,"seo":354,"sitemap":355,"stem":23,"__hash__":356},"docs/docs/1.getting-started/3.running-from-source.md",{"type":95,"value":96,"toc":345},"minimark",[97,101,108,113,218,229,246,250,253,306,312,318,322,329,341],[98,99,100],"p",{},"Some hosts want your source code rather than a container image. BenchKit runs from source anywhere Laravel runs, including Laravel Cloud and Railway.",[98,102,103,104,107],{},"If your host does allows you to run Docker commands (like a VPS), use the ",[105,106,17],"a",{"href":18}," instead. It needs nothing on the machine except Docker, and it is how you compare web servers against each other.",[109,110,112],"h2",{"id":111},"install-it","Install it",[114,115,121],"pre",{"className":116,"code":117,"filename":118,"language":119,"meta":120,"style":120},"language-bash shiki shiki-themes github-dark","git clone https://github.com/serversideup/benchkit-laravel.git\ncd benchkit-laravel\n\ncomposer install --no-dev --optimize-autoloader\nyarn install && yarn build\n\ncp .env.example .env\nphp artisan key:generate\n","Terminal","bash","",[122,123,124,140,150,157,172,189,194,206],"code",{"__ignoreMap":120},[125,126,129,133,137],"span",{"class":127,"line":128},"line",1,[125,130,132],{"class":131},"svObZ","git",[125,134,136],{"class":135},"sU2Wk"," clone",[125,138,139],{"class":135}," https://github.com/serversideup/benchkit-laravel.git\n",[125,141,143,147],{"class":127,"line":142},2,[125,144,146],{"class":145},"sDLfK","cd",[125,148,149],{"class":135}," benchkit-laravel\n",[125,151,153],{"class":127,"line":152},3,[125,154,156],{"emptyLinePlaceholder":155},true,"\n",[125,158,160,163,166,169],{"class":127,"line":159},4,[125,161,162],{"class":131},"composer",[125,164,165],{"class":135}," install",[125,167,168],{"class":145}," --no-dev",[125,170,171],{"class":145}," --optimize-autoloader\n",[125,173,175,178,180,184,186],{"class":127,"line":174},5,[125,176,177],{"class":131},"yarn",[125,179,165],{"class":135},[125,181,183],{"class":182},"s95oV"," && ",[125,185,177],{"class":131},[125,187,188],{"class":135}," build\n",[125,190,192],{"class":127,"line":191},6,[125,193,156],{"emptyLinePlaceholder":155},[125,195,197,200,203],{"class":127,"line":196},7,[125,198,199],{"class":131},"cp",[125,201,202],{"class":135}," .env.example",[125,204,205],{"class":135}," .env\n",[125,207,209,212,215],{"class":127,"line":208},8,[125,210,211],{"class":131},"php",[125,213,214],{"class":135}," artisan",[125,216,217],{"class":135}," key:generate\n",[98,219,220,221,224,225,228],{},"Every benchmark tool BenchKit uses ships as a Composer package, so ",[122,222,223],{},"composer install"," puts them in ",[122,226,227],{},"vendor/bin"," and gives everything you need to run the application.",[230,231,232],"note",{},[98,233,234,237,238,241,242,245],{},[122,235,236],{},".env.example"," is written for local Docker development, so it carries settings you won't need on a server. On a platform that manages environment variables for you, set them there and skip the ",[122,239,240],{},".env"," file. ",[122,243,244],{},"APP_KEY"," is the one value BenchKit cannot start without.",[109,247,249],{"id":248},"deploying-to-a-platform","Deploying to a platform",[98,251,252],{},"Point the platform at the repository and give it a build command that covers both halves of the install:",[114,254,257],{"className":116,"code":255,"filename":256,"language":119,"meta":120,"style":120},"# Install PHP dependencies\ncomposer install --no-dev --optimize-autoloader\n\n# Install Node dependencies\nyarn install\n\n# Build the frontend\nyarn build\n","Build command",[122,258,259,265,275,279,284,291,295,300],{"__ignoreMap":120},[125,260,261],{"class":127,"line":128},[125,262,264],{"class":263},"sAwPA","# Install PHP dependencies\n",[125,266,267,269,271,273],{"class":127,"line":142},[125,268,162],{"class":131},[125,270,165],{"class":135},[125,272,168],{"class":145},[125,274,171],{"class":145},[125,276,277],{"class":127,"line":152},[125,278,156],{"emptyLinePlaceholder":155},[125,280,281],{"class":127,"line":159},[125,282,283],{"class":263},"# Install Node dependencies\n",[125,285,286,288],{"class":127,"line":174},[125,287,177],{"class":131},[125,289,290],{"class":135}," install\n",[125,292,293],{"class":127,"line":191},[125,294,156],{"emptyLinePlaceholder":155},[125,296,297],{"class":127,"line":196},[125,298,299],{"class":263},"# Build the frontend\n",[125,301,302,304],{"class":127,"line":208},[125,303,177],{"class":131},[125,305,188],{"class":135},[98,307,308,309,311],{},"The frontend build matters. Compiled assets are not committed to the repository, so a deploy that only runs ",[122,310,223],{}," will boot and then fail to render. Beyond that, nothing about the deploy is BenchKit-specific.",[313,314,315],"warning",{},[98,316,317],{},"Give BenchKit a host of its own. Running it alongside a production application means the two compete for the same CPU, and neither set of numbers will describe what you think it does.",[109,319,321],{"id":320},"where-your-runs-are-stored","Where your runs are stored",[98,323,324,325,328],{},"Completed runs are written to ",[122,326,327],{},"storage/app/runs"," as JSON files. No database is involved, so there is nothing to migrate and nothing to back up beyond that directory.",[98,330,331,332,340],{},"The local development stack bind-mounts the repository, which keeps your history on your own machine. See ",[105,333,337],{"href":334,"rel":335},"https://github.com/serversideup/benchkit-laravel/blob/main/CONTRIBUTING.md",[336],"nofollow",[122,338,339],{},"CONTRIBUTING.md"," if you are working on BenchKit itself.",[342,343,344],"style",{},"html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}",{"title":120,"searchDepth":142,"depth":142,"links":346},[347,348,349],{"id":111,"depth":142,"text":112},{"id":248,"depth":142,"text":249},{"id":320,"depth":142,"text":321},"Run BenchKit on Laravel Cloud, Railway, or any host that wants a repository instead of a container.","md",null,{},{"title":21,"description":350},{"loc":22},"kl9Vp4Gp4xkd-Mdnxpwyi6cZpDHaSREhtQoIJw90f_8",[358,360],{"title":17,"path":18,"stem":19,"description":359,"children":-1},"Run BenchKit on the server you want to measure.",{"title":32,"path":33,"stem":34,"description":361,"children":-1},"Point BenchKit at MySQL, MariaDB, or Postgres instead of the default SQLite.",1786740096072]