mirror of
https://github.com/zulip/zulip.git
synced 2025-11-07 23:43:43 +00:00
This requires manual steps on deploy to each of staging and prod: (1) Run the new update-deployment code to setup the initial deployment directory. (2) Restart all the programs running in screen sessions. (3) Deploy the nginx changes and restart nginx. (imported from commit 1ffe27933ee79274dc0a93d35c9938712de0ef36)
45 lines
1.3 KiB
Python
Executable File
45 lines
1.3 KiB
Python
Executable File
#!/usr/bin/env python
|
|
import os
|
|
import sys
|
|
import subprocess
|
|
import pylibmc
|
|
import traceback
|
|
import logging
|
|
|
|
logging.basicConfig(format="%(asctime)s restart-server: %(message)s",
|
|
level=logging.INFO)
|
|
|
|
# Color codes
|
|
OKBLUE = '\033[94m'
|
|
OKGREEN = '\033[92m'
|
|
WARNING = '\033[93m'
|
|
FAIL = '\033[91m'
|
|
ENDC = '\033[0m'
|
|
|
|
os.chdir("/home/humbug/humbug-deployments/current")
|
|
|
|
# Restart the FastCGI process, which is running in a shell loop in screen.
|
|
# TODO: real daemonization
|
|
logging.info("Killing daemons")
|
|
for cmd in ('runfcgi', 'runtornado', "process_user_activity"):
|
|
try:
|
|
subprocess.check_call(["pkill", "-f", "python manage.py " + cmd])
|
|
except subprocess.CalledProcessError:
|
|
print "%sCould not kill %s; is it running?%s" % (WARNING, cmd, ENDC)
|
|
|
|
logging.info("Flushing memcached")
|
|
try:
|
|
if not pylibmc.Client(['127.0.0.1']).flush_all():
|
|
print "%sflush_all returned False%s" % (WARNING, ENDC)
|
|
# There doesn't seem to be a method to close a pylibmc Client object.
|
|
except:
|
|
print "%sCould not flush cache:%s" % (WARNING, ENDC)
|
|
traceback.print_exc()
|
|
|
|
logging.info("Refilling memcached caches")
|
|
subprocess.check_call(["python", os.path.join(os.path.dirname(__file__), "..", "manage.py"),
|
|
"fill_memcached_caches"])
|
|
|
|
logging.info("Done!")
|
|
print OKGREEN + "Application restarted successfully!" + ENDC
|