Introducing A little Bit Of History Envoyer

Submit is a new product from Taylor Otwell of Laravel. Watch his introductory videos on Laracasts and the interview on Laravel News .Envoyer

When Taylor Otwell first launched Laravel Forge, the work he went into getting and managing multiple cloud VPSs and deploying sites on them was a big reason shared hosting had such a significant foothold. Forge took the procedure of creating a cloud VPS server, managing its environment, and organizing (and auto-Git-hook-deploying) sites on it and made it accessible and affordable. Envoyer

But more complex deployment needs, for example, managing complicated deployment scripts or deployments without downtime, were not met by Forge. Whether you were a Forge user or not, you would need to rely on an implementation system like Capistrano or Chef, or Ansible to benefit from this level of power and flexibility, and the learning curve for these systems can be prohibitively high.

Envoyer Send

Today, Send launches to address those needs. Send is a no-downtime for PHP and Laravel projects, which means it is a tool that connects to your server to run you and uses several tools to ensure that all works for each. For example, the installation is done in the background while the previous site version is still online.

How Does The Deploy Work

If you have ever worked with Capistrano, you are already familiar with this. Please note that this is a technical answer; skip to your first project with Submit if you don’t care how it works.

Implementing a traditional system (e.g., Forge) means only one folder where its content resides. Suppose you have two files, index.php and the application folder. Usually, I would put them in the webroot:

So your deployment system would go into that directory, deploy your latest code (git pull), and then run your deployment script, which probably includes composer installation. That means your site is likely down for a few seconds at least.

A no-downtime deployment system maintains a system of release folders, each of which represents a single commit in your git history. Whenever the deployment system kicks in for a build, it creates a new folder in versions and clones the repository right on that commit into that folder. Then run your full deployment script there. Only then, once you have a fully functional version of the site ready to go, change the * current folder to be a symbolic link to the latest folder in versions *. That is all! The public file at any time is just a symbolic link to one of the various folders available in versions. And Send handles all of that for you. You end up with this:

Note that any folder that needs to persist across versions, such as the storage folder in Laravel applications, must exist at the webroot level and be symbolically linked in each performance. If you use Laravel, this is already manage

Using Send with Forge servers

Laravel Forge provisions PHP 7 servers and allows you to manage them efficiently. Forge can do various things: add subdomains, install SSL certificates, create queue workers, create Cron jobs, etc. Forge can even deploy your code every time you submit it to GitHub, Bitbucket, or GitLab. However, it would help if you had a more robust deployment solution for sites that don’t require downtime during their deployments.

Submit.io allows you to deploy any PHP application without downtime. For my projects, I typically use Forge to provision and manage my servers, then pair those servers with Submit for downtime-free deployments. Since many people have requested me to use Send with Forge Provisioned Servers, I am writing this post as a short tutorial.

Update the web directory

Submit uses two directories to manage its deployments: “current” and “versions.” The “current” directory is a symbolic link pointing to a specific version within the “versions” directory. Each guide in the “releases” directory name according to the UNIX timestamp of its creation. So at Forge, we need to make sure our “web directory” is / current/public instead of just / public. We can update this in the “Meta” tab of the site administration panel

And also Read: Sound Cloud