Ghost(node.js) app - 503 err after git push in OpenShift hosting - node.js

I created ghost blog in OpenShift host. Everything worked fine.
I wanted to make some changes in css file(change the margin of the page title), so i did git pull the resources, made changes in css file locally, and git push back with command git push -f(force) openshift master, because without -f, I couldn't do this push.
After this "git push" command, my app got broke, and now, the http outputs 503 error...
I tried to restart my app, but it doesn't help. Don't know why it crashed.

Not sure what actually happened with your new change.Check the app logs.
First ssh to your app
ssh 1234567890abcdef1234567890abcdef#your-app-domain.rhcloud.com
and then cd to logs directory
cd app-root/logs
tail the contents of nodejs.log file
This may not actually resolve your issue but logs can help you.

Related

Why is my app still displaying old code after generating new app?

I deployed my app like a month ago, and everything was working OK.
In the meantime my app changed a lot so I decided to deploy new version.
I used command git push heroku deployment:master (git branch deployment is containing some files just for deployment).
When I opened my app via heroku open I noticed that my app is still using old home page. After Googling around I've tried:
heroku reset
Creating new branch and pushing new code with few test lines added
Try to clear cache, open pages in different browsers
Checking the files with heroku run bash (all files are as they should be)
I went even further and tried:
heroku apps:destroy
heroku create (created new project, and used git push heroku deployment:master again)
Event after accessing the new URL, there is still old code, old .html pages and everything. I'm using Node.js v8.11.4
Help me out please! Thanks in addition.
EDIT: Was trying also to git clone Heroku Git URL, to my desktop. All files are as expected, I have no idea, where is heroku getting old files...
After 2 days of fooling around and trying a lot of different things there were 2 things that I need to do.
Don't forget to run ng build before deploying new version of app, or else old public files will be deployed
Clear the build cache for an app using the following commands:
heroku plugins:install heroku-repo
heroku repo:purge_cache -a appname
git commit --allow-empty -m "Purge cache"
git push heroku master
Where appname is replaced by the name of the app you want to clear the cache for.
SOURCE: How to clear build cache

heroku git dependency propagation

In my heroku app repo, we have git dependency
"allcountjs" : "git+https://gitlab.com/ourawesome/allcountjs.git#Print
I have made some changes to this repo (allcountjs ) and i want them reflected to my heroku app.
I did a git pull / git push on heroku and it seemed to have successfully deployed the app. Alas, I don't see the changes when i access the app on web.
Any idea why?
How can I force a node restart on a heroku app?
I hope it s clear. Thanks in advance.
It is more like NPM issue than Heroku. Try putting the commit id instead of branch in the url of dependency, e.g.:
"dependency" : "git+https://gitlab.com/ourawesome/allcountjs.git#e1111a0a4cf50ae6ef1dde4c22b87d833e26befa"
So that NPM knows that it was updated

Node.js app not changing

I have a node app running on my VS using pm2, deployed via git.
All works fine, but when I make changes in my local version and then push it to the server the files are changed and updated to the new version, but the app still looks like the same of the initial push I made when I deployed it for the first time. Pm2 is set to watch for changes and in my local version all works fine, while on Vs not.
How is that possible?
UPDATE
Apparently it's just the .js file that isn't changed, html are fine.
Apperently a rebase fixeded the problem:
git pull --rebase origin master
git push -u origin master

Git push to cPanel account - Push did not update modified file

SOLUTION BELOW - How to use git to push to cpanel server
I finally got somewhere with setting up Git between my localhost (WAMP setup on Windows 8.1) and my Linux server (CentOS 6.6 x64 with cPanel 11.46.2).
Locally I created a bare clone: git clone --bare my_project my_project.git
NOTE: my_project is an example name, not the real name, and from this doc here: http://git-scm.com/book/en/v2/Git-on-the-Server-Getting-Git-on-a-Server
I copied the my_project.git folder to my server's root directory /home/myuser/public_html/
so now in the root directory I have:
cgi-bin
my_project.git
This is one area I am unsure of. Do I have to do an init (using putty) on my server in the public_html directory? I read something about a bare init? I just want to push (from my PC) the website I already have under Git control, to the server. When I make a change to 1 file, push that change to the server so it's updated live with a push. The website is DONE and ready to be live. I have already manually moved back and forth for live testing on the server. My last step is to get the Git setup correctly, so any further changes I can just push them to the server without the need of FTP.
I added a remote origin: git remote add origin ssh://myuser#thedomain.com/home/myuser/public_html/my_project.git
I tried to push to it, and got "Permission denied (publickey)". I already had an id_rsa and id_rsa.pub key locally on my PC, so I copied them and renamed them to id_rsa.myname id_rsa.myname.pub (where myname is my first name). I then copied them to the .ssh folder through FTP (FTP as cpanel user, and it's the directory your dumped into, above public_html), same as /home/myuser/.ssh/ directory.
Once they where there, I added them to 'authorized_keys' using Putty logged in as the cpanel user (my private ppk) by doing:
cd .ssh
cat id_rsa.myname >> ~/.ssh/authorized_keys
cat id_rsa.myname.pub >> ~/.ssh/authorized_keys
After doing that, a push appeared to work. Because I was having a key/auth issue, I used Git Gui version, which was setup and worked fine locally. I added the origins through Git Bash though. When I did "Remote > Push" in the Gui version, I got:
Pushing to ssh://theregistrybank#theregistrybank.com/home/theregistrybank/public_html/yiire gistrybank.git
stdin: is not a tty
To ssh://myuser#thedomain.com/home/myuser/public_html/my_project.git
44ae034..0388a05 master -> master
updating local tracking ref 'refs/remotes/origin/master'
Before doing the push, the only file modified (diff from the bare clone I transferred to the server) was my .gitignore file. I added 2 more exclusions to it, and committed it locally. So I was trying to push the change in that file. After I did the push, it said "success" in green and appeared to work. However, when I check the file in FileZilla, the .gitignore file is not the updated one that I just committed locally.
I think I am close, but missed a step somewhere. I tried to be as descriptive as possible.
And putting the source on GitHub is not an option as the client does not want the source public, and does not want to pay for the private repos. I should be able to push from my local setup to the cPanel server so I don't have to transfer thousands of files every time. I actually transfer a zip file, and unzip on the server lol.
Server Info
cPanel 11.46.2 build 0
CentOS 6.6 x86_64 kvm build01
Yes, Git is setup on the server, and working, and git --version reports:git version 1.7.1
Git on my PC: git version 1.9.4.msysgit.2
Thank you in advance.
SOLUTION
Thanks to #VonC I was able to get this to work :)
You need somewhere for your git repo to sit. I created a 'git-repos' folder in '/home/cpaneluser/git-repos' to house my repos for this cpanel user.
First step is to create a bare repo: http://git-scm.com/book/en/v2/Git-on-the-Server-Getting-Git-on-a-Server - I only followed the first step, basically created the bare repo 'my-project.git'
Before putting it on your server, rename 'my-project.git/hooks/post-receive.sample' to just 'post-receive' so it will be ran. Edit it with your editor, and add the line that #VonC gave us in his chosen answer:
#!/bin/sh
umask 0022
GIT_WORK_TREE=/home/cpaneluser/public_html GIT_DIR=/home/cpaneluser/git-repos/my-project.git git checkout -f
Note: I am using cpanel, so your path's may be different, and your umask could be different. 0022 is for 0644 file permissions. Without the umask, I was getting 500 Internal Server Errors, because the files were created with 0664 permissions instead.
Using FTP or whatever you like, copy the 'my-project.git' bare repo to your server to '/home/cpaneluser/git-repos'. Then go into 'my-project.git/hooks' and change the permissions of post-receive to have execute permissions. For me, 0744 worked fine. This was the magic sauce :)
Locally, add your remote (must be in your git project): git remote set-url origin ssh://cpaneluser#yourdomain.com/home/cpaneluser/git-repos/my-project.git
Now if you try to push now, it won't put the files in 'public_html' because the git tree (terminology?) matches and is up to date. If they are up to date, it seems to skip over executing your 'post-receive' hook. That means your bash script never ran, and it never checked out the files to your working tree.
We need to manually run the 'post-receive' bash script to create all the files of our project in the 'public_html' directory.
cd to '/home/cpaneluser/git-repos/my-project.git/hooks'
Run: ./post-receive
Boom, all your files are in 'public_html'. Now you can work locally, then push to your cpanel server as expected :)
I had a similar problem with my cPanel account, git was set up but for some reason I couldn't push to it. After a lot of head-banging I realized that the root of the problem is like you pointed out that although git is set up, the repo is empty so there's nothing for it to track.
This happens when you set up an empty repo in cPanel and then try pushing a local repo that you've already created, as opposed to cloning it first from github or your local repo (which is what happened to me because for some reason I couldn't access my github from the cPanel git interface even though I had set up a SSH key)
The simple solution that I found is to manually clone the repo using the terminal in your cPanel account
On your cPanel dashboard, under the "advanced" section, you'll find the terminal. You'll get a warning saying that you could mess up your server if you don't know what you're doing, click ok and you're in.
Now you just have to clone your repo the same way you would if you're cloning onto a local machine.
Navigate to where git was set up in your cPanel
cd repositories/<nameOfYourRepo>
And run the clone command
git clone <URLofYourGithubReop>
You'll be asked for your github username and password if it's a private repository
And that's it, you're good to go
What you have copied (my_project.git) is a bare repo, meaning one without a working tree (the actual checked out files).
Read for instance "Git workflow - Setting up a build process".
That means pushing to if won't change anything in /home/myuser/public_html/
The missing piece is a post-receive hook (in /home/myuser/public_html/my_project.git/hooks/post-receive, make sure it is executable: chmod +x), in order to checkout the repo in /home/myuser/public_html/.
#!/bin/sh
GIT_WORK_TREE=/home/myuser/public_html GIT_DIR=/home/myuser/public_html/my_project.git git checkout -f

Custom domain on Openshift Nodejs App doesnt show up. [+process.env.OPENSHIFT_APP_DNS]

I run a ghost blog on openshift, i created with success custom domains for my site and everything works nice, but the subscribe link as some other links in my menu points to my openshift url ghost-nodejs.rhcloud.com than to my custom domain my-blog.com.
After i cloned the git repo on my machine, i opened the config.js and changed the url: 'http://my-ghost-blog.com', to my custom domain url: 'http://my-blog.com', but nothing changes. I also later changed production: {
'url: 'http://'+process.env.OPENSHIFT_APP_DNS, to my custom domain but that change made my blog not work at all. ( I completely remove the +process.env.OPENSHIFT_APP_DNS part)
Can someone guide me on this?
PS: The git commands i use are git clone ssh//***** i alter some stuff locally and then i run
git add -A then git commit -a -m 'alter my app' and finally git push
Make sure you run the following to set your runtime to production
`rhc set-env NODE_ENV=production --app yourappname'
This will make sure that the changes you made under the production section of your config.js are used.

Resources