deploy wordpress to bitbucket - wordpress

I should need a automatic backup for my wordpress sites.
I thought about bitbucket but is it possible to automate a deploy to my website from wordpress to bitbucket every N minutes/hours?
I have been looking for a while and I only found a plugin that deploy from bitbucket to wordpress, the opposite of my need.
I can't use an extension of plesk because my plesk is v12 and git extension need v17.
Thank you for your time.

While I understand your requirement, I should advise not to do that since any git server is not really meant to be used as a content backup service. Ideally, WP Backups contain uploads, images, videos, PDFs and other binary files. Bitbucket (git) is a source control service.
There are several WP Backup plugins and services that are way better than using GIT as a backup service, I recommend looking for those options.
Now, what you want is still possible if you have access to the server OS (Linux?). You could set a cronjob (a scheduled task) that runs the desired git command, ie: git add . && git commit -m "Backup" && git push.
Hope this helps, good luck!

Related

Do Git operations on web server or on local filesystem?

I'm new to web development. I have a repo at GitHub where I manage my own theme for wordpress. What is the best way for handling this theme? Is it okay when I do the Git operations (clone, pull, push) directly on the webserver or should I sync the theme folder with a local repository and do all the Git operations on my local file system?
It's up to you. There is no a better way. Depends of what are you more confortable using. Doing the Git operations in the webserver, it will execute the same commands that you would run in your local folder. Another option for you, it can be to install a client for Git, like TortoiseGit, that is easy to use.

Bitbucket Pipeline with AWS EB and Wordpress

I'm working on figuring out deploying a Wordpress site from BB Pipelines to AWS EB. It all makes sense except for one thing, I want the repository to only contain the theme and plugin files.
I do not want the full WP directory being deployed each time. Media would be handled via an S3 bucket and the DB would use RDS.
What is the best way to get WP installed but only have the theme and plugins deploy through Pipelines? And when I want to update to the latest version of WP, how would that work?
Or am I going about this wrong?
The simple solution, and best practice in my humble opinion, is to repo the entire WordPress installation, including the WordPress core, and all your custom themes and plugins.
Having the entire installation in one repo solves many problems: you can can tag and release versions, and you can install all software locally with a simple git clone.
Regarding the file system, definitely consider EFS instead of S3. It is much more reliable and easier to mount in a linux-based system. Make sure and define set the file path environment variable, so you can point WordPress to the files. You will want mount this outside of the software file tree.
I have been running this kind of setup for 3 years with no problems. We do releases through the code deploy service daily. Very straightforward and easy to maintain.
To upgrade WordPress just check out the current version from the repo, then apply the upgrades release, do comparisons, test commit and release.

Git Siteground Deployment WordPress Sublime Text

I am a beginning developer looking to get a great workflow setup before I begin my personal website: kevinbmccall.com
The site has WordPress installed and is hosted by SiteGround.
I enjoy the Sublime Text 3 Editor and am looking to emulate the workflow described here: http://joshuaiz.com/words/the-ultimate-workflow/
I was already in the process of learning Git through the terminal and had a GitHub repo setup through a local project folder. So I didn't really follow Joshua exactly and may have been what led me to get stuck but I think I got to the SSH part.
Here is what I have done so far:
Installed Sublime Text 3 with SublimeGit Package
Installed Wordpress on kevinbmccall.com
Deleted all files from local projects/kevinbmccall folder with git
Copied all files from siteground server to local folder
Added and Committed all of these changes to github repo
Tried Adding PHP Script to siteground server and setting up webhook
Issue: "I want the server to sync with my github repo so I can easily deploy to my live site every time I push to github"
Here is what I can do now:
I can make local changes to my project folder, add them and commit them no problem.
This correctly updates my github repo fine but does not seem to deploy yet.
If I make a change to my local folder, add, commit and check the status it will tell me of an origin/master that is behind in commits and recommends a push
I can push and even see some sort of request triggered because of that attempt at a PHP script I think but I was hoping to see the test txt files show up on the server and they did not.
My Thoughts:
I think my issue has to do with writing to the server and maybe the SSH setup through Siteground. I generated a key but never really used it and all of the online material from siteground points to their SG-Git tool in the c-panel. This requires a more expensive monthly plan and I am just a beginning developer trying to get a personal site up. I am sure the deployment can be accomplished without this upgrade.
Thank you to whomever replies. My goal is to learn as much as possible so I am even more interested in the explanation than the solution.
In my opinion, maybe you need GitHub Webhooks.
This is a demo
// Init vars
$LOCAL_ROOT = "/var/www/my_new_site";
$LOCAL_REPO_NAME = "public_html";
$LOCAL_REPO = "{$LOCAL_ROOT}/{$LOCAL_REPO_NAME}";
$REMOTE_REPO = "git#github.com:jonathanstark/my_new_site.git";
$DESIRED_BRANCH = "dev";
// Delete local repo if it exists
if (file_exists($LOCAL_REPO)) {
shell_exec("rm -rf {$LOCAL_REPO}");
}
// Clone fresh repo from github using desired local repo name and checkout the desired branch
echo shell_exec("cd {$LOCAL_ROOT} && git clone {$REMOTE_REPO} {$LOCAL_REPO_NAME} && cd {$LOCAL_REPO} && git checkout {$BRANCH}");
die("done " . mktime());

