I'm a one man show, having developed and worked on a new custom CRM customized for our business needs over the past year and half. I've had the pleasure of consulting with a 25+ year experienced developer for help.
Due to budgetary constraints, I no longer have access to his help (for the time being) and have no experience with preparing for a live deployment. (nothing is live right now)
I am currently setting up a production server (excruciatingly) and have been able to get it up and running and am currently migrating data over, getting OPcache set up, etc..
One thing he mentioned to me was to have:
Question 1) Right now, I have the Dev Server and the production server. Based on your experience, is the 'Local Host -> Dev Server' process really necessary for a 1-Man show? Why not simply do my work and test my changes within the dev server? Please provide me with some examples of common practices.
Question 2) When it comes to deploying changes to the production server, what are some common ways based on your experience to do this?
Question 3) Going off of Question 2, what happens when I have an immediate problem I need to apply a 'hot fix' too?
Question 4) Finally, what are some common ways to keep track of versions based on your experience? I was considering using GitHub.
I'm going to assume three environments:
Development --> Test ---> Production
You write code in development, migrate that code into Test (to test your migration process and your new enhancements / bug fixes) and, once statisfied, migrate that code into production.
Question 1) It's always necessary to test your code. The last thing you want to do is push untested code into production -- your customer's business relies on this system and pushing untested code is a great way to ruin that business.
You may be confusing application testing with integration testing. With a "one man show" there may be no integration tests, but you still need to test your code and your deployment process. The test environment is also useful for letting users try your enhancements / bug fixes to ensure they meet their needs.
Question 2) It apears that you're deploying a PHP application. You can read this question to get some ideas, but it's old. In general, this becomes a highly subjective question with many different tools and opinions; StackExchange isn't the place for such debates.
Question 3) You use source code control, allowing you to create several copies of your code tree, one for each "hot fix" or "enhancement" as necessary. When the hot-fix is done, tested, and successfully migrated into production, you can delete the hot fix directory tree.
Question 4) Again, you use source code control. You can run Git locally using GitHub or not, or choose Mercurial, Subversion, or others. The choice of SCM is debatable (and not an appropriate topic for StackExchange), but use of source code control solves the versioning requirement.