have you looked at the obvious choice, forge ?
Recommendations for Server Management Please
I have recently learned the hard way how complex and laborious it is to deploy multiple servers yourself ensuring that they are all the same as your dev environment. With all the moving parts, errors in infrastructure abound, and debugging those errors is a nightmare.
So - in a perfect world I would have a one click deployment where I have stipulated the version of all the parts. I tried a one click solutions from DigitalOcean where I am hosted, and you end up with something that is 2 years out of date, and nothing works the way you want it.
I have also looked at Forge, Ploi, Cloudways and they are all very nice, but they are not a complete solution. You still have to manually add Laravel, any dependencies, any added tools like mix etc and of course, your own app. Also, you can not stipulate the versions you want. Here again with DigitalOcean you end up with Composer 1.
I might be asking for the moon but I thought I would ask the LC community.
Thanks !
@Snapey Yup, Like I said in my question, I looked at Forge. Like the others it does not cover all the moving parts:
Linux, Apache, PHP, MySQL, Composer, Node, Npm, UFW, Laravel, Laravel dependencies, Application, JQuery, Bootstrap, Vue / LiveWire / React / Svelte
@Snapey I just did 2 servers with 2 more dev servers to go. it gives me a nervous break down
@vincej if you have backups turned on, you can restore a backup to a new droplet and have an identical server apart from the server name and IP
why do you have dev servers in the cloud?
@Snapey No - the 2 dev servers are my office server (Linux) , and my laptop (Windows). I do dev on both and as luck would have it they configured differently like PHP 8 on one and 7.4 on the other - Ugh.
Good idea about creating a new server from an exiting droplet. Had not thought of that. Of course, I would have to rip out all the application and do a new Laravel deployment then add the application. But that route would at least save me 75% of the effort. Thanks.
I'm no docker expert, as learning docker is still in my learning-pipeline. But it feels like docker fixes the problem you have specifically?
@undeportedmexican It could very well be. I am concerned that the learning curve could be steep. I don't know. Thanks !
@vincej if you need it 100% the same as dev, then docker is the way to go
I use ploi and am a very happy customer. First server is free, so you can test it out. It handles both server management, deployment and backup
They of course work with digital ocean, but I use hetzner instead
@Sinnbeck Please elaborate. Everyone delivers an OS with a webserver, PHP and MySQL. What I am looking for is a one click solution of the whole required infrastructure including most of the pieces I mention above. OK - I can install Laravel and my application. Question: How close does Ploi get you ?
@vincej ploi is like forge. It does not give you any server. You need digital ocean or similar for that. It just creates a server with database etc in a few clicks
@Sinnbeck Understood. I have been using DigitalOcean, and Installing a DB and webserver is not really an overhead. Where things get crazy is when you start deploying all the rest of the infrastructure across several machines and they all need to be the same ie:
Apache, PHP Composer, Node, Npm, UFW, Laravel, Laravel dependencies, My Application, JQuery, Bootstrap, Vue / LiveWire / React / Svelte etc etc
@vincej apache is a webserver? Ploi uses nginx btw.
But the rest. Do you mean that the same app needs to be deployed on several servers? Or do you want to install laravel etc directly on the server instead of git?
@Sinnbeck The application could be different or the same. Deploying my applications is not my challenge. I just upload them with Filezilla. My challenge comes when I discover that I discover I have accidently uploaded different versions of PHP, or Node or NPM or Apache, or MySql or anything. I then go to deploy the application which works on my dev system, (of which I have a linux and a windows system) and then it does not work on the remote server. Now I have a headache figuring out where the failure is. I ideally want one single definition of the infrastructure which I can deploy quickly, and not by hand, manually configuring every piece.
@vincej I suggest you learn git. Makes you more in control of what you deploy. And after pushing to github you just click the deploy button in the ploi interface
Regarding server setup. With ploi you select server type and db version on install. You can switch php versions in just a few clicks in the interface. There are also buttons to run all your artisan commands. It will inform you if npm is outdated and offer to update it for you
Have a look at how to create a server https://youtu.be/bL4kAlk5i80
You could create a free account and try it out https://ploi.io/pricing
@Sinnbeck I am going to try the one free Ploi server on your recommendation, for sure. I have nothing to loose.
I have looked at Git, however, Because I am a solo guy, I never saw real benefit to Git, especially when PHPStorm gives you version control control out of the box. However, please elaborate, will git allow me to to create a complete definition of my entire infrastructure stack? I had always believed it was limited to deploying an application and that was it. Correct? Thanks !!
@vincej yeah it just tracks your files. I am a solo dev as well but all my code is in git. It makes it really simple to know exactly what I am working on. Let's say you are building a new feature. Now the client asks you to fix a bug in the same file? With git, the new feature would be in a different branch, making it easy to just go back to the main branch and fix the problem. You can also go back to how your code looked 3 weeks ago, if you need to check if the error was there as well
Also it only "uploads" the actual changed files.
Oh and your code is always backed up on github
@Sinnbeck You have 100% perfect English. I am impressed. Usually I can tell when some uses English as a second language, not by spelling mistakes, but by the word order they use. Like putting the verb at the end. I speak Dutch and German. They do that in those languages too, as I am sure you know. My great grand father came from Denmark, just near the German border / Flensburg. But I lived most of my life in UK.
@vincej Thanks! I appreciate that. I do my best to try and speak a proper English. Luckily in Scandinavia, we often learn English early, meaning it often ends up as almost a second-first language. Also I used to play loads of role-playing games when I was younger, and those were all in English :)
Ich spreche ein bisschen Deutsch auch
@Sinnbeck Wunderbar ! Prima!
Is Ploi a Dutch company? Looking at their very aggressive pricing vs Cloudways, I do not see how they can make any money when they are deploying on top of Digital Ocean / Linode etc.
@vincej I am not quite sure. I am not affiliated with them in any way. I just recommend them as I like their product, and it makes my daily job, so much easier. I know it was developed by this guy, but where he lives, I don't know: https://dennissmink.com/
Edit: It seems you are right. According to twitter he lives in Gelderland
In regards to git I found this small Fireship video that explains what it can do to you in under 2 minutes :) https://www.youtube.com/watch?v=hwP7WQkmECE
@Sinnbeck I looked at the PLoi terms and conditions are those terms will be adjudicated by the Dutch courts, so to me that is a clear sign they come from Holland. Cloudways is double the price. Anyway, Midnight in Calgary. Time to call it a day. tschuss!
@Sinnbeck Back again. Last question: what IDE do you use? I use PHPStorm.
@vincej same here :) it has awesome handling for merge conflicts with git
And Ubuntu with docker is my work environment
@Sinnbeck Wow! I use Linux Mint, which is Ubuntu with a different UI. You use Docker - amazing. That's something else I should think about. I presume you use it to replicate the customer environments?
@vincej I actually run mint on my secondary pc, and I'm planning on switching my main to mint as well.
Docker comes from the fact that we had different php versions depending on which project. From 5.6 to 7.4. And one project that had alot of weird dependencies. Now it all runs 7.4, but I can easily run the same code in both php 7.4 and 8.0 when running tests (so 8.0 is soon)
@vincej Hey Vince! 👋
Ploi is indeed a Dutch company 🇳🇱
Also, the reason our pricing (and this is the same with other server management tools except for Cloudways) is lower is that we do not 'provide' the server. With Cloudways you 'get' a server, and with us, you have to deliver your own server.
Let me know if you have any other questions!✅
@Cannonball Groetjes uit Canada!
Nice to meet you, virtually. So, please help me understand how I "provide my own server". I don't get that part.
@vincej It uses a server provider like DO
As I said earlier
ploi is like forge. It does not give you any server. You need digital ocean or similar for that. It just creates a server with database etc in a few clicks
I personally use Hetzner for webservers and DigitalOcean for backup (spaces). Both are handled by Ploi
@DennisS Hi! Question, does ploi require the use of git? As a solo dev i use PHPStorm version control and I do not be use git. Thanks
@vincej it’s more than likely you are using git as version control in php storm if you are using the built in VCS.
Being a solo dev is not a reason not to use git. One of the significant advantages of git is that you will be storing your code away from your computer. This gives you added protection in case of hardware failure or theft, Properly using a VCS allows you to work on code atomically, to keep track of your changes and to be able to develop multiple features at a time. As well as being able to easily deploy code, you are also able to share it should you ever work with anyone else. You’ll pick up the basics of git in a few hours and I’d recommend you do that as that is the number #1 improvement you can have to ease your deployment issues
@automica Thanks for that. I have taken your advice and that of others and am in the process of learning it using an excellent tutorial from "NetNinja". Everything is working excellently inside Storm. One of the mysteries I am finding so far is that I had expected the changes I make using the PHPStorm Git module to be reflected in Github, but they are not (yet?). Perhaps I need to get through a few more lessons! Cheers
@vincej they will only be reflected when you actually push them there
You an check if it is linked to github with
git remote -v
And push it using
git push
@vincej also I would hold off on pushing until you know your code is good, you don't want to push a mistake.
@Sinnbeck its worth the money just for that.
@automica phpstorm?
Ok so I am with DO already so ploi simply front ends the server I have with the deployable components. Got it. Nice idea.
@vincej You can see a quick example of setting up a server here: https://youtu.be/bL4kAlk5i80
@Sinnbeck thanks. I’ll look at it tomorrow morning.’
@vincej The video is 39 seconds long :)
@Sinnbeck there is a laravel specific video https://youtu.be/v35inuUVv50
@Snapey @sinnbeck Ok watched the long one. Great. But it looks like Ploi is dependant upon Git. As I am a solo PhpStorm user, I don't use Git, but perhaps I should learn, as one of my problems is I have two different dev platforms and keeping them in sych is a problem. I use my Big Ryzen 7 with 6 feet of screens & Linux during the day in my office, and my laptop at night. Why can't development be simple ? :o)
@vincej If you use git and a remote repository such as bitbucket or github then your sync worries are massively reduced since you push and pull from the remote repository and can always sync your code up irrespective of where you write it. The main thing to remember is to commit your code and push it to the repository before going home, and vice versa
@Snapey Do you use Bitbucket or Git? as a PhpStorm user it has git acess built in. What IDE do you use?
@vincej Use either with phpstorm. Don't confuse Git with Github . Github is a cloud implementation of Git.
I use VScode, but actually I manage my repos and do commits with Github desktop application (for Bitbucket or Github - I use both)
@Snapey VSCode I think has some built in features to enable access to Git. so why do you use the external web based approach?. I ask as the built in Storm features are very comprehensive and off putting.
@vincej I just prefer the way github desktop presents the changes for review before commit
it's not 'external web based' it's an application that I run on windows or mac and tell it where my local repositories are.
@Snapey Ok, I downloaded the windows application. Don't know if it runs on Linux yet. I ask because some people prefer Bitbucket saying it is easier to use. I guess it is each to their own. When I learn it . I will only learn the basics. It is quite involved. You're up late !!
So if you factor in the cost of the DO sever it comes out at around the same cost as cloudways for a single server. The benefit of ploi is you can deploy multiple servers for one fee
@vincej I use bitbucket and github. I promise you, you will want to get used of the command line only with git. It is easy once you get used of the common commands you need.
@jlrdw my principal dev machine is linux, so I have to see which of these two runs of lInux. PHPStorm has built in features to use and view Git, but it looks seriously complicated. I can't really afford time wise to spending ages learning this. This was one of the bug reasons for not bothering until now. Time is my most valuable asset.
@vincej I was forced to learn it when I got my current job, and I am grateful I did. You can do alot by a few command, and phpstorm can help you a big part of the way. I mostly only use the command line to push/pull and trigger merge/rebase
@Sinnbeck I started learning this evening with PHPStorm with a great tutorial, by a British guy under the name of NetNinja. A lot of the Git tutorials are really bad. This guy breaks it down to it's simplest parts. If I get the basics it will solve my problem of keeping my 2 dev systems in synch. I had another look at Poli. I didn't understand any of it. Probably because I don't yet understand Git.
@vincej glad to hear. It can be quite daunting at first. Hope you get started properly with it 👍
@vincej This course by Christoph Rumpel goes through a lot of goodies in phpstorm. It costs a bit but imho it's worth it.
@Sinnbeck Ok, so I think I have my head wrapped around Git on the command line. However, I have also been looking at PHPStorm's Git managment system. You use Storm as well. Somehow, I have managed to wreck my whole repo twice now using this. The docs on it are not very clear in my opinion. Do you know of any clear videos? I have found one from 2016. Also do you use this Storm feature ?? Or do you just use the command line? A bit of a shame, when Storm has this feature, no? Thanks.
@Sinnbeck Sorry to harass you , but you are the only other PhpStorm user I know on LC. So, question: do you principally use Storm for Git or do you use the command line principally? ie should I really invest time in learning the Storm implimentation? Thanks!
@vincej I use phpstorm quite alot for git. It's merge features are brilliant! I suggest turning on version control modal. I like it a lot better than the new "inline" git editor.
I use phpstorm for adding files to git, rolling back files, merge conflicts and committing
I use the cli for push, pull, editing remotes and starting merges/rebases
git push
git pull
git merge my-new-feature
git rebase main
One awesome thing to note with phpstorm, is how you solve merges. There are buttons for auto solve what it can. And the ones it can't, you have arrows you can click to tell it which change to keep/remove
Quick video showing the manual merge stuff https://m.youtube.com/watch?v=QXDEi2ZMqBU
@Sinnbeck Many thanks for that. One more question, do you use Git only for development or will you apply your master branch for production? This all makes me somewhat nervous! :o)
At this point in time, I have been using filezilla to upload my production files.
@vincej yeah 100%. Everything is in git and I use main (master) on production. I find it 100% more safe than ftp
@vincej Feel free to send me a pm on Twitter if you free unsure of anything @rsinnbeck
Docker is certainly what you are looking for. I thought it was complicated, it isn't. About 10 copy and paste linux command lines, and docker is up and running. I will post when I have a chance to reach my computer, I am on mobile now.
I am forced to learn it when installing laravel 8 is too hard for me.
While there is many dockerfile available, the problem is to find a production ready one.
Please or to participate in this conversation.