Help with moving forwards

Happy Thanksgiving my American friends…!

I know there have been quite a few discussions on this board about workflow and improving best practices. I started a thread a few months back that got quite interesting. However I’ve not been able to move forwards since then- mainly due to being busy with other projects.

I think it’s great that there is a “looking for work” thread and there are plans afoot to have a thread to post jobs. My situation is a little different in that I think I’ll need a bit of support (or training or hand holding) if I am to move forwards. Most people here are asking/posting questions, reading the helpful blog posts or screencasts. That’s great and I’ve learnt a lot, but possibly because of the way my brain works, I was wondering if there was a possibility of someone helping me on a more one to one level. Of course I’d be willing to pay. There is no rush on this, it would be something I’d probably want to look at in the new year.

This is where I am currently at:

  1. I register a domain for a client and install WP on the server for that domain
  2. Set up subdomains: dev.website.com, staging,website.com and website.com
  3. Put holding page on main site- website.com
  4. Create website in Dreamweaver on my laptop (Windows)
  5. I download Roots from GitHub, unzip it and start work on customising
  6. I upload changes to dev.website.com via FTP (and upload my own custom WP plugins)
  7. Test website on remote server using my browser
  8. Rinse and repeat
  9. Migrate dev.website.com to website.com and clone to staging.website.com

This is where I want to be…

  1. Continue to use my Windows laptop (I don’t have anything against Macs, but I am happy with Windows- sorry Mac Fans!)
  2. Learn to use Vagrant- be able to create a Vagrant machine- Vagrant for Windows to use CENTOS, PHP 5.4 (suPHP, MYSQL x, Apache modules) - do I use PHPuppet?
  3. Change host file on my Windows machine to view dev websites, for example website.dev
  4. Be able to SSH into the machine
  5. Have the possibility of a client viewing the dev website which is running on my machine on their computer
  6. Use Grunt (had some success with this, so just some help)
  7. Be able to use Sublime Text to edit code running on the virtual machine (presumably this uses shared folders)
  8. Use Git to version files, backup/sync code with BitBucket
  9. Have the option to backup/sync code with GitHub if the project is open source
  10. Be able to use Composer to manage dependancies
  11. Understand WP Stack
  12. Be able to push changes from local dev site with DB changes to dev, staging or live sites on my virtual server. Is this Capistrano? Or something similar…
  13. Know how I can roll back changes if needed

OK, that’s where I’d like to be medium/long term, but even if I was able to get Virtualbox, a local server, git and a way to push changes to my websites I’d be happy.

The answer of the above could very much be RTFM or just call me lazy. It’s not that, it’s just I’ve spent days and days trying to get my head round the above and I just someone or people I can bounce ideas off. Once I understand something I’m fine and I very much intend to do a very detailed blog on how I got from my current way of working to where I want to be.

Thanks for listening!

Hopefully you find someone to help you out.

I like your “roadmap” but definitely just take it a step at a time. I also think it’s important to remember why you use certain tools instead of following some hype. But for what it’s worth, I think your list is pretty good and learning those things would definitely improve your development practices.

For example, instead of just learning Composer itself, try to better understand dependencies and how to manage them. Then Composer just becomes a tool to accomplish that.

Or take Vagrant: it’s more about understanding your development/production environments and trying to achieve dev/prod parity. This usually leads to virtual machines which leads to a tool that makes it easier to manage them, and hence, Vagrant!

Those are just a few examples but it’s always better to understand the underlying concepts rather than just knowing how to use some program and its commands (not that you were only going to do that).

Anyway, good luck :smile:

Thanks, Scott. I think you’re right in saying taking it “one step at a time”, it’s just I see where I want to be and where I currently am and find this frustrating.

The first step is to develop locally and start using Git. Apparently, as you say, I’m not allowed to charge money for my services until I do that! :wink:

Have you or anyone else got any advice as to where I could go to get some more one-to-one help with this?

I’ve had another thing about what the priorities are for me. You’ve said that it’s important to understand my development/production environments which will lead to virtual machines. I understand what my environments are but my experience with setting up a local virtual machine wasn’t great- a whole day setting up something rather inadequate and my brain felt like it was going to explode! That’s why I thought Vagrant actually might make my life easier? Having said that I am not sure why it’s better to have a separate Vagrant file for every site I work on- especially since most of the sites I build will be going on the same web server.

I’ll definitely leave Composer for the next stage and get my head round dependencies.

Anyway, here is my revised version…

Phase 1

  1. Build Virtual Machine for the above with ability to create new sites and shared folders (or is it easier to get started with Vagrant?)
  2. Use PHPMYADMIN
  3. To SSH into virtual machine
  4. Change Windows Host file to view sites on Windows Machine (is it possible to view externally?)
  5. Set up Git on Windows and learn basic skills (is there a GUI I could use)?
  6. Backup sync code to BitBucket (and option to use GitHub for open source projects)
  7. Use Grunt (already had some success with this)
  8. Push changes to dev, staging or live sites (including database changes if possible) (will this be using FTP or some other tool?)

Phase 2:

  1. Set up Vagrant on my Windows Machine and learn how to create/update Vagrant file. (maybe using puphpet?)
  2. Handling dependencies- Learn to use Composer
  3. Learn about WordPress stacks

I’d probably start with Git myself. Nothing is more important than version control and it really isn’t hard. Two good Windows clients: http://sourcetreeapp.com/ and http://windows.github.com/

Yes Vagrant will (probably) make creating/using VMs easier. I don’t have a good answer for you about multiple Vagrantfiles. You could just create a folder specifically for a Vagrant “project” so it’s not site specific.

I’ve used https://github.com/10up/varying-vagrant-vagrants a few times. It’s a little heavy since it sets up 3 Wordpress installations, but it’s cool to see what’s going on in dev and trunk.

The benefit of setting that up per project is your local link is the same on projects, http://local.wordpress.dev. I guess it depends on whether you see that as a benefit or not.

Thanks, Scott- much appreciated. I’ve found someone local who knows a bit about Vagrant, so that’s a good start. I did try and install Vagrant the other day but came across an error (permission problems with shared folders). It looks like Vagrant can be a bit error prone sometimes. I also need to get a Vagrant file set up to match my server environment.

I love the GitHub GUI for Windows, but I decided a while back that it wasn’t going to fit my way of working because GitHub doesn’t give you private repos unless you pay. I found SourceTreeApp more difficult to use. However I just found out the other day that you can use the GitHub app with BitBucket. Really good news. Now there is no going back! :smile:

I did look at VVV. I didn’t realise it set up 3 WP installations. That’s probably best practice but it might be overkill for someone just wanting to start working with Vagrant. The biggest killer for me is that VVV uses nginx and I use Apache.