How can I push a repository to my computer and my online server?

I have figured out how to create a repository on github. Now I am trying to push the repository to both my macbook pro and my server, which is hosted through http://namecheap.com, and be able to understand how to keep things simple. I am using wordpress on my server and I have a template theme. I want to edit my files on my mac and then push them to the website, keeping everything easy.
There is plenty of information out there on how to get started with github, so I will just focus on clearing up a misconception:
Now I am trying to push the repository to both my macbook pro and my server
You do not push from github to a server. You need to clone your github repo to your development (macbook) and production (server) environments.
git clone https://github.com/USERNAME/REPOSITORY.git
https://help.github.com/articles/fetching-a-remote/
Alternatively, you can push existing code to an empty repository by initializing locally, setting your remote and then pushing
git init
git add -A
git commit -m "Initial commit"
git remote add origin https://github.com/USERNAME/REPOSITORY.git
git push origin master
Once you have your repo setup, your typical workflow will look something like this:
Make changes in your development environment (macbook).
push those changes to github.
pull those changes from github in your production or staging environment (server).
One of the main things you need to use git this way is access to a terminal on the hosting serve, to push your files directly through git that should be installed as well.
Alternatively you can upload file using any available protocol such as (s)FTP or SSH direct to your server. In this case you'll be using git to version and manager your templates but not to upload or release them.
I've seen that cheapnames.com provides Softaculous as a mechanism to manage their servers. This software also provides synch and install scripts.

How to develop using GIT on database driven website project?

I like to use a simple Git workflow for static web sites but I build Joomla and Wordpress sites a semi-regular basis too. However I am at a loss as to how to use Git with with database driven site development.
For a static site I would 'Push' to dev.websitename.com, then push to www.websitename.com once the dev site checks out. How would I mimic that process with database driven site like wordpress or joomla.
Thanks in advance for you insight!
You can definitely use Git with your website code, such as changes to your WordPress theme/plugin, exactly as you would if you are developing a static website.
However, you wouldn't use it for your database. Git provides version control for code, while WordPress and Joomla already manage content stored in the database. Plus, Git wouldn't understand a database, so it wouldn't have any advantage over a periodic backup, which you should already be doing. Take a look at running a dev copy of your site for how to download your database directly from your server.
By the way, if you use Git with WordPress/Joomla, you should add e.g. cache, logs, tmp to .gitignore. There are also lots of tutorials out there--try searching e.g. http://google.com/search?q=wordpress+git.
In addition Chris, you may want to embark on your Git workflow without the handy script approach (at least initially). The script approach and using Git hooks can sure seem sexy (well, because they are) and handy too, but initially why not go with a more manual cmd line approach, which will also help you familiarize yourself with Git.
Once you've got your repo setup (GitHub, Bitbucket, somewhere else) and you've pushed your latest to it and are ready to deploy to production or staging, just login to your host and from wherever you've initialized the git repo (site root, example: /site) just do a:
git pull origin master
This will fetch and merge your code. Good idea to test this on a dev/staging environment and if the merge goes well then do it in production.

Resources