Skip to content

Instantly share code, notes, and snippets.

@vimishor
Last active December 31, 2015 05:59
Show Gist options
  • Star 12 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vimishor/7944395 to your computer and use it in GitHub Desktop.
Save vimishor/7944395 to your computer and use it in GitHub Desktop.
Custom 503 page while deploy on openshift | License: MIT
<!DOCTYPE html>
<html>
<head>
<title>Deploy in progress. Please try again in few minutes</title>
<style type="text/css" />
body {color: #666; text-align: center; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; sans-serif; margin:0; width: 800px; margin: auto; font-size: 14px; }
h1 { font-size: 56px; line-height: 100px; font-weight: normal; color: #456; }
h2 { font-size: 24px; color: #666; line-height: 1.5em; }
h3 { color: #456; font-size: 20px; font-weight: normal; line-height: 28px; }
hr { margin: 18px 0; border: 0; border-top: 1px solid #EEE; border-bottom: 1px solid white; }
</style>
</head>
<body>
<h1><center><img alt="" src="data:image/png;base64,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" /></center>Deploy in progress</h1>
<h3>Please try again in few minutes.</h3>
</body>
</html>

The default 503 page that is shown while a deployment is in progress on Openshift is not very "user friendly". I wanted to change that page for my DIY app and the solution I found is to start a temporary server that will serve the custom 503 page, while the deployment is in progress.

Python to the rescue !

To keep things simple, I will use python's base http server to serve a static html page. This python web server will be started after the nginx process is stopped and will be terminated at the end of the deployment, right before the nginx server will be started again.

Usage

  • In my stop action hook I will start python web server right after I stop nginx:
# stop nginx

echo "Starting maintenance web server."
nohup python ${OPENSHIFT_RUNTIME_DIR}/maintenance/maintenance.py > /tmp/nohup.out 2>&1&
echo $! > ${OPENSHIFT_RUN_DIR}/maintenance.pid
  • In my start action hook I will stop python web server right before I start nginx:
echo "Stopping maintenance web server."
kill -9 `cat ${OPENSHIFT_RUN_DIR}/maintenance.pid`

# start nginx

So basically when the deployment starts, nginx will be stopped and python's web server will be started and when the deployment is done, python's web server will be stopped and nginx will be started.

#!/usr/bin/env python
import os
import time
import BaseHTTPServer
HOST_NAME = os.getenv("OPENSHIFT_DIY_IP")
PORT_NUMBER = 8080
class MaintenanceHandler(BaseHTTPServer.BaseHTTPRequestHandler):
def do_GET(self):
self.curDir = os.path.dirname(os.path.realpath(__file__))
if self.path=="/":
self.path = "/503.html"
# If requested file does not exists, show 503 page
elif os.path.exists(self.curDir+self.path) == False:
self.path = "/503.html"
try:
# Check extensions and set the mime type accordingly
sendReply = False
if self.path.endswith(".html"):
mimetype = "text/html"
sendReply = True
if self.path.endswith(".png"):
mimetype = "image/png"
sendReply = True
if self.path.endswith(".jpg"):
mimetype = "image/jpg"
sendReply = True
if self.path.endswith(".gif"):
mimetype = "image/gif"
sendReply = True
if self.path.endswith(".js"):
mimetype = "application/javascript"
sendReply = True
if self.path.endswith(".css"):
mimetype = "text/css"
sendReply = True
if sendReply == True:
# Open the static file requested and send it
f = open(self.curDir+self.path)
self.send_response(200)
self.send_header('Content-type',mimetype)
self.end_headers()
self.wfile.write(f.read())
f.close()
return
except IOError:
self.send_error(404, 'File not found: %s' % self.path)
if __name__ == '__main__':
server_class = BaseHTTPServer.HTTPServer
httpd = server_class((HOST_NAME, PORT_NUMBER), MaintenanceHandler)
print time.asctime(), "Server Starts - %s:%s" % (HOST_NAME, PORT_NUMBER)
try:
httpd.serve_forever()
except KeyboardInterrupt:
pass
httpd.server_close()
print time.asctime(), "Server Stops - %s:%s" % (HOST_NAME, PORT_NUMBER)
@flyingfisch
Copy link

so do you just put this in your php directory?

@vimishor
Copy link
Author

I store it under ${OPENSHIFT_RUNTIME_DIR}/maintenance/maintenance.py in my diy cartridge

@connyay
Copy link

connyay commented Aug 28, 2014

Do you mind if I use this in an openshift cartridge I'm building?

@vimishor
Copy link
Author

@connyay You may consider the code under MIT license, so go ahead 😄

@mignev
Copy link

mignev commented May 7, 2015

Hello guys,
I wrote this cartridge based on this gist. https://github.com/mignev/openshift-cartridge-maintenance-page

Thanks @vimishor for your work!

@caruccio
Copy link

Found it via @mignev's cartridge and must say, it's a pretty cool idea!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment