CINXE.COM
Deploy PHP Apps via GitHub | Docs | IONOS Deploy Now
<!DOCTYPE html> <html data-html-server-rendered="true" lang="en" data-vue-tag="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D"> <head> <title>Deploy PHP Apps via GitHub | Docs | IONOS Deploy Now</title><meta name="gridsome:hash" content="6ad96c346b61bc3b7f03a8aab8ff2b0f6e92a6bd"><meta data-vue-tag="ssr" charset="utf-8"><meta data-vue-tag="ssr" name="generator" content="Gridsome v0.7.23"><meta data-vue-tag="ssr" data-key="viewport" name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"><meta data-vue-tag="ssr" data-key="format-detection" name="format-detection" content="telephone=no"><meta data-vue-tag="ssr" name="google-site-verification" content="UtLaJ4v0UZBDPJVc8DqCyiUPSSz9TtMroKmflhpH2eo"><meta data-vue-tag="ssr" data-key="og:url" name="og:url" content="undefined/team/robin-mueller/"><meta data-vue-tag="ssr" data-key="description" name="description" content="Deploy Now is a platform for building and hosting Static Site Generators and Single Page Applications on inhouse engineered IONOS infrastructure."><meta data-vue-tag="ssr" name="description" content="How to deploy a PHP application including a database directly via GitHub. Including smart setups for Laravel and Symfony, build automation and staging."><meta data-vue-tag="ssr" data-key="og:title" name="og:title" content="Deploy PHP Apps via GitHub | Docs"><meta data-vue-tag="ssr" data-key="og:description" name="og:description" content="How to deploy a PHP application including a database directly via GitHub. Including smart setups for Laravel and Symfony, build automation and staging."><meta data-vue-tag="ssr" data-key="twitter:title" name="twitter:title" content="Deploy PHP Apps via GitHub | Docs"><meta data-vue-tag="ssr" data-key="twitter:description" name="twitter:description" content="How to deploy a PHP application including a database directly via GitHub. Including smart setups for Laravel and Symfony, build automation and staging."><meta data-vue-tag="ssr" data-key="og:type" name="og:type" content="website"><meta data-vue-tag="ssr" data-key="twitter:card" name="twitter:card" content="summary_large_image"><meta data-vue-tag="ssr" data-key="og:image" name="og:image" content="https://docs.ionos.space/favicon.png"><meta data-vue-tag="ssr" data-key="twitter:image" name="twitter:image" content="https://docs.ionos.space/favicon.png"><link data-vue-tag="ssr" rel="icon" href="data:,"><link data-vue-tag="ssr" rel="icon" type="image/png" sizes="16x16" href="/assets/static/favicon.ce0531f.7227131fb676627f66f79aa1b9b1b2b5.png"><link data-vue-tag="ssr" rel="icon" type="image/png" sizes="32x32" href="/assets/static/favicon.ac8d93a.7227131fb676627f66f79aa1b9b1b2b5.png"><link data-vue-tag="ssr" rel="icon" type="image/png" sizes="96x96" href="/assets/static/favicon.b9532cc.7227131fb676627f66f79aa1b9b1b2b5.png"><link data-vue-tag="ssr" rel="apple-touch-icon-precomposed" type="image/png" sizes="76x76" href="/assets/static/favicon.f22e9f3.7227131fb676627f66f79aa1b9b1b2b5.png"><link data-vue-tag="ssr" rel="apple-touch-icon-precomposed" type="image/png" sizes="120x120" href="/assets/static/favicon.1539b60.7227131fb676627f66f79aa1b9b1b2b5.png"><link rel="preload" href="/assets/css/0.styles.20d902e6.css" as="style"><link rel="preload" href="/assets/js/app.1420e6f5.js" as="script"><link rel="preload" href="/assets/js/page--src--templates--markdown-page-vue.f5d097cb.js" as="script"><link rel="prefetch" href="/assets/js/page--src--pages--404-vue.b12f5170.js"><link rel="prefetch" href="/assets/js/page--src--pages--about-us-vue.3adebecf.js"><link rel="prefetch" href="/assets/js/page--src--pages--blog-vue.751bc822.js"><link rel="prefetch" href="/assets/js/page--src--pages--index-vue.8e23d7d5.js"><link rel="prefetch" href="/assets/js/search.651a1d13.js"><link rel="prefetch" href="/assets/js/vendors~search.706d69fe.js"><link rel="stylesheet" href="/assets/css/0.styles.20d902e6.css"><script data-vue-tag="ssr" type="text/javascript" src="/assets/js/service-worker.js" async></script><script data-vue-tag="ssr" type="application/ld+json">{"@context":"https://schema.org","@type":"BlogPosting","headline":"Deploy PHP Apps via GitHub","mainEntityOfPage":{"@type":"WebPage","@id":"/docs/deploy-php-apps/"},"publisher":{"@type":"Organization","name":"IONOS SE"},"articleBody":"<h1 id=\"deploy-php-apps-via-github\"><a href=\"#deploy-php-apps-via-github\" aria-hidden=\"true\"><span class=\"icon icon-link\"></span></a>Deploy PHP Apps via GitHub</h1>\n<p>Deploy Now offers a convenient toolset to automate builds and deployments for dynamic PHP applications. Workflows are automated with GitHub Actions and connect to IONOS shared hosting infrastructure. An automatic setup with default workflows are available for Laravel and Symfony. Set up a <code>PHP project</code> in Deploy Now for PHP scripting at runtime and a MariaDB for each deployment. </p>\n<p><img src=\"/04_PHP_apps_via_GitHub.gif\" alt=\"PHP Projects in Deploy Now\"></p>\n<h2 id=\"supported-frameworks\"><a href=\"#supported-frameworks\" aria-hidden=\"true\"><span class=\"icon icon-link\"></span></a>Supported frameworks</h2>\n<p>Deploy Now can host any PHP Application built with Composer and Node.js, see <a href=\"https://docs.github.com/en/get-started/learning-about-github/github-language-support\" target=\"_blank\" rel=\"noopener noreferrer\">languages supported by GitHub Actions</a>. Setting up Content Management System such as WordPress is possible, but does not yet come with automated, prefilled setups. </p>\n<h3 id=\"laravel\"><a href=\"#laravel\" aria-hidden=\"true\"><span class=\"icon icon-link\"></span></a>Laravel</h3>\n<p>After you connect your Laravel repository, Deploy Now suggests you build steps you can adapt to your liking. It might help you to deploy our <a href=\"/docs/framework-samples/#laravel-sample\">laravel sample project</a> for a completely prefilled setup including build steps, prefilled <code>.env</code>, <code>.htaccess</code>, file persistency management and automated runtime commands before and after each deployment. A complete manual of setting up a Laravel project can be found below.</p>\n<iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/otSwpzsoZss\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>\n<p><em>Please note that the <a href=\"https://docs.ionos.space/docs/runtime-configuration/#application-configuration\" target=\"_blank\" rel=\"noopener noreferrer\">syntax of the variable references</a> changed since the release of the video</em></p>\n<h3 id=\"symfony\"><a href=\"#symfony\" aria-hidden=\"true\"><span class=\"icon icon-link\"></span></a>Symfony</h3>\n<p>Deploy Now automacally detects Symfony projects and suggests build steps accordingly. The setup follows the same logic as a Laravel setup. You can deploy our <a href=\"/docs/framework-samples/#symfony-sample\">symfony sample project</a> for a quick start.</p>\n<h2 id=\"features\"><a href=\"#features\" aria-hidden=\"true\"><span class=\"icon icon-link\"></span></a>Features</h2>\n<ul>\n<li>Automated builds and deployments</li>\n<li>Connect your custom domain</li>\n<li>SSL automatically connected and renewed </li>\n<li>Set up <a href=\"/docs/cronjobs/\">Cron Jobs</a></li>\n<li>Deploy additional branches with <a href=\"/docs/staging-deployments/\">Staging Deployments</a></li>\n<li>Deploy one branch to multiple environments with <a href=\"/docs/multi-deployments/\">Multi Deployments</a></li>\n<li>10GB storage</li>\n<li>Up-to-date PHP versions</li>\n<li>MariaDB for each deployment</li>\n<li>Monitor traffic with <a href=\"/docs/visitor-statistics/\">Visitor statistics</a></li>\n<li>Fixed monthly pricing (see plans for <a href=\"https://www.ionos.com/hosting/deploy-now\" target=\"_blank\" rel=\"noopener noreferrer\">US</a>, <a href=\"https://www.ionos.co.uk/hosting/deploy-now\" target=\"_blank\" rel=\"noopener noreferrer\">UK</a>, <a href=\"https://www.ionos.de/hosting/deploy-now\" target=\"_blank\" rel=\"noopener noreferrer\">GER</a>, <a href=\"https://www.ionos.ca/hosting/deploy-now\" target=\"_blank\" rel=\"noopener noreferrer\">CA</a>, <a href=\"https://www.ionos.es/alojamiento/deploy-now\" target=\"_blank\" rel=\"noopener noreferrer\">ES</a>, <a href=\"https://www.ionos.fr/hebergement/deploy-now\" target=\"_blank\" rel=\"noopener noreferrer\">FR</a>, <a href=\"https://www.ionos.mx/alojamiento/deploy-now\" target=\"_blank\" rel=\"noopener noreferrer\">MX</a> and <a href=\"https://www.ionos.it/hosting/deploy-now\" target=\"_blank\" rel=\"noopener noreferrer\">IT</a>)</li>\n</ul>\n<h2 id=\"setup\"><a href=\"#setup\" aria-hidden=\"true\"><span class=\"icon icon-link\"></span></a>Setup</h2>\n<p>After connecting your repository, Deploy Now will guide you trough the following steps. Afterwards, the workflow will be set up to automacially build and deploy your project on every following <code>git push</code>.</p>\n<ul>\n<li><a href=\"/docs/github-actions-customization/\">Build configuration</a>: Define build depencies and commands</li>\n<li><a href=\"/docs/runtime-configuration/\">Runtime configuration</a>: Set up application configuration including database credentials</li>\n<li><a href=\"/docs/deployment-configuration/\">Deployment configuration</a>: Define file persistency and automate runtime commands</li>\n</ul>\n<h2 id=\"settings\"><a href=\"#settings\" aria-hidden=\"true\"><span class=\"icon icon-link\"></span></a>Settings</h2>\n<h3 id=\"build-setup\"><a href=\"#build-setup\" aria-hidden=\"true\"><span class=\"icon icon-link\"></span></a>Build setup</h3>\n<p><a href=\"/docs/github-actions-customization/\">Build settings</a> like dependencies, commands and environment variables can be adapted directly in the configuration files of the GitHub Actions workflow under <code>.github/workflows</code>. </p>\n<h3 id=\"domains--tls\"><a href=\"#domains--tls\" aria-hidden=\"true\"><span class=\"icon icon-link\"></span></a>Domains & TLS</h3>\n<p>Custom domains can be connected in a few clicks to replace the IONOS placeholder domain. If you want to connect a domain that you have not purchased at IONOS, you need to switch to the IONOS nameservers first. Each domain is automatically SSL secured.</p>\n<h3 id=\"redirects-rewrites-htaccess\"><a href=\"#redirects-rewrites-htaccess\" aria-hidden=\"true\"><span class=\"icon icon-link\"></span></a>Redirects, rewrites, HTACCESS</h3>\n<p>Redirects and rewrites can be managed via <code>.htaccess</code> files. Visit <a href=\"/docs/apache-configuration-htaccess\">Apache configuration</a> for examples.</p>\n<h3 id=\"cronjobs\"><a href=\"#cronjobs\" aria-hidden=\"true\"><span class=\"icon icon-link\"></span></a>Cronjobs</h3>\n<p>Cron Jobs can be managed in the <code>config.yaml</code> under <code>.deploy-now</code> as described <a href=\"/docs/cronjobs/\">here</a>.</p>\n<h2 id=\"managing-running-projects\"><a href=\"#managing-running-projects\" aria-hidden=\"true\"><span class=\"icon icon-link\"></span></a>Managing running projects</h2>\n<h3 id=\"file-space\"><a href=\"#file-space\" aria-hidden=\"true\"><span class=\"icon icon-link\"></span></a>File space</h3>\n<p>The current state of the webserver files including logs can be viewed via the <a href=\"/docs/deployment-viewer\">deployment viewer</a> in the Deploy Now dashboard. You can also download files here. Moving files onto the server is only possible via GitHub. If you want to keep files persistent, i.e. prevent them from being overwritten with the next commit, you can do this by adding excludes to the <code>config.yaml</code> under <code>.deploy-now</code>. Visit <a href=\"/docs/deployment-configuration/\">deployment configuration</a> for instructions.</p>\n<h3 id=\"database\"><a href=\"#database\" aria-hidden=\"true\"><span class=\"icon icon-link\"></span></a>Database</h3>\n<p>Databases will be automatically created for both production and staging deployments. You can access your databases via PHP MyAdmin. A backup of your database is creates automatically once per day and stored for 7 days. If you wish to access or restore a database backup, please contact our customer service. </p>\n<h3 id=\"execute-commands-on-runtime\"><a href=\"#execute-commands-on-runtime\" aria-hidden=\"true\"><span class=\"icon icon-link\"></span></a>Execute commands on runtime</h3>\n<p>To avoid inconsistencies between the GitHub repository and the runtime version of your project, Deploy Now does not offer SSH access to the server. Users can define commands to be executed on the runtime before and after deployments in the <code>config.yaml</code> under <code>.deploy-now</code> as described <a href=\"/docs/deployment-configuration/\">here</a>.</p>\n"}</script><noscript data-vue-tag="ssr"><style>.g-image--loading{display:none;}</style></noscript> </head> <body > <div data-server-rendered="true" id="app" class="font-sans antialiased text-ui-typo bg-ui-background"><div class="flex flex-col justify-start min-h-screen bg-ui-background"><header class="sticky top-0 z-10 w-full border-b border-ui-border"><div class="px-4 py-2 bg-ui-background min-h-[60px]"><div class="flex justify-between items-center"><div class="flex-center"><a href="/" title="Home" class="flex-center mr-2 sm:mr-12 active"><img src="/logo.svg" alt="Deploy Now logo" class="h-8 mr-2 deploy-now-logo"><div class="text-ui-headline font-headline font-semibold no-wrap hidden sm:block md:text-2xl"></div></a><div class="hidden xl:block"><a href="/docs/" class="p-2 mx-2 font-semibold font-headline text-ui-primary hover:text-ui-secondary dark:hover:text-white active"> Docs </a><a href="/docs/faq/" class="p-2 mx-2 font-semibold font-headline text-ui-primary hover:text-ui-secondary dark:hover:text-white"> FAQ </a><a href="/blog/" class="p-2 mx-2 font-semibold font-headline text-ui-primary hover:text-ui-secondary dark:hover:text-white"> Blog </a><a href="/about-us/" class="p-2 mx-2 font-semibold font-headline text-ui-primary hover:text-ui-secondary dark:hover:text-white"> About us </a><a href="https://www.ionos.com/hosting/deploy-now?utm_source=deploy-now-docs&utm_medium=navigation&utm_campaign=sign-up#pricing" target="_blank" rel="noopener" class="p-2 mx-2 font-semibold font-headline text-ui-primary hover:text-ui-secondary dark:hover:text-white"> Pricing </a></div></div><div class="p-3 lg:p-0 max-w-screen-xs <lg:ml-auto"><!----></div><div class="flex-center lg:space-x-8"><a href="https://github.com/ionos-deploy-now/documentation//tree/main" target="_blank" rel="noopener noreferrer" title="Github" class="icon p-2"><span aria-hidden="true" role="img" class="material-design-icon github-icon icon icon-lg"><svg fill="currentColor" width="24" height="24" viewBox="0 0 24 24" class="material-design-icon__svg"><path d="M12,2A10,10 0 0,0 2,12C2,16.42 4.87,20.17 8.84,21.5C9.34,21.58 9.5,21.27 9.5,21C9.5,20.77 9.5,20.14 9.5,19.31C6.73,19.91 6.14,17.97 6.14,17.97C5.68,16.81 5.03,16.5 5.03,16.5C4.12,15.88 5.1,15.9 5.1,15.9C6.1,15.97 6.63,16.93 6.63,16.93C7.5,18.45 8.97,18 9.54,17.76C9.63,17.11 9.89,16.67 10.17,16.42C7.95,16.17 5.62,15.31 5.62,11.5C5.62,10.39 6,9.5 6.65,8.79C6.55,8.54 6.2,7.5 6.75,6.15C6.75,6.15 7.59,5.88 9.5,7.17C10.29,6.95 11.15,6.84 12,6.84C12.85,6.84 13.71,6.95 14.5,7.17C16.41,5.88 17.25,6.15 17.25,6.15C17.8,7.5 17.45,8.54 17.35,8.79C18,9.5 18.38,10.39 18.38,11.5C18.38,15.32 16.04,16.16 13.81,16.41C14.17,16.72 14.5,17.33 14.5,18.26C14.5,19.6 14.5,20.68 14.5,21C14.5,21.27 14.66,21.59 15.17,21.5C19.14,20.16 22,16.42 22,12A10,10 0 0,0 12,2Z"><!----></path></svg></span></a><button aria-label="Toggle darkmode" title="Toggle darkmode" class="icon icon icon-lg p-2"><span aria-hidden="true" role="img" class="material-design-icon theme-light-dark-icon icon-lg"><svg fill="currentColor" width="24" height="24" viewBox="0 0 24 24" class="material-design-icon__svg"><path d="M7.5,2C5.71,3.15 4.5,5.18 4.5,7.5C4.5,9.82 5.71,11.85 7.53,13C4.46,13 2,10.54 2,7.5A5.5,5.5 0 0,1 7.5,2M19.07,3.5L20.5,4.93L4.93,20.5L3.5,19.07L19.07,3.5M12.89,5.93L11.41,5L9.97,6L10.39,4.3L9,3.24L10.75,3.12L11.33,1.47L12,3.1L13.73,3.13L12.38,4.26L12.89,5.93M9.59,9.54L8.43,8.81L7.31,9.59L7.65,8.27L6.56,7.44L7.92,7.35L8.37,6.06L8.88,7.33L10.24,7.36L9.19,8.23L9.59,9.54M19,13.5A5.5,5.5 0 0,1 13.5,19C12.28,19 11.15,18.6 10.24,17.93L17.93,10.24C18.6,11.15 19,12.28 19,13.5M14.6,20.08L17.37,18.93L17.13,22.28L14.6,20.08M18.93,17.38L20.08,14.61L22.28,17.15L18.93,17.38M20.08,12.42L18.94,9.64L22.28,9.88L20.08,12.42M9.63,18.93L12.4,20.08L9.87,22.27L9.63,18.93Z"><!----></path></svg></span></button><a href="https://ionos.space" target="_blank" rel="noopener noreferrer" title="Website" class="btn btn-primary ml-4 hide-mobile"><span aria-hidden="true" role="img" class="material-design-icon open-in-new-icon icon"><svg fill="currentColor" width="24" height="24" viewBox="0 0 24 24" class="material-design-icon__svg"><path d="M14,3V5H17.59L7.76,14.83L9.17,16.24L19,6.41V10H21V3M19,19H5V5H12V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19Z"><!----></path></svg></span> Deploy Now </a><button class="icon p-2 text-ui-typo active:text-ui-typo lg:hidden"><span aria-hidden="true" role="img" class="material-design-icon menu-icon icon icon-lg"><svg fill="currentColor" width="24" height="24" viewBox="0 0 24 24" class="material-design-icon__svg"><path d="M3,6H21V8H3V6M3,11H21V13H3V11M3,16H21V18H3V16Z"><!----></path></svg></span></button></div></div></div></header><main class="relative justify-center bg-ui-background"><aside class="sidebar lg:hidden" style="top:0px;height:calc(100vh - 0px);"><div class="w-full pb-16 bg-ui-background"><div class="px-4 pt-8 lg:pt-12"><div class="pb-4 mb-4 border-ui-border border-b"><h3 class="pt-0 mt-0 mb-1 text-sm tracking-tight uppercase border-none"> Getting Started </h3><ul class="max-w-full pl-2 mb-0"><li id="/docs/"><a href="/docs/" class="flex items-center py-1 font-semibold active"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> Introduction </a></li><li id="/docs/framework-samples/"><a href="/docs/framework-samples/" class="flex items-center py-1 font-semibold"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> From Sample </a></li><li id="/docs/from-cmd-line/"><a href="/docs/from-cmd-line/" class="flex items-center py-1 font-semibold"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> From Command Line </a></li><li id="/docs/from-repo/"><a href="/docs/from-repo/" class="flex items-center py-1 font-semibold"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> From Repository </a></li></ul></div><div class="pb-4 mb-4 border-ui-border border-b"><h3 class="pt-0 mt-0 mb-1 text-sm tracking-tight uppercase border-none"> Stacks </h3><ul class="max-w-full pl-2 mb-0"><li id="/docs/deploy-static-sites/"><a href="/docs/deploy-static-sites/" class="flex items-center py-1 font-semibold"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> Deploy Static Sites via GitHub </a></li><li id="/docs/deploy-php-apps/" class="text-ui-primary"><a href="/docs/deploy-php-apps/" aria-current="page" class="flex items-center py-1 font-semibold active--exact active"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center opacity-100 scale-100"></span> Deploy PHP Apps via GitHub </a></li></ul></div><div class="pb-4 mb-4 border-ui-border border-b"><h3 class="pt-0 mt-0 mb-1 text-sm tracking-tight uppercase border-none"> Configuration </h3><ul class="max-w-full pl-2 mb-0"><li id="/docs/github-actions-customization/"><a href="/docs/github-actions-customization/" class="flex items-center py-1 font-semibold"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> Build configuration </a></li><li id="/docs/deployment-configuration/"><a href="/docs/deployment-configuration/" class="flex items-center py-1 font-semibold"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> Deployment configuration </a></li><li id="/docs/runtime-configuration/"><a href="/docs/runtime-configuration/" class="flex items-center py-1 font-semibold"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> Runtime configuration </a></li><li id="/docs/apache-configuration-htaccess/"><a href="/docs/apache-configuration-htaccess/" class="flex items-center py-1 font-semibold"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> Apache configuration: .htaccess </a></li></ul></div><div class="pb-4 mb-4 border-ui-border border-b"><h3 class="pt-0 mt-0 mb-1 text-sm tracking-tight uppercase border-none"> Features </h3><ul class="max-w-full pl-2 mb-0"><li id="/docs/git-integration/"><a href="/docs/git-integration/" class="flex items-center py-1 font-semibold"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> GitHub integration </a></li><li id="/docs/staging-deployments/"><a href="/docs/staging-deployments/" class="flex items-center py-1 font-semibold"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> Staging deployments </a></li><li id="/docs/multi-deployments/"><a href="/docs/multi-deployments/" class="flex items-center py-1 font-semibold"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> Multi deployments </a></li><li id="/docs/database/"><a href="/docs/database/" class="flex items-center py-1 font-semibold"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> Database </a></li><li id="/docs/domain-tls/"><a href="/docs/domain-tls/" class="flex items-center py-1 font-semibold"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> Domains and TLS </a></li><li id="/docs/deployment-viewer/"><a href="/docs/deployment-viewer/" class="flex items-center py-1 font-semibold"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> View files and logs </a></li><li id="/docs/visitor-statistics/"><a href="/docs/visitor-statistics/" class="flex items-center py-1 font-semibold"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> Visitor statistics </a></li><li id="/docs/cronjobs/"><a href="/docs/cronjobs/" class="flex items-center py-1 font-semibold"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> Cron jobs </a></li></ul></div><div class="pb-4 mb-4 border-ui-border"><h3 class="pt-0 mt-0 mb-1 text-sm tracking-tight uppercase border-none"> More </h3><ul class="max-w-full pl-2 mb-0"><li id="/docs/faq/"><a href="/docs/faq/" class="flex items-center py-1 font-semibold"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> Frequently Asked Questions </a></li><li id="/blog/"><a href="/blog/" class="flex items-center py-1 font-semibold"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> Blog </a></li><li id="/about-us/"><a href="/about-us/" class="flex items-center py-1 font-semibold"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> About us </a></li><li id="/docs/create-sample/"><a href="/docs/create-sample/" class="flex items-center py-1 font-semibold"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> Create a sample </a></li><li id="https://github.com/ionos-deploy-now/ionos-deploy-now/blob/main/CHANGELOG.md"><a href="https://github.com/ionos-deploy-now/ionos-deploy-now/blob/main/CHANGELOG.md" target="_blank" rel="noopener" class="flex items-center py-1 font-semibold"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> Changelog </a></li><li id="https://github.com/ionos-deploy-now/ionos-deploy-now/issues/new/choose"><a href="https://github.com/ionos-deploy-now/ionos-deploy-now/issues/new/choose" target="_blank" rel="noopener" class="flex items-center py-1 font-semibold"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> Request a feature </a></li></ul></div></div></div></aside><div class="grid grid-cols-1"><div class="flex flex-wrap justify-start"><div class="<md:hidden lg:w-1/5 lg:order-2 overflow-y-auto sticky w-1/5 border-ui-border border-r lg:border-l lg:border-r-0" style="top:0px;height:calc(100vh - 0px);"><div class="mt-8 sm:px-4 sm:pb-16 md:mt-0 md:px-6 md:pt-12 lg:px-8 border-ui-border"><h3 class="pt-0 mt-0 text-sm tracking-wide uppercase border-none"> On this page </h3><div><ul><li class="font-semibold depth-2"><a href="/docs/deploy-php-apps/#supported-frameworks" class="relative flex items-center py-1 text-sm transition transform hover:translate-x-1"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> Supported frameworks </a></li><li class="depth-3"><a href="/docs/deploy-php-apps/#laravel" class="relative flex items-center py-1 text-sm transition transform hover:translate-x-1 pl-2"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> Laravel </a></li><li class="depth-3"><a href="/docs/deploy-php-apps/#symfony" class="relative flex items-center py-1 text-sm transition transform hover:translate-x-1 pl-2"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> Symfony </a></li><li class="border-t border-dashed border-ui-border pt-2 mt-2 font-semibold depth-2"><a href="/docs/deploy-php-apps/#features" class="relative flex items-center py-1 text-sm transition transform hover:translate-x-1"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> Features </a></li><li class="border-t border-dashed border-ui-border pt-2 mt-2 font-semibold depth-2"><a href="/docs/deploy-php-apps/#setup" class="relative flex items-center py-1 text-sm transition transform hover:translate-x-1"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> Setup </a></li><li class="border-t border-dashed border-ui-border pt-2 mt-2 font-semibold depth-2"><a href="/docs/deploy-php-apps/#settings" class="relative flex items-center py-1 text-sm transition transform hover:translate-x-1"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> Settings </a></li><li class="depth-3"><a href="/docs/deploy-php-apps/#build-setup" class="relative flex items-center py-1 text-sm transition transform hover:translate-x-1 pl-2"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> Build setup </a></li><li class="depth-3"><a href="/docs/deploy-php-apps/#domains--tls" class="relative flex items-center py-1 text-sm transition transform hover:translate-x-1 pl-2"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> Domains & TLS </a></li><li class="depth-3"><a href="/docs/deploy-php-apps/#redirects-rewrites-htaccess" class="relative flex items-center py-1 text-sm transition transform hover:translate-x-1 pl-2"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> Redirects, rewrites, HTACCESS </a></li><li class="depth-3"><a href="/docs/deploy-php-apps/#cronjobs" class="relative flex items-center py-1 text-sm transition transform hover:translate-x-1 pl-2"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> Cronjobs </a></li><li class="border-t border-dashed border-ui-border pt-2 mt-2 font-semibold depth-2"><a href="/docs/deploy-php-apps/#managing-running-projects" class="relative flex items-center py-1 text-sm transition transform hover:translate-x-1"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> Managing running projects </a></li><li class="depth-3"><a href="/docs/deploy-php-apps/#file-space" class="relative flex items-center py-1 text-sm transition transform hover:translate-x-1 pl-2"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> File space </a></li><li class="depth-3"><a href="/docs/deploy-php-apps/#database" class="relative flex items-center py-1 text-sm transition transform hover:translate-x-1 pl-2"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> Database </a></li><li class="depth-3"><a href="/docs/deploy-php-apps/#execute-commands-on-runtime" class="relative flex items-center py-1 text-sm transition transform hover:translate-x-1 pl-2"><span class="absolute w-1 h-4 -ml-3 opacity-0 bg-ui-primary transition transform scale-0 origin-center"></span> Execute commands on runtime </a></li></ul></div></div></div><div class="container pb-24 <md:max-w-[90vw] lg:w-3/5 lg:order-1 md:w-3/5"><div><div class="content"><h1 id="deploy-php-apps-via-github"><a href="#deploy-php-apps-via-github" aria-hidden="true"><span class="icon icon-link"></span></a>Deploy PHP Apps via GitHub</h1> <p>Deploy Now offers a convenient toolset to automate builds and deployments for dynamic PHP applications. Workflows are automated with GitHub Actions and connect to IONOS shared hosting infrastructure. An automatic setup with default workflows are available for Laravel and Symfony. Set up a <code>PHP project</code> in Deploy Now for PHP scripting at runtime and a MariaDB for each deployment. </p> <p><img src="/04_PHP_apps_via_GitHub.gif" alt="PHP Projects in Deploy Now"></p> <h2 id="supported-frameworks"><a href="#supported-frameworks" aria-hidden="true"><span class="icon icon-link"></span></a>Supported frameworks</h2> <p>Deploy Now can host any PHP Application built with Composer and Node.js, see <a href="https://docs.github.com/en/get-started/learning-about-github/github-language-support" target="_blank" rel="noopener noreferrer">languages supported by GitHub Actions</a>. Setting up Content Management System such as WordPress is possible, but does not yet come with automated, prefilled setups. </p> <h3 id="laravel"><a href="#laravel" aria-hidden="true"><span class="icon icon-link"></span></a>Laravel</h3> <p>After you connect your Laravel repository, Deploy Now suggests you build steps you can adapt to your liking. It might help you to deploy our <a href="/docs/framework-samples/#laravel-sample">laravel sample project</a> for a completely prefilled setup including build steps, prefilled <code>.env</code>, <code>.htaccess</code>, file persistency management and automated runtime commands before and after each deployment. A complete manual of setting up a Laravel project can be found below.</p> <iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/otSwpzsoZss" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> <p><em>Please note that the <a href="https://docs.ionos.space/docs/runtime-configuration/#application-configuration" target="_blank" rel="noopener noreferrer">syntax of the variable references</a> changed since the release of the video</em></p> <h3 id="symfony"><a href="#symfony" aria-hidden="true"><span class="icon icon-link"></span></a>Symfony</h3> <p>Deploy Now automacally detects Symfony projects and suggests build steps accordingly. The setup follows the same logic as a Laravel setup. You can deploy our <a href="/docs/framework-samples/#symfony-sample">symfony sample project</a> for a quick start.</p> <h2 id="features"><a href="#features" aria-hidden="true"><span class="icon icon-link"></span></a>Features</h2> <ul> <li>Automated builds and deployments</li> <li>Connect your custom domain</li> <li>SSL automatically connected and renewed </li> <li>Set up <a href="/docs/cronjobs/">Cron Jobs</a></li> <li>Deploy additional branches with <a href="/docs/staging-deployments/">Staging Deployments</a></li> <li>Deploy one branch to multiple environments with <a href="/docs/multi-deployments/">Multi Deployments</a></li> <li>10GB storage</li> <li>Up-to-date PHP versions</li> <li>MariaDB for each deployment</li> <li>Monitor traffic with <a href="/docs/visitor-statistics/">Visitor statistics</a></li> <li>Fixed monthly pricing (see plans for <a href="https://www.ionos.com/hosting/deploy-now" target="_blank" rel="noopener noreferrer">US</a>, <a href="https://www.ionos.co.uk/hosting/deploy-now" target="_blank" rel="noopener noreferrer">UK</a>, <a href="https://www.ionos.de/hosting/deploy-now" target="_blank" rel="noopener noreferrer">GER</a>, <a href="https://www.ionos.ca/hosting/deploy-now" target="_blank" rel="noopener noreferrer">CA</a>, <a href="https://www.ionos.es/alojamiento/deploy-now" target="_blank" rel="noopener noreferrer">ES</a>, <a href="https://www.ionos.fr/hebergement/deploy-now" target="_blank" rel="noopener noreferrer">FR</a>, <a href="https://www.ionos.mx/alojamiento/deploy-now" target="_blank" rel="noopener noreferrer">MX</a> and <a href="https://www.ionos.it/hosting/deploy-now" target="_blank" rel="noopener noreferrer">IT</a>)</li> </ul> <h2 id="setup"><a href="#setup" aria-hidden="true"><span class="icon icon-link"></span></a>Setup</h2> <p>After connecting your repository, Deploy Now will guide you trough the following steps. Afterwards, the workflow will be set up to automacially build and deploy your project on every following <code>git push</code>.</p> <ul> <li><a href="/docs/github-actions-customization/">Build configuration</a>: Define build depencies and commands</li> <li><a href="/docs/runtime-configuration/">Runtime configuration</a>: Set up application configuration including database credentials</li> <li><a href="/docs/deployment-configuration/">Deployment configuration</a>: Define file persistency and automate runtime commands</li> </ul> <h2 id="settings"><a href="#settings" aria-hidden="true"><span class="icon icon-link"></span></a>Settings</h2> <h3 id="build-setup"><a href="#build-setup" aria-hidden="true"><span class="icon icon-link"></span></a>Build setup</h3> <p><a href="/docs/github-actions-customization/">Build settings</a> like dependencies, commands and environment variables can be adapted directly in the configuration files of the GitHub Actions workflow under <code>.github/workflows</code>. </p> <h3 id="domains--tls"><a href="#domains--tls" aria-hidden="true"><span class="icon icon-link"></span></a>Domains & TLS</h3> <p>Custom domains can be connected in a few clicks to replace the IONOS placeholder domain. If you want to connect a domain that you have not purchased at IONOS, you need to switch to the IONOS nameservers first. Each domain is automatically SSL secured.</p> <h3 id="redirects-rewrites-htaccess"><a href="#redirects-rewrites-htaccess" aria-hidden="true"><span class="icon icon-link"></span></a>Redirects, rewrites, HTACCESS</h3> <p>Redirects and rewrites can be managed via <code>.htaccess</code> files. Visit <a href="/docs/apache-configuration-htaccess">Apache configuration</a> for examples.</p> <h3 id="cronjobs"><a href="#cronjobs" aria-hidden="true"><span class="icon icon-link"></span></a>Cronjobs</h3> <p>Cron Jobs can be managed in the <code>config.yaml</code> under <code>.deploy-now</code> as described <a href="/docs/cronjobs/">here</a>.</p> <h2 id="managing-running-projects"><a href="#managing-running-projects" aria-hidden="true"><span class="icon icon-link"></span></a>Managing running projects</h2> <h3 id="file-space"><a href="#file-space" aria-hidden="true"><span class="icon icon-link"></span></a>File space</h3> <p>The current state of the webserver files including logs can be viewed via the <a href="/docs/deployment-viewer">deployment viewer</a> in the Deploy Now dashboard. You can also download files here. Moving files onto the server is only possible via GitHub. If you want to keep files persistent, i.e. prevent them from being overwritten with the next commit, you can do this by adding excludes to the <code>config.yaml</code> under <code>.deploy-now</code>. Visit <a href="/docs/deployment-configuration/">deployment configuration</a> for instructions.</p> <h3 id="database"><a href="#database" aria-hidden="true"><span class="icon icon-link"></span></a>Database</h3> <p>Databases will be automatically created for both production and staging deployments. You can access your databases via PHP MyAdmin. A backup of your database is creates automatically once per day and stored for 7 days. If you wish to access or restore a database backup, please contact our customer service. </p> <h3 id="execute-commands-on-runtime"><a href="#execute-commands-on-runtime" aria-hidden="true"><span class="icon icon-link"></span></a>Execute commands on runtime</h3> <p>To avoid inconsistencies between the GitHub repository and the runtime version of your project, Deploy Now does not offer SSH access to the server. Users can define commands to be executed on the runtime before and after deployments in the <code>config.yaml</code> under <code>.deploy-now</code> as described <a href="/docs/deployment-configuration/">here</a>.</p> </div><div class="mt-10"><a href="https://github.com/ionos-deploy-now/documentation//edit/main/content/docs/deploy-php-apps.md" target="_blank" rel="noopener noreferrer" class="flex items-center opacity-50 hover:opacity-100 hover:no-underline"><span aria-hidden="true" role="img" decorative="" class="material-design-icon pencil-outline-icon"><svg fill="currentColor" width="24" height="24" viewBox="0 0 24 24" class="material-design-icon__svg"><path d="M14.06,9L15,9.94L5.92,19H5V18.08L14.06,9M17.66,3C17.41,3 17.15,3.1 16.96,3.29L15.13,5.12L18.88,8.87L20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18.17,3.09 17.92,3 17.66,3M14.06,6.19L3,17.25V21H6.75L17.81,9.94L14.06,6.19Z"><!----></path></svg></span><span class="ml-1"> Suggest changes to this page </span></a></div><div class="mt-8 pt-8 lg:mt-12 lg:pt-12 border-t border-ui-border"><div class="flex justify-between items-stretch space-x-2"><a href="/docs/deploy-static-sites/" class="btn btn-hover"><span aria-hidden="true" role="img" decorative="" class="material-design-icon arrow-left-icon mr-2"><svg fill="currentColor" width="24" height="24" viewBox="0 0 24 24" class="material-design-icon__svg"><path d="M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z"><!----></path></svg></span> Deploy Static Sites via GitHub </a><a href="/docs/github-actions-customization/" class="btn btn-hover"> Build configuration <span aria-hidden="true" role="img" decorative="" class="material-design-icon arrow-right-icon ml-2"><svg fill="currentColor" width="24" height="24" viewBox="0 0 24 24" class="material-design-icon__svg"><path d="M4,11V13H16L10.5,18.5L11.92,19.92L19.84,12L11.92,4.08L10.5,5.5L16,11H4Z"><!----></path></svg></span></a></div></div></div></div></div></div></main></div><div class="footer md:grid md:grid-cols-5"><div class="col-start-2 col-span-3 grid grid-cols-1 gap-4 <md:gap-8 md:grid-cols-4 md:gap-16"><div class="space-y-4"><div class="font-bold">Docs</div><a href="/docs/" class="active">Introduction</a><a href="/docs/deploy-static-sites/">Deploy a Static Site</a><a href="/docs/deploy-php-apps/" aria-current="page" class="active--exact active">Deploy a PHP App</a><a href="/docs/github-actions-customization/">Build configuration</a><a href="/docs/deployment-configuration/">Deployment configuration</a><a href="/docs/runtime-configuration/">Runtime configuration</a><a href="/docs/git-integration/">Github Integration</a><a href="/docs/staging-deployments/">Staging Deployments</a><a href="/docs/domain-tls/">Domains & TLS/SSL</a><a href="/docs/framework-samples/">Framework samples</a></div><div class="space-y-4"><div class="font-bold">Customer Shops</div><a href="https://www.ionos.com/hosting/deploy-now?utm_source=deploy-now-docs&utm_medium=footer&utm_campaign=shop-links" rel="noreferrer" target="_blank">United States</a><a href="https://www.ionos.co.uk/hosting/deploy-now?utm_source=deploy-now-docs&utm_medium=footer&utm_campaign=shop-links" rel="noreferrer" target="_blank">United Kingdom</a><a href="https://www.ionos.de/hosting/deploy-now?utm_source=deploy-now-docs&utm_medium=footer&utm_campaign=shop-links" rel="noreferrer" target="_blank">Germany</a><a href="https://www.ionos.ca/hosting/deploy-now?utm_source=deploy-now-docs&utm_medium=footer&utm_campaign=shop-links" rel="noreferrer" target="_blank">Canada</a><a href="https://www.ionos.es/alojamiento/deploy-now?utm_source=deploy-now-docs&utm_medium=footer&utm_campaign=shop-links" rel="noreferrer" target="_blank">Spain</a><a href="https://www.ionos.fr/hebergement/deploy-now?utm_source=deploy-now-docs&utm_medium=footer&utm_campaign=shop-links" rel="noreferrer" target="_blank">France</a><a href="https://www.ionos.it/hosting/deploy-now?utm_source=deploy-now-docs&utm_medium=footer&utm_campaign=shop-links" rel="noreferrer" target="_blank">Italy</a><a href="https://www.ionos.mx/alojamiento/deploy-now?utm_source=deploy-now-docs&utm_medium=footer&utm_campaign=shop-links" rel="noreferrer" target="_blank">Mexico</a></div><div class="space-y-4"><div class="font-bold">Company</div><a href="https://www.ionos.com/about?utm_source=deploy-now-docs&utm_medium=footer&utm_campaign=shop-links" rel="noreferrer" target="_blank"> About IONOS </a><a href="https://www.ionos.com/agency-partner?utm_source=deploy-now-docs&utm_medium=footer&utm_campaign=shop-links" rel="noreferrer" target="_blank"> IONOS Agency Partner Programm </a><a href="https://www.ionos.com/terms-gtc/general-terms-and-conditions/" rel="”noreferrer”" target="_blank"> Terms and Conditions </a><a href="https://www.ionos.de/terms-gtc/terms-privacy" rel="”noreferrer”" target="_blank"> Privacy Policy </a><a href="https://www.ionos.de/impressum" rel="”noreferrer”" target="_blank"> Legal Information </a><div class="font-bold">Assets</div><a href="https://www.ionos.com/hosting/jamstack" rel="noreferrer" target="_blank">What is the Jamstack?</a><a href="/about-us/" target="_blank">About Deploy Now</a><a href="/blog/" target="_blank">Blog</a><a href="/docs/faq/" target="_blank">Frequently Asked Questions</a></div><div class="space-y-4"><a href="https://www.ionos.com/" rel="noreferrer" target="_blank"><img alt="ionos logo" src="https://ce1.uicdn.net/2dd/1690fa2f62f6ed55e11b6c594145c/webapp/vi-logo.svg" width="150"></a><div>© 2024 <span>IONOS SE</span></div><a href="https://www.ionos.com/environment" rel="noreferrer" target="_blank" class="flex items-center space-x-2"><img alt="green energy logo" src="https://ce1.uicdn.net/347/e8f7028afa25836bf517e5414ba5f/frontend-applications-common/vi-green-energy.svg" width="50" class="inline"><span>Environment</span></a></div></div></div></div> <script>window.__INITIAL_STATE__={"data":{"markdownPage":{"id":"1bde552cfb180cb6fc998f8d055649fd","title":"Deploy PHP Apps via GitHub","description":"How to deploy a PHP application including a database directly via GitHub. Including smart setups for Laravel and Symfony, build automation and staging.","path":"\u002Fdocs\u002Fdeploy-php-apps\u002F","fileInfo":{"path":"docs\u002Fdeploy-php-apps.md"},"editable":true,"timeToRead":3,"content":"\u003Ch1 id=\"deploy-php-apps-via-github\"\u003E\u003Ca href=\"#deploy-php-apps-via-github\" aria-hidden=\"true\"\u003E\u003Cspan class=\"icon icon-link\"\u003E\u003C\u002Fspan\u003E\u003C\u002Fa\u003EDeploy PHP Apps via GitHub\u003C\u002Fh1\u003E\n\u003Cp\u003EDeploy Now offers a convenient toolset to automate builds and deployments for dynamic PHP applications. Workflows are automated with GitHub Actions and connect to IONOS shared hosting infrastructure. An automatic setup with default workflows are available for Laravel and Symfony. Set up a \u003Ccode\u003EPHP project\u003C\u002Fcode\u003E in Deploy Now for PHP scripting at runtime and a MariaDB for each deployment. \u003C\u002Fp\u003E\n\u003Cp\u003E\u003Cimg src=\"\u002F04_PHP_apps_via_GitHub.gif\" alt=\"PHP Projects in Deploy Now\"\u003E\u003C\u002Fp\u003E\n\u003Ch2 id=\"supported-frameworks\"\u003E\u003Ca href=\"#supported-frameworks\" aria-hidden=\"true\"\u003E\u003Cspan class=\"icon icon-link\"\u003E\u003C\u002Fspan\u003E\u003C\u002Fa\u003ESupported frameworks\u003C\u002Fh2\u003E\n\u003Cp\u003EDeploy Now can host any PHP Application built with Composer and Node.js, see \u003Ca href=\"https:\u002F\u002Fdocs.github.com\u002Fen\u002Fget-started\u002Flearning-about-github\u002Fgithub-language-support\" target=\"_blank\" rel=\"noopener noreferrer\"\u003Elanguages supported by GitHub Actions\u003C\u002Fa\u003E. Setting up Content Management System such as WordPress is possible, but does not yet come with automated, prefilled setups. \u003C\u002Fp\u003E\n\u003Ch3 id=\"laravel\"\u003E\u003Ca href=\"#laravel\" aria-hidden=\"true\"\u003E\u003Cspan class=\"icon icon-link\"\u003E\u003C\u002Fspan\u003E\u003C\u002Fa\u003ELaravel\u003C\u002Fh3\u003E\n\u003Cp\u003EAfter you connect your Laravel repository, Deploy Now suggests you build steps you can adapt to your liking. It might help you to deploy our \u003Ca href=\"\u002Fdocs\u002Fframework-samples\u002F#laravel-sample\"\u003Elaravel sample project\u003C\u002Fa\u003E for a completely prefilled setup including build steps, prefilled \u003Ccode\u003E.env\u003C\u002Fcode\u003E, \u003Ccode\u003E.htaccess\u003C\u002Fcode\u003E, file persistency management and automated runtime commands before and after each deployment. A complete manual of setting up a Laravel project can be found below.\u003C\u002Fp\u003E\n\u003Ciframe width=\"560\" height=\"315\" src=\"https:\u002F\u002Fwww.youtube-nocookie.com\u002Fembed\u002FotSwpzsoZss\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen\u003E\u003C\u002Fiframe\u003E\n\u003Cp\u003E\u003Cem\u003EPlease note that the \u003Ca href=\"https:\u002F\u002Fdocs.ionos.space\u002Fdocs\u002Fruntime-configuration\u002F#application-configuration\" target=\"_blank\" rel=\"noopener noreferrer\"\u003Esyntax of the variable references\u003C\u002Fa\u003E changed since the release of the video\u003C\u002Fem\u003E\u003C\u002Fp\u003E\n\u003Ch3 id=\"symfony\"\u003E\u003Ca href=\"#symfony\" aria-hidden=\"true\"\u003E\u003Cspan class=\"icon icon-link\"\u003E\u003C\u002Fspan\u003E\u003C\u002Fa\u003ESymfony\u003C\u002Fh3\u003E\n\u003Cp\u003EDeploy Now automacally detects Symfony projects and suggests build steps accordingly. The setup follows the same logic as a Laravel setup. You can deploy our \u003Ca href=\"\u002Fdocs\u002Fframework-samples\u002F#symfony-sample\"\u003Esymfony sample project\u003C\u002Fa\u003E for a quick start.\u003C\u002Fp\u003E\n\u003Ch2 id=\"features\"\u003E\u003Ca href=\"#features\" aria-hidden=\"true\"\u003E\u003Cspan class=\"icon icon-link\"\u003E\u003C\u002Fspan\u003E\u003C\u002Fa\u003EFeatures\u003C\u002Fh2\u003E\n\u003Cul\u003E\n\u003Cli\u003EAutomated builds and deployments\u003C\u002Fli\u003E\n\u003Cli\u003EConnect your custom domain\u003C\u002Fli\u003E\n\u003Cli\u003ESSL automatically connected and renewed \u003C\u002Fli\u003E\n\u003Cli\u003ESet up \u003Ca href=\"\u002Fdocs\u002Fcronjobs\u002F\"\u003ECron Jobs\u003C\u002Fa\u003E\u003C\u002Fli\u003E\n\u003Cli\u003EDeploy additional branches with \u003Ca href=\"\u002Fdocs\u002Fstaging-deployments\u002F\"\u003EStaging Deployments\u003C\u002Fa\u003E\u003C\u002Fli\u003E\n\u003Cli\u003EDeploy one branch to multiple environments with \u003Ca href=\"\u002Fdocs\u002Fmulti-deployments\u002F\"\u003EMulti Deployments\u003C\u002Fa\u003E\u003C\u002Fli\u003E\n\u003Cli\u003E10GB storage\u003C\u002Fli\u003E\n\u003Cli\u003EUp-to-date PHP versions\u003C\u002Fli\u003E\n\u003Cli\u003EMariaDB for each deployment\u003C\u002Fli\u003E\n\u003Cli\u003EMonitor traffic with \u003Ca href=\"\u002Fdocs\u002Fvisitor-statistics\u002F\"\u003EVisitor statistics\u003C\u002Fa\u003E\u003C\u002Fli\u003E\n\u003Cli\u003EFixed monthly pricing (see plans for \u003Ca href=\"https:\u002F\u002Fwww.ionos.com\u002Fhosting\u002Fdeploy-now\" target=\"_blank\" rel=\"noopener noreferrer\"\u003EUS\u003C\u002Fa\u003E, \u003Ca href=\"https:\u002F\u002Fwww.ionos.co.uk\u002Fhosting\u002Fdeploy-now\" target=\"_blank\" rel=\"noopener noreferrer\"\u003EUK\u003C\u002Fa\u003E, \u003Ca href=\"https:\u002F\u002Fwww.ionos.de\u002Fhosting\u002Fdeploy-now\" target=\"_blank\" rel=\"noopener noreferrer\"\u003EGER\u003C\u002Fa\u003E, \u003Ca href=\"https:\u002F\u002Fwww.ionos.ca\u002Fhosting\u002Fdeploy-now\" target=\"_blank\" rel=\"noopener noreferrer\"\u003ECA\u003C\u002Fa\u003E, \u003Ca href=\"https:\u002F\u002Fwww.ionos.es\u002Falojamiento\u002Fdeploy-now\" target=\"_blank\" rel=\"noopener noreferrer\"\u003EES\u003C\u002Fa\u003E, \u003Ca href=\"https:\u002F\u002Fwww.ionos.fr\u002Fhebergement\u002Fdeploy-now\" target=\"_blank\" rel=\"noopener noreferrer\"\u003EFR\u003C\u002Fa\u003E, \u003Ca href=\"https:\u002F\u002Fwww.ionos.mx\u002Falojamiento\u002Fdeploy-now\" target=\"_blank\" rel=\"noopener noreferrer\"\u003EMX\u003C\u002Fa\u003E and \u003Ca href=\"https:\u002F\u002Fwww.ionos.it\u002Fhosting\u002Fdeploy-now\" target=\"_blank\" rel=\"noopener noreferrer\"\u003EIT\u003C\u002Fa\u003E)\u003C\u002Fli\u003E\n\u003C\u002Ful\u003E\n\u003Ch2 id=\"setup\"\u003E\u003Ca href=\"#setup\" aria-hidden=\"true\"\u003E\u003Cspan class=\"icon icon-link\"\u003E\u003C\u002Fspan\u003E\u003C\u002Fa\u003ESetup\u003C\u002Fh2\u003E\n\u003Cp\u003EAfter connecting your repository, Deploy Now will guide you trough the following steps. Afterwards, the workflow will be set up to automacially build and deploy your project on every following \u003Ccode\u003Egit push\u003C\u002Fcode\u003E.\u003C\u002Fp\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\"\u002Fdocs\u002Fgithub-actions-customization\u002F\"\u003EBuild configuration\u003C\u002Fa\u003E: Define build depencies and commands\u003C\u002Fli\u003E\n\u003Cli\u003E\u003Ca href=\"\u002Fdocs\u002Fruntime-configuration\u002F\"\u003ERuntime configuration\u003C\u002Fa\u003E: Set up application configuration including database credentials\u003C\u002Fli\u003E\n\u003Cli\u003E\u003Ca href=\"\u002Fdocs\u002Fdeployment-configuration\u002F\"\u003EDeployment configuration\u003C\u002Fa\u003E: Define file persistency and automate runtime commands\u003C\u002Fli\u003E\n\u003C\u002Ful\u003E\n\u003Ch2 id=\"settings\"\u003E\u003Ca href=\"#settings\" aria-hidden=\"true\"\u003E\u003Cspan class=\"icon icon-link\"\u003E\u003C\u002Fspan\u003E\u003C\u002Fa\u003ESettings\u003C\u002Fh2\u003E\n\u003Ch3 id=\"build-setup\"\u003E\u003Ca href=\"#build-setup\" aria-hidden=\"true\"\u003E\u003Cspan class=\"icon icon-link\"\u003E\u003C\u002Fspan\u003E\u003C\u002Fa\u003EBuild setup\u003C\u002Fh3\u003E\n\u003Cp\u003E\u003Ca href=\"\u002Fdocs\u002Fgithub-actions-customization\u002F\"\u003EBuild settings\u003C\u002Fa\u003E like dependencies, commands and environment variables can be adapted directly in the configuration files of the GitHub Actions workflow under \u003Ccode\u003E.github\u002Fworkflows\u003C\u002Fcode\u003E. \u003C\u002Fp\u003E\n\u003Ch3 id=\"domains--tls\"\u003E\u003Ca href=\"#domains--tls\" aria-hidden=\"true\"\u003E\u003Cspan class=\"icon icon-link\"\u003E\u003C\u002Fspan\u003E\u003C\u002Fa\u003EDomains & TLS\u003C\u002Fh3\u003E\n\u003Cp\u003ECustom domains can be connected in a few clicks to replace the IONOS placeholder domain. If you want to connect a domain that you have not purchased at IONOS, you need to switch to the IONOS nameservers first. Each domain is automatically SSL secured.\u003C\u002Fp\u003E\n\u003Ch3 id=\"redirects-rewrites-htaccess\"\u003E\u003Ca href=\"#redirects-rewrites-htaccess\" aria-hidden=\"true\"\u003E\u003Cspan class=\"icon icon-link\"\u003E\u003C\u002Fspan\u003E\u003C\u002Fa\u003ERedirects, rewrites, HTACCESS\u003C\u002Fh3\u003E\n\u003Cp\u003ERedirects and rewrites can be managed via \u003Ccode\u003E.htaccess\u003C\u002Fcode\u003E files. Visit \u003Ca href=\"\u002Fdocs\u002Fapache-configuration-htaccess\"\u003EApache configuration\u003C\u002Fa\u003E for examples.\u003C\u002Fp\u003E\n\u003Ch3 id=\"cronjobs\"\u003E\u003Ca href=\"#cronjobs\" aria-hidden=\"true\"\u003E\u003Cspan class=\"icon icon-link\"\u003E\u003C\u002Fspan\u003E\u003C\u002Fa\u003ECronjobs\u003C\u002Fh3\u003E\n\u003Cp\u003ECron Jobs can be managed in the \u003Ccode\u003Econfig.yaml\u003C\u002Fcode\u003E under \u003Ccode\u003E.deploy-now\u003C\u002Fcode\u003E as described \u003Ca href=\"\u002Fdocs\u002Fcronjobs\u002F\"\u003Ehere\u003C\u002Fa\u003E.\u003C\u002Fp\u003E\n\u003Ch2 id=\"managing-running-projects\"\u003E\u003Ca href=\"#managing-running-projects\" aria-hidden=\"true\"\u003E\u003Cspan class=\"icon icon-link\"\u003E\u003C\u002Fspan\u003E\u003C\u002Fa\u003EManaging running projects\u003C\u002Fh2\u003E\n\u003Ch3 id=\"file-space\"\u003E\u003Ca href=\"#file-space\" aria-hidden=\"true\"\u003E\u003Cspan class=\"icon icon-link\"\u003E\u003C\u002Fspan\u003E\u003C\u002Fa\u003EFile space\u003C\u002Fh3\u003E\n\u003Cp\u003EThe current state of the webserver files including logs can be viewed via the \u003Ca href=\"\u002Fdocs\u002Fdeployment-viewer\"\u003Edeployment viewer\u003C\u002Fa\u003E in the Deploy Now dashboard. You can also download files here. Moving files onto the server is only possible via GitHub. If you want to keep files persistent, i.e. prevent them from being overwritten with the next commit, you can do this by adding excludes to the \u003Ccode\u003Econfig.yaml\u003C\u002Fcode\u003E under \u003Ccode\u003E.deploy-now\u003C\u002Fcode\u003E. Visit \u003Ca href=\"\u002Fdocs\u002Fdeployment-configuration\u002F\"\u003Edeployment configuration\u003C\u002Fa\u003E for instructions.\u003C\u002Fp\u003E\n\u003Ch3 id=\"database\"\u003E\u003Ca href=\"#database\" aria-hidden=\"true\"\u003E\u003Cspan class=\"icon icon-link\"\u003E\u003C\u002Fspan\u003E\u003C\u002Fa\u003EDatabase\u003C\u002Fh3\u003E\n\u003Cp\u003EDatabases will be automatically created for both production and staging deployments. You can access your databases via PHP MyAdmin. A backup of your database is creates automatically once per day and stored for 7 days. If you wish to access or restore a database backup, please contact our customer service. \u003C\u002Fp\u003E\n\u003Ch3 id=\"execute-commands-on-runtime\"\u003E\u003Ca href=\"#execute-commands-on-runtime\" aria-hidden=\"true\"\u003E\u003Cspan class=\"icon icon-link\"\u003E\u003C\u002Fspan\u003E\u003C\u002Fa\u003EExecute commands on runtime\u003C\u002Fh3\u003E\n\u003Cp\u003ETo avoid inconsistencies between the GitHub repository and the runtime version of your project, Deploy Now does not offer SSH access to the server. Users can define commands to be executed on the runtime before and after deployments in the \u003Ccode\u003Econfig.yaml\u003C\u002Fcode\u003E under \u003Ccode\u003E.deploy-now\u003C\u002Fcode\u003E as described \u003Ca href=\"\u002Fdocs\u002Fdeployment-configuration\u002F\"\u003Ehere\u003C\u002Fa\u003E.\u003C\u002Fp\u003E\n","contentType":"docs","header":null,"sidebar":"docs","next":"\u002Fdocs\u002Fgithub-actions-customization\u002F","prev":"\u002Fdocs\u002Fdeploy-static-sites\u002F","headings":[{"depth":1,"value":"Deploy PHP Apps via GitHub","anchor":"#deploy-php-apps-via-github"},{"depth":2,"value":"Supported frameworks","anchor":"#supported-frameworks"},{"depth":3,"value":"Laravel","anchor":"#laravel"},{"depth":3,"value":"Symfony","anchor":"#symfony"},{"depth":2,"value":"Features","anchor":"#features"},{"depth":2,"value":"Setup","anchor":"#setup"},{"depth":2,"value":"Settings","anchor":"#settings"},{"depth":3,"value":"Build setup","anchor":"#build-setup"},{"depth":3,"value":"Domains & TLS","anchor":"#domains--tls"},{"depth":3,"value":"Redirects, rewrites, HTACCESS","anchor":"#redirects-rewrites-htaccess"},{"depth":3,"value":"Cronjobs","anchor":"#cronjobs"},{"depth":2,"value":"Managing running projects","anchor":"#managing-running-projects"},{"depth":3,"value":"File space","anchor":"#file-space"},{"depth":3,"value":"Database","anchor":"#database"},{"depth":3,"value":"Execute commands on runtime","anchor":"#execute-commands-on-runtime"}]},"allMarkdownPage":{"edges":[{"node":{"path":"\u002Fblog\u002Fdeploy-laravel-via-github\u002F","title":"Fastest ever Laravel deployments via GitHub? You decide."}},{"node":{"path":"\u002Fteam\u002Froman-okon\u002F","title":""}},{"node":{"path":"\u002Fteam\u002Frobin-mueller\u002F","title":""}},{"node":{"path":"\u002Fteam\u002Fmarkus-hunsalz\u002F","title":""}},{"node":{"path":"\u002Fteam\u002Fmarcel-solle\u002F","title":""}},{"node":{"path":"\u002Fteam\u002Falexander-gaengel\u002F","title":""}},{"node":{"path":"\u002Fteam\u002Ffatih-ok\u002F","title":""}},{"node":{"path":"\u002Fteam\u002Fjosua-meier\u002F","title":""}},{"node":{"path":"\u002Fdocs\u002Fvisitor-statistics\u002F","title":"Visitor statistics"}},{"node":{"path":"\u002Fdocs\u002Fuse-cases\u002F","title":"Project type use cases"}},{"node":{"path":"\u002Fdocs\u002Fruntime-configuration\u002F","title":"Runtime configuration"}},{"node":{"path":"\u002Fdocs\u002Fstaging-deployments\u002F","title":"Staging deployments"}},{"node":{"path":"\u002Fdocs\u002Fphp-alpha\u002F","title":"PHP Alpha: Deploy Laravel or Symfony with Deploy Now"}},{"node":{"path":"\u002Fdocs\u002F","title":"Introduction"}},{"node":{"path":"\u002Fdocs\u002Ffrom-cmd-line\u002F","title":"From Command Line"}},{"node":{"path":"\u002Fdocs\u002Fgithub-actions-customization\u002F","title":"Build configuration"}},{"node":{"path":"\u002Fdocs\u002Fmulti-deployments\u002F","title":"Multi deployments"}},{"node":{"path":"\u002Fdocs\u002Ffrom-repo\u002F","title":"From Repository"}},{"node":{"path":"\u002Fdocs\u002Fgit-integration\u002F","title":"GitHub integration"}},{"node":{"path":"\u002Fdocs\u002Ffaq\u002F","title":"Frequently Asked Questions"}},{"node":{"path":"\u002Fdocs\u002Fframework-samples\u002F","title":"From Sample"}},{"node":{"path":"\u002Fdocs\u002Fdomain-tls\u002F","title":"Domains and TLS"}},{"node":{"path":"\u002Fdocs\u002Fdeployment-viewer\u002F","title":"View files and logs"}},{"node":{"path":"\u002Fdocs\u002Fdeployment-configuration\u002F","title":"Deployment configuration"}},{"node":{"path":"\u002Fdocs\u002Fdeploy-static-sites\u002F","title":"Deploy Static Sites via GitHub"}},{"node":{"path":"\u002Fdocs\u002Fdeploy-php-apps\u002F","title":"Deploy PHP Apps via GitHub"}},{"node":{"path":"\u002Fdocs\u002Fdatabase\u002F","title":"Database"}},{"node":{"path":"\u002Fdocs\u002Fcronjobs\u002F","title":"Cron jobs"}},{"node":{"path":"\u002Fdocs\u002Fcreate-sample\u002F","title":"Create a sample"}},{"node":{"path":"\u002Fdocs\u002Fconfiguration-overview\u002F","title":"Overview"}},{"node":{"path":"\u002Fdocs\u002Fapache-configuration-htaccess\u002F","title":"Apache configuration: .htaccess"}},{"node":{"path":"\u002Fblog\u002Fwebinar-de\u002F","title":"Webinar: Das Comeback des statischen Webs"}},{"node":{"path":"\u002Fblog\u002Fworkflow-dispatch\u002F","title":"Update: Deploy Now triggers new builds without empty commits"}},{"node":{"path":"\u002Fblog\u002Fshop-experience-with-vue\u002F","title":"Building API-first eCommerce dashboards with Vue.js and Deploy Now"}},{"node":{"path":"\u002Fblog\u002Fstaging-explained\u002F","title":"Build and stage a Gatsby site with Deploy Now"}},{"node":{"path":"\u002Fblog\u002Freasons-for-staging\u002F","title":"5 reasons to start staging your code right now "}},{"node":{"path":"\u002Fblog\u002Freact-blog\u002F","title":"How to deploy a Blog with React and Deploy Now"}},{"node":{"path":"\u002Fblog\u002Fpull-request-permissions\u002F","title":"Update: Deploy Now GitHub App requires permissions to manage pull requests"}},{"node":{"path":"\u002Fblog\u002Fportfolio-sites-de\u002F","title":"Hosten Sie Ihre eigene Portfolio-Website mit Deploy Now"}},{"node":{"path":"\u002Fblog\u002Fproduct-hunt\u002F","title":"Deploy Now on Product Hunt"}},{"node":{"path":"\u002Fblog\u002Fpodcast-de\u002F","title":"Podcast: Die Geschichte hinter Deploy Now"}},{"node":{"path":"\u002Fblog\u002Fphp-release\u002F","title":"Deploy Now feature realease: LAMP stack support for dynamic websites now available "}},{"node":{"path":"\u002Fblog\u002Fmulti-deployments\u002F","title":"Effortless Deployments: Linking one Repo to Multiple Runtimes"}},{"node":{"path":"\u002Fblog\u002Flaravel-vs-symfony\u002F","title":"Laravel vs. Symfony: Which Framework is right for your project?"}},{"node":{"path":"\u002Fblog\u002Fjamstack-for-agencies-whitepaper-uk-us\u002F","title":"Whitepaper: Build client websites with Jamstack"}},{"node":{"path":"\u002Fblog\u002Fjamstack-for-agencies-whitepaper-de\u002F","title":"Whitepaper: Erstellen Sie Kundenwebsites mit Jamstack"}},{"node":{"path":"\u002Fblog\u002Fgithub-for-agencies\u002F","title":"How to Incorporate GitHub and CI\u002FCD Deployments into Your Web Agency's Workflow "}},{"node":{"path":"\u002Fblog\u002Fhost-github-blog\u002F","title":"How to Choose the Best Host for Your GitHub Blog"}},{"node":{"path":"\u002Fblog\u002Fgithub-actions-lighthouse\u002F","title":"Tutorial: Automated Lighthouse tests with GitHub Actions"}},{"node":{"path":"\u002Fblog\u002Fgit-intro\u002F","title":"An Introduction to Git: The Basics Every Beginning Developer Should Know"}},{"node":{"path":"\u002Fblog\u002Fgithub-actions\u002F","title":"GitHub Actions: An Introduction"}},{"node":{"path":"\u002Fblog\u002Fgithub-actions-version-update\u002F","title":"Upgrade your GitHub actions"}},{"node":{"path":"\u002Fblog\u002Fdarkmode\u002F","title":"Feature Release: Dark Mode"}},{"node":{"path":"\u002Fblog\u002Fdeploy-now-and-github-actions\u002F","title":"How to make Git deployments with IONOS quick and easy"}},{"node":{"path":"\u002Fblog\u002Fdeploy-jekyll-via-github\u002F","title":"Tutorial: Fastest ever Jekyll deployments via GitHub"}},{"node":{"path":"\u002Fblog\u002Fbest-react-ssg\u002F","title":"Gatsby vs. React Static vs. Next.js: What's the best React-based static site generator?"}},{"node":{"path":"\u002Fblog\u002Fapi-guide\u002F","title":"A Beginner Developer's Guide to APIs (with Example Project)"}}]}},"context":{"locale":"en"}};(function(){var s;(s=document.currentScript||document.scripts[document.scripts.length-1]).parentNode.removeChild(s);}());</script><script src="/assets/js/app.1420e6f5.js" defer></script><script src="/assets/js/page--src--templates--markdown-page-vue.f5d097cb.js" defer></script> </body> </html>