mirror of
https://github.com/zulip/docker-zulip.git
synced 2025-11-17 20:41:33 +00:00
Removed all unneeded zulip/zulip files
Moved the zulip-puppet/ to puppet/zulip/ We are now git cloning and rolling with a checkout to a version
This commit is contained in:
15
Dockerfile
15
Dockerfile
@@ -1,10 +1,10 @@
|
|||||||
FROM quay.io/sameersbn/ubuntu:latest
|
FROM quay.io/sameersbn/ubuntu:latest
|
||||||
MAINTAINER Alexander Trost <galexrt@googlemail.com>
|
MAINTAINER Alexander Trost <galexrt@googlemail.com>
|
||||||
|
|
||||||
ENV ZULIP_VERSION="1.3.7" ZULIP_CHECKSUM="88bfa668eb14e07b0b806977db2ae2cd4d7e7ef8" DATA_DIR="/data"
|
ENV ZULIP_VERSION="master" DATA_DIR="/data"
|
||||||
|
|
||||||
ADD entrypoint.sh /entrypoint.sh
|
ADD entrypoint.sh /entrypoint.sh
|
||||||
ADD zulip-puppet /root/zulip-puppet
|
ADD puppet/zulip/ /root/puppet-zulip
|
||||||
|
|
||||||
RUN wget -q -O /root/zulip-ppa.asc https://zulip.com/dist/keys/zulip-ppa.asc && \
|
RUN wget -q -O /root/zulip-ppa.asc https://zulip.com/dist/keys/zulip-ppa.asc && \
|
||||||
apt-key add /root/zulip-ppa.asc && \
|
apt-key add /root/zulip-ppa.asc && \
|
||||||
@@ -12,14 +12,12 @@ RUN wget -q -O /root/zulip-ppa.asc https://zulip.com/dist/keys/zulip-ppa.asc &&
|
|||||||
echo "deb-src http://ppa.launchpad.net/tabbott/zulip/ubuntu trusty main" >> /etc/apt/sources.list.d/zulip.list && \
|
echo "deb-src http://ppa.launchpad.net/tabbott/zulip/ubuntu trusty main" >> /etc/apt/sources.list.d/zulip.list && \
|
||||||
apt-get -qq update && \
|
apt-get -qq update && \
|
||||||
apt-get -q dist-upgrade -y && \
|
apt-get -q dist-upgrade -y && \
|
||||||
DEBIAN_FRONTEND=noninteractive apt-get -q install -y puppet git python-dev python-six python-pbs && \
|
DEBIAN_FRONTEND=noninteractive apt-get install -y puppet git python-dev python-six python-pbs && \
|
||||||
mkdir -p "/root/zulip" "/etc/zulip" "$DATA_DIR" && \
|
mkdir -p "/root/zulip" "/etc/zulip" "$DATA_DIR" && \
|
||||||
wget -q "https://www.zulip.com/dist/releases/zulip-server-$ZULIP_VERSION.tar.gz" -P "/tmp" && \
|
|
||||||
echo "$ZULIP_CHECKSUM /tmp/zulip-server-$ZULIP_VERSION.tar.gz" | sha1sum -c && \
|
|
||||||
tar xfz "/tmp/zulip-server-$ZULIP_VERSION.tar.gz" -C "/root/zulip" --remove-files --strip-components=1 && \
|
|
||||||
echo "[machine]\npuppet_classes = zulip::voyager\ndeploy_type = voyager" > /etc/zulip/zulip.conf && \
|
echo "[machine]\npuppet_classes = zulip::voyager\ndeploy_type = voyager" > /etc/zulip/zulip.conf && \
|
||||||
rm -rf /root/zulip/puppet/zulip_internal /root/zulip/puppet/zulip && \
|
git clone https://github.com/zulip/zulip.git /root/zulip && \
|
||||||
mv -f /root/zulip-puppet /root/zulip/puppet/zulip && \
|
git checkout "$ZULIP_VERSION" && \
|
||||||
|
mv -f /root/puppet-zulip /root/zulip/puppet/zulip && \
|
||||||
/root/zulip/scripts/zulip-puppet-apply -f && \
|
/root/zulip/scripts/zulip-puppet-apply -f && \
|
||||||
cp -fa /root/zulip/zproject/local_settings_template.py /etc/zulip/settings.py && \
|
cp -fa /root/zulip/zproject/local_settings_template.py /etc/zulip/settings.py && \
|
||||||
ln -nsf /etc/zulip/settings.py /root/zulip/zproject/local_settings.py && \
|
ln -nsf /etc/zulip/settings.py /root/zulip/zproject/local_settings.py && \
|
||||||
@@ -29,6 +27,7 @@ RUN wget -q -O /root/zulip-ppa.asc https://zulip.com/dist/keys/zulip-ppa.asc &&
|
|||||||
ln -nsf "$ZULIP_DEPLOY_PATH" "/home/zulip/deployments/next" && \
|
ln -nsf "$ZULIP_DEPLOY_PATH" "/home/zulip/deployments/next" && \
|
||||||
ln -nsf "$ZULIP_DEPLOY_PATH" "/home/zulip/deployments/current" && \
|
ln -nsf "$ZULIP_DEPLOY_PATH" "/home/zulip/deployments/current" && \
|
||||||
ln -nsf /etc/zulip/settings.py "$ZULIP_DEPLOY_PATH/zproject/local_settings.py" && \
|
ln -nsf /etc/zulip/settings.py "$ZULIP_DEPLOY_PATH/zproject/local_settings.py" && \
|
||||||
|
/root/zulip/tools/update-prod-static && \
|
||||||
cp -rfT "$ZULIP_DEPLOY_PATH/prod-static/serve" "/home/zulip/prod-static" && \
|
cp -rfT "$ZULIP_DEPLOY_PATH/prod-static/serve" "/home/zulip/prod-static" && \
|
||||||
chown -R zulip:zulip /home/zulip /var/log/zulip /etc/zulip/settings.py && \
|
chown -R zulip:zulip /home/zulip /var/log/zulip /etc/zulip/settings.py && \
|
||||||
apt-get -qq autoremove --purge -y && \
|
apt-get -qq autoremove --purge -y && \
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
[program:nginx]
|
[program:nginx]
|
||||||
command = /usr/sbin/nginx -g 'daemon off;'
|
command = /usr/sbin/nginx -g 'daemon off;server_tokens off;'
|
||||||
stdout_events_enabled=true
|
stdout_events_enabled=true
|
||||||
stderr_events_enabled=true
|
stderr_events_enabled=true
|
||||||
autorestart = true
|
autorestart = true
|
||||||
@@ -157,6 +157,6 @@ class zulip::app_frontend {
|
|||||||
owner => "root",
|
owner => "root",
|
||||||
group => "root",
|
group => "root",
|
||||||
mode => 644,
|
mode => 644,
|
||||||
source => "puppet:///modules/zulip/cron.d/clearsessions",
|
source => "puppet:///modules/zulip_internal/cron.d/clearsessions",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
MAILTO=""
|
|
||||||
*/10 * * * * zulip cd /home/zulip/deployments/current;python manage.py active_user_stats
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
MAILTO=""
|
|
||||||
# Remove any stale apple device tokens from our list
|
|
||||||
0 3 * * * zulip cd /home/zulip/deployments/current;python manage.py check_apns_tokens
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
MAILTO=""
|
|
||||||
# Clear all expired Django sessions at 10:22 PM every day.
|
|
||||||
22 22 * * * zulip cd /home/zulip/deployments/current;python manage.py clearsessions
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
SHELL=/bin/bash
|
|
||||||
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
|
|
||||||
USER=root
|
|
||||||
* * * * * root /home/zulip/deployments/current/bin/write-rabbitmq-consumers-state-file notify_tornado
|
|
||||||
* * * * * root /home/zulip/deployments/current/bin/write-rabbitmq-consumers-state-file user_activity
|
|
||||||
* * * * * root /home/zulip/deployments/current/bin/write-rabbitmq-consumers-state-file user_activity_interval
|
|
||||||
* * * * * root /home/zulip/deployments/current/bin/write-rabbitmq-consumers-state-file user_presence
|
|
||||||
* * * * * root /home/zulip/deployments/current/bin/write-rabbitmq-consumers-state-file invites
|
|
||||||
* * * * * root /home/zulip/deployments/current/bin/write-rabbitmq-consumers-state-file signups
|
|
||||||
* * * * * root /home/zulip/deployments/current/bin/write-rabbitmq-consumers-state-file message_sender
|
|
||||||
* * * * * root /home/zulip/deployments/current/bin/write-rabbitmq-consumers-state-file feedback_messages
|
|
||||||
* * * * * root /home/zulip/deployments/current/bin/write-rabbitmq-consumers-state-file error_reports
|
|
||||||
* * * * * root /home/zulip/deployments/current/bin/write-rabbitmq-consumers-state-file digest_emails
|
|
||||||
* * * * * root /home/zulip/deployments/current/bin/write-rabbitmq-consumers-state-file email_mirror
|
|
||||||
* * * * * root /home/zulip/deployments/current/bin/write-rabbitmq-consumers-state-file missedmessage_mobile_notifications
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
# /etc/security/limits.conf
|
|
||||||
#
|
|
||||||
#Each line describes a limit for a user in the form:
|
|
||||||
#
|
|
||||||
#<domain> <type> <item> <value>
|
|
||||||
#
|
|
||||||
#Where:
|
|
||||||
#<domain> can be:
|
|
||||||
# - an user name
|
|
||||||
# - a group name, with @group syntax
|
|
||||||
# - the wildcard *, for default entry
|
|
||||||
# - the wildcard %, can be also used with %group syntax,
|
|
||||||
# for maxlogin limit
|
|
||||||
# - NOTE: group and wildcard limits are not applied to root.
|
|
||||||
# To apply a limit to the root user, <domain> must be
|
|
||||||
# the literal username root.
|
|
||||||
#
|
|
||||||
#<type> can have the two values:
|
|
||||||
# - "soft" for enforcing the soft limits
|
|
||||||
# - "hard" for enforcing hard limits
|
|
||||||
#
|
|
||||||
#<item> can be one of the following:
|
|
||||||
# - core - limits the core file size (KB)
|
|
||||||
# - data - max data size (KB)
|
|
||||||
# - fsize - maximum filesize (KB)
|
|
||||||
# - memlock - max locked-in-memory address space (KB)
|
|
||||||
# - nofile - max number of open files
|
|
||||||
# - rss - max resident set size (KB)
|
|
||||||
# - stack - max stack size (KB)
|
|
||||||
# - cpu - max CPU time (MIN)
|
|
||||||
# - nproc - max number of processes
|
|
||||||
# - as - address space limit (KB)
|
|
||||||
# - maxlogins - max number of logins for this user
|
|
||||||
# - maxsyslogins - max number of logins on the system
|
|
||||||
# - priority - the priority to run user process with
|
|
||||||
# - locks - max number of file locks the user can hold
|
|
||||||
# - sigpending - max number of pending signals
|
|
||||||
# - msgqueue - max memory used by POSIX message queues (bytes)
|
|
||||||
# - nice - max nice priority allowed to raise to values: [-20, 19]
|
|
||||||
# - rtprio - max realtime priority
|
|
||||||
# - chroot - change root to directory (Debian-specific)
|
|
||||||
#
|
|
||||||
#<domain> <type> <item> <value>
|
|
||||||
#
|
|
||||||
|
|
||||||
#* soft core 0
|
|
||||||
#root hard core 100000
|
|
||||||
#* hard rss 10000
|
|
||||||
#@student hard nproc 20
|
|
||||||
#@faculty soft nproc 20
|
|
||||||
#@faculty hard nproc 50
|
|
||||||
#ftp hard nproc 0
|
|
||||||
#ftp - chroot /ftp
|
|
||||||
#@student - maxlogins 4
|
|
||||||
zulip soft nofile 40000
|
|
||||||
zulip hard nofile 50000
|
|
||||||
root soft nofile 40000
|
|
||||||
root hard nofile 50000
|
|
||||||
|
|
||||||
# End of file
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
fastcgi_param QUERY_STRING $query_string;
|
|
||||||
fastcgi_param REQUEST_METHOD $request_method;
|
|
||||||
fastcgi_param CONTENT_TYPE $content_type;
|
|
||||||
fastcgi_param CONTENT_LENGTH $content_length;
|
|
||||||
|
|
||||||
fastcgi_param SCRIPT_FILENAME $request_filename;
|
|
||||||
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
|
|
||||||
fastcgi_param REQUEST_URI $uri;
|
|
||||||
fastcgi_param DOCUMENT_URI $document_uri;
|
|
||||||
fastcgi_param DOCUMENT_ROOT $document_root;
|
|
||||||
fastcgi_param SERVER_PROTOCOL $server_protocol;
|
|
||||||
|
|
||||||
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
|
|
||||||
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
|
|
||||||
|
|
||||||
fastcgi_param REMOTE_ADDR $remote_addr;
|
|
||||||
fastcgi_param REMOTE_PORT $remote_port;
|
|
||||||
fastcgi_param SERVER_ADDR $server_addr;
|
|
||||||
fastcgi_param SERVER_PORT $server_port;
|
|
||||||
fastcgi_param SERVER_NAME $server_name;
|
|
||||||
|
|
||||||
fastcgi_param HTTPS $https;
|
|
||||||
|
|
||||||
# PHP only, required if PHP was built with --enable-force-cgi-redirect
|
|
||||||
fastcgi_param REDIRECT_STATUS 200;
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
user zulip;
|
|
||||||
|
|
||||||
worker_processes auto;
|
|
||||||
pid /var/run/nginx.pid;
|
|
||||||
|
|
||||||
worker_rlimit_nofile 40000;
|
|
||||||
events {
|
|
||||||
worker_connections 40000;
|
|
||||||
|
|
||||||
use epoll;
|
|
||||||
|
|
||||||
multi_accept on;
|
|
||||||
}
|
|
||||||
|
|
||||||
http {
|
|
||||||
sendfile on;
|
|
||||||
tcp_nopush on;
|
|
||||||
tcp_nodelay on;
|
|
||||||
keepalive_timeout 65;
|
|
||||||
types_hash_max_size 2048;
|
|
||||||
client_max_body_size 25m;
|
|
||||||
|
|
||||||
include /etc/nginx/mime.types;
|
|
||||||
default_type application/octet-stream;
|
|
||||||
|
|
||||||
access_log /var/log/nginx/access.log;
|
|
||||||
error_log /var/log/nginx/error.log;
|
|
||||||
|
|
||||||
reset_timedout_connection on;
|
|
||||||
server_tokens off;
|
|
||||||
gzip on;
|
|
||||||
gzip_disable "msie6";
|
|
||||||
|
|
||||||
# Select a Connection header for sockjs reverse-proxying
|
|
||||||
map $http_upgrade $connection_upgrade {
|
|
||||||
default upgrade;
|
|
||||||
'' close;
|
|
||||||
}
|
|
||||||
# These are the official ciphers as of 2014-10-14
|
|
||||||
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
|
|
||||||
ssl_ciphers EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:EECDH+RC4:RSA+RC4:!MD5;
|
|
||||||
|
|
||||||
|
|
||||||
include /etc/nginx/conf.d/*.conf;
|
|
||||||
include /etc/nginx/sites-enabled/*;
|
|
||||||
}
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
server {
|
|
||||||
listen 80;
|
|
||||||
return 301 https://$host$request_uri;
|
|
||||||
}
|
|
||||||
|
|
||||||
include /etc/nginx/zulip-include/upstreams;
|
|
||||||
|
|
||||||
server {
|
|
||||||
listen 443;
|
|
||||||
|
|
||||||
ssl on;
|
|
||||||
ssl_certificate /etc/ssl/certs/zulip.combined-chain.crt;
|
|
||||||
ssl_certificate_key /etc/ssl/private/zulip.key;
|
|
||||||
|
|
||||||
location /user_uploads {
|
|
||||||
add_header X-Content-Type-Options nosniff;
|
|
||||||
include /etc/nginx/zulip-include/uploads.types;
|
|
||||||
alias /home/zulip/uploads/files;
|
|
||||||
}
|
|
||||||
|
|
||||||
location /user_avatars {
|
|
||||||
add_header X-Content-Type-Options nosniff;
|
|
||||||
include /etc/nginx/zulip-include/uploads.types;
|
|
||||||
alias /home/zulip/uploads/avatars;
|
|
||||||
}
|
|
||||||
|
|
||||||
location /local-static {
|
|
||||||
alias /home/zulip/local-static;
|
|
||||||
}
|
|
||||||
|
|
||||||
include /etc/nginx/zulip-include/app;
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
# Longpolling version needed for xhr streaming support
|
|
||||||
include /etc/nginx/zulip-include/proxy_longpolling;
|
|
||||||
|
|
||||||
proxy_set_header Upgrade $http_upgrade;
|
|
||||||
# This should override the Connection setting in zulip-include/proxy
|
|
||||||
proxy_set_header Connection $connection_upgrade;
|
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
proxy_http_version 1.1;
|
|
||||||
# Clearing the Connection header is required for keepalives from the load balancer
|
|
||||||
# http://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive
|
|
||||||
proxy_set_header Connection "";
|
|
||||||
proxy_set_header Host $host;
|
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
||||||
proxy_next_upstream off;
|
|
||||||
proxy_redirect off;
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
include /etc/nginx/zulip-include/proxy;
|
|
||||||
proxy_buffering off;
|
|
||||||
proxy_read_timeout 1200;
|
|
||||||
@@ -1,79 +0,0 @@
|
|||||||
access_log /var/log/nginx/access.log;
|
|
||||||
error_log /var/log/nginx/error.log;
|
|
||||||
|
|
||||||
# Enable HSTS: tell browsers to always use HTTPS
|
|
||||||
add_header Strict-Transport-Security max-age=15768000;
|
|
||||||
|
|
||||||
# Serve a custom error page when the app is down
|
|
||||||
error_page 502 503 504 /static/html/5xx.html;
|
|
||||||
|
|
||||||
# Serve static files directly
|
|
||||||
location /static/ {
|
|
||||||
alias /home/zulip/prod-static/;
|
|
||||||
error_page 404 /static/html/404.html;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Send longpoll requests to Tornado
|
|
||||||
location ~ /json/get_events|/json/events {
|
|
||||||
proxy_pass http://tornado;
|
|
||||||
include /etc/nginx/zulip-include/proxy_longpolling;
|
|
||||||
|
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Send longpoll requests to Tornado
|
|
||||||
location /api/v1/events {
|
|
||||||
|
|
||||||
add_header Access-Control-Allow-Origin *;
|
|
||||||
add_header Access-Control-Allow-Headers Authorization;
|
|
||||||
add_header Access-Control-Allow-Methods 'GET, POST';
|
|
||||||
|
|
||||||
if ($request_method = 'OPTIONS') {
|
|
||||||
add_header Access-Control-Allow-Origin *;
|
|
||||||
add_header Access-Control-Allow-Headers Authorization;
|
|
||||||
add_header Access-Control-Allow-Methods 'GET, POST';
|
|
||||||
add_header 'Content-Type' 'text/plain charset=UTF-8';
|
|
||||||
add_header 'Content-Length' 0;
|
|
||||||
return 204;
|
|
||||||
}
|
|
||||||
|
|
||||||
proxy_pass http://tornado;
|
|
||||||
include /etc/nginx/zulip-include/proxy_longpolling;
|
|
||||||
|
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# Send sockjs requests to Tornado
|
|
||||||
location /sockjs {
|
|
||||||
proxy_pass http://tornado;
|
|
||||||
include /etc/nginx/zulip-include/location-sockjs;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Send everything else to Django via FastCGI
|
|
||||||
location / {
|
|
||||||
include fastcgi_params;
|
|
||||||
fastcgi_pass django;
|
|
||||||
fastcgi_split_path_info ^()(.*)$;
|
|
||||||
# Second number set to `getconf PAGESIZE`
|
|
||||||
fastcgi_buffers 1024 4k;
|
|
||||||
fastcgi_max_temp_file_size 0;
|
|
||||||
fastcgi_next_upstream off;
|
|
||||||
}
|
|
||||||
|
|
||||||
location /api/ {
|
|
||||||
add_header Access-Control-Allow-Origin *;
|
|
||||||
add_header Access-Control-Allow-Headers Authorization;
|
|
||||||
add_header Access-Control-Allow-Methods 'GET, POST';
|
|
||||||
|
|
||||||
include fastcgi_params;
|
|
||||||
fastcgi_pass django;
|
|
||||||
fastcgi_split_path_info ^()(.*)$;
|
|
||||||
# Second number set to `getconf PAGESIZE`
|
|
||||||
fastcgi_buffers 1024 4k;
|
|
||||||
fastcgi_max_temp_file_size 0;
|
|
||||||
fastcgi_next_upstream off;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
include /etc/nginx/zulip-include/app.d/*.conf;
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
|
|
||||||
types {
|
|
||||||
text/plain txt;
|
|
||||||
|
|
||||||
image/gif gif;
|
|
||||||
image/jpeg jpeg jpg;
|
|
||||||
image/png png;
|
|
||||||
image/tiff tif tiff;
|
|
||||||
image/webp webp;
|
|
||||||
|
|
||||||
video/3gpp 3gpp 3gp;
|
|
||||||
video/mp4 mp4;
|
|
||||||
video/mpeg mpeg mpg;
|
|
||||||
video/quicktime mov;
|
|
||||||
video/webm webm;
|
|
||||||
video/x-flv flv;
|
|
||||||
video/x-m4v m4v;
|
|
||||||
video/x-mng mng;
|
|
||||||
video/x-ms-asf asx asf;
|
|
||||||
video/x-ms-wmv wmv;
|
|
||||||
video/x-msvideo avi;
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
upstream django {
|
|
||||||
server unix:/home/zulip/deployments/fastcgi-socket;
|
|
||||||
}
|
|
||||||
|
|
||||||
upstream tornado {
|
|
||||||
server 127.0.0.1:9993;
|
|
||||||
keepalive 10000;
|
|
||||||
}
|
|
||||||
|
|
||||||
upstream localhost_sso {
|
|
||||||
server 127.0.0.1:8888;
|
|
||||||
}
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
import psycopg2
|
|
||||||
import psycopg2.extensions
|
|
||||||
import select
|
|
||||||
import time
|
|
||||||
import logging
|
|
||||||
|
|
||||||
def update_fts_columns(cursor):
|
|
||||||
cursor.execute("SELECT id, message_id FROM fts_update_log;")
|
|
||||||
ids = []
|
|
||||||
for (id, message_id) in cursor.fetchall():
|
|
||||||
cursor.execute("UPDATE zerver_message SET "
|
|
||||||
"search_tsvector = to_tsvector('zulip.english_us_search', "
|
|
||||||
"subject || rendered_content) "
|
|
||||||
"WHERE id = %s", (message_id,))
|
|
||||||
ids.append(id)
|
|
||||||
cursor.execute("DELETE FROM fts_update_log WHERE id = ANY(%s)", (ids,))
|
|
||||||
|
|
||||||
|
|
||||||
def am_master(cursor):
|
|
||||||
cursor.execute("SELECT pg_is_in_recovery()")
|
|
||||||
return not cursor.fetchall()[0][0]
|
|
||||||
|
|
||||||
logging.basicConfig(format="%(asctime)s %(levelname)s: %(message)s")
|
|
||||||
logger = logging.getLogger("process_fts_updates")
|
|
||||||
logger.setLevel(logging.DEBUG)
|
|
||||||
|
|
||||||
logger.info("process_fts_updates starting")
|
|
||||||
|
|
||||||
conn = psycopg2.connect("user=zulip")
|
|
||||||
cursor = conn.cursor()
|
|
||||||
|
|
||||||
conn.set_isolation_level(psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT)
|
|
||||||
|
|
||||||
first_check = True
|
|
||||||
while not am_master(cursor):
|
|
||||||
if first_check:
|
|
||||||
first_check = False
|
|
||||||
logger.info("In recovery; sleeping")
|
|
||||||
time.sleep(5)
|
|
||||||
|
|
||||||
logger.info("Not in recovery; listening for FTS updates")
|
|
||||||
|
|
||||||
cursor.execute("LISTEN fts_update_log;")
|
|
||||||
update_fts_columns(cursor)
|
|
||||||
|
|
||||||
# TODO: If we go back into recovery, we should stop processing updates
|
|
||||||
while True:
|
|
||||||
if select.select([conn], [], [], 30) != ([], [], []):
|
|
||||||
conn.poll()
|
|
||||||
while conn.notifies:
|
|
||||||
conn.notifies.pop()
|
|
||||||
update_fts_columns(cursor)
|
|
||||||
@@ -1,280 +0,0 @@
|
|||||||
; Supervisor config file.
|
|
||||||
; on Debian squeeze, place me in /etc/supervisor/conf.d/zulip.conf
|
|
||||||
;
|
|
||||||
; For more information on the config file, please see:
|
|
||||||
; http://supervisord.org/configuration.html
|
|
||||||
;
|
|
||||||
; Note: shell expansion ("~" or "$HOME") is not supported. Environment
|
|
||||||
; variables can be expanded using this syntax: "%(ENV_HOME)s".
|
|
||||||
|
|
||||||
[fcgi-program:zulip-django]
|
|
||||||
command=python /home/zulip/deployments/current/manage.py runfcgi daemonize=False maxchildren=20 ; the program (relative uses PATH, can take args)
|
|
||||||
;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
|
|
||||||
;numprocs=1 ; number of processes copies to start (def 1)
|
|
||||||
;directory=/tmp ; directory to cwd to before exec (def no cwd)
|
|
||||||
;umask=022 ; umask for process (default None)
|
|
||||||
priority=100 ; the relative start priority (default 999)
|
|
||||||
autostart=true ; start at supervisord start (default: true)
|
|
||||||
autorestart=true ; whether/when to restart (default: unexpected)
|
|
||||||
;startsecs=1 ; number of secs prog must stay running (def. 1)
|
|
||||||
;startretries=3 ; max # of serial start failures (default 3)
|
|
||||||
;exitcodes=0,2 ; 'expected' exit codes for process (default 0,2)
|
|
||||||
stopsignal=HUP ; signal used to kill process (default TERM)
|
|
||||||
stopwaitsecs=30 ; max num secs to wait b4 SIGKILL (default 10)
|
|
||||||
;stopasgroup=false ; send stop signal to the UNIX process group (default false)
|
|
||||||
;killasgroup=false ; SIGKILL the UNIX process group (def false)
|
|
||||||
user=zulip ; setuid to this UNIX account to run the program
|
|
||||||
redirect_stderr=true ; redirect proc stderr to stdout (default false)
|
|
||||||
stdout_logfile=/var/log/zulip/django.log ; stdout log path, NONE for none; default AUTO
|
|
||||||
stdout_logfile_maxbytes=1GB ; max # logfile bytes b4 rotation (default 50MB)
|
|
||||||
stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
|
|
||||||
;stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
|
|
||||||
;stdout_events_enabled=false ; emit events on stdout writes (default false)
|
|
||||||
;stderr_logfile=/var/log/zulip/app.err ; stderr log path, NONE for none; default AUTO
|
|
||||||
;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
|
|
||||||
;stderr_logfile_backups=10 ; # of stderr logfile backups (default 10)
|
|
||||||
;stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
|
|
||||||
;stderr_events_enabled=false ; emit events on stderr writes (default false)
|
|
||||||
;environment=A=1,B=2 ; process environment additions (def no adds)
|
|
||||||
;serverurl=AUTO ; override serverurl computation (childutils)
|
|
||||||
directory=/home/zulip/deployments/current/
|
|
||||||
socket=unix:///home/zulip/deployments/fastcgi-socket
|
|
||||||
socket_owner=zulip:zulip
|
|
||||||
socket_mode=0700
|
|
||||||
|
|
||||||
[program:zulip-tornado]
|
|
||||||
command=python /home/zulip/deployments/current/manage.py runtornado 127.0.0.1:9993
|
|
||||||
priority=200 ; the relative start priority (default 999)
|
|
||||||
autostart=true ; start at supervisord start (default: true)
|
|
||||||
autorestart=true ; whether/when to restart (default: unexpected)
|
|
||||||
stopsignal=TERM ; signal used to kill process (default TERM)
|
|
||||||
stopwaitsecs=30 ; max num secs to wait b4 SIGKILL (default 10)
|
|
||||||
user=zulip ; setuid to this UNIX account to run the program
|
|
||||||
redirect_stderr=true ; redirect proc stderr to stdout (default false)
|
|
||||||
stdout_logfile=/var/log/zulip/tornado.log ; stdout log path, NONE for none; default AUTO
|
|
||||||
stdout_logfile_maxbytes=1GB ; max # logfile bytes b4 rotation (default 50MB)
|
|
||||||
stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
|
|
||||||
directory=/home/zulip/deployments/current/
|
|
||||||
|
|
||||||
[program:zulip-events-user-activity]
|
|
||||||
command=python /home/zulip/deployments/current/manage.py process_queue user_activity
|
|
||||||
priority=300 ; the relative start priority (default 999)
|
|
||||||
autostart=true ; start at supervisord start (default: true)
|
|
||||||
autorestart=true ; whether/when to restart (default: unexpected)
|
|
||||||
stopsignal=TERM ; signal used to kill process (default TERM)
|
|
||||||
stopwaitsecs=30 ; max num secs to wait b4 SIGKILL (default 10)
|
|
||||||
user=zulip ; setuid to this UNIX account to run the program
|
|
||||||
redirect_stderr=true ; redirect proc stderr to stdout (default false)
|
|
||||||
stdout_logfile=/var/log/zulip/events-user-activity.log ; stdout log path, NONE for none; default AUTO
|
|
||||||
stdout_logfile_maxbytes=1GB ; max # logfile bytes b4 rotation (default 50MB)
|
|
||||||
stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
|
|
||||||
directory=/home/zulip/deployments/current/
|
|
||||||
|
|
||||||
[program:zulip-events-user-activity-interval]
|
|
||||||
command=python /home/zulip/deployments/current/manage.py process_queue user_activity_interval
|
|
||||||
priority=300 ; the relative start priority (default 999)
|
|
||||||
autostart=true ; start at supervisord start (default: true)
|
|
||||||
autorestart=true ; whether/when to restart (default: unexpected)
|
|
||||||
stopsignal=TERM ; signal used to kill process (default TERM)
|
|
||||||
stopwaitsecs=30 ; max num secs to wait b4 SIGKILL (default 10)
|
|
||||||
user=zulip ; setuid to this UNIX account to run the program
|
|
||||||
redirect_stderr=true ; redirect proc stderr to stdout (default false)
|
|
||||||
stdout_logfile=/var/log/zulip/events-user-activity-interval.log ; stdout log path, NONE for none; default AUTO
|
|
||||||
stdout_logfile_maxbytes=1GB ; max # logfile bytes b4 rotation (default 50MB)
|
|
||||||
stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
|
|
||||||
directory=/home/zulip/deployments/current/
|
|
||||||
|
|
||||||
[program:zulip-events-user-presence]
|
|
||||||
command=python /home/zulip/deployments/current/manage.py process_queue user_presence
|
|
||||||
priority=300 ; the relative start priority (default 999)
|
|
||||||
autostart=true ; start at supervisord start (default: true)
|
|
||||||
autorestart=true ; whether/when to restart (default: unexpected)
|
|
||||||
stopsignal=TERM ; signal used to kill process (default TERM)
|
|
||||||
stopwaitsecs=30 ; max num secs to wait b4 SIGKILL (default 10)
|
|
||||||
user=zulip ; setuid to this UNIX account to run the program
|
|
||||||
redirect_stderr=true ; redirect proc stderr to stdout (default false)
|
|
||||||
stdout_logfile=/var/log/zulip/events-user-presence.log ; stdout log path, NONE for none; default AUTO
|
|
||||||
stdout_logfile_maxbytes=1GB ; max # logfile bytes b4 rotation (default 50MB)
|
|
||||||
stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
|
|
||||||
directory=/home/zulip/deployments/current/
|
|
||||||
|
|
||||||
[program:zulip-events-signups]
|
|
||||||
command=python /home/zulip/deployments/current/manage.py process_queue signups
|
|
||||||
priority=400 ; the relative start priority (default 999)
|
|
||||||
autostart=true ; start at supervisord start (default: true)
|
|
||||||
autorestart=true ; whether/when to restart (default: unexpected)
|
|
||||||
stopsignal=TERM ; signal used to kill process (default TERM)
|
|
||||||
stopwaitsecs=30 ; max num secs to wait b4 SIGKILL (default 10)
|
|
||||||
user=zulip ; setuid to this UNIX account to run the program
|
|
||||||
redirect_stderr=true ; redirect proc stderr to stdout (default false)
|
|
||||||
stdout_logfile=/var/log/zulip/events-signups.log ; stdout log path, NONE for none; default AUTO
|
|
||||||
stdout_logfile_maxbytes=1GB ; max # logfile bytes b4 rotation (default 50MB)
|
|
||||||
stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
|
|
||||||
directory=/home/zulip/deployments/current/
|
|
||||||
|
|
||||||
[program:zulip-events-confirmation-emails]
|
|
||||||
command=python /home/zulip/deployments/current/manage.py process_queue invites
|
|
||||||
priority=500 ; the relative start priority (default 999)
|
|
||||||
autostart=true ; start at supervisord start (default: true)
|
|
||||||
autorestart=true ; whether/when to restart (default: unexpected)
|
|
||||||
stopsignal=TERM ; signal used to kill process (default TERM)
|
|
||||||
stopwaitsecs=30 ; max num secs to wait b4 SIGKILL (default 10)
|
|
||||||
user=zulip ; setuid to this UNIX account to run the program
|
|
||||||
redirect_stderr=true ; redirect proc stderr to stdout (default false)
|
|
||||||
stdout_logfile=/var/log/zulip/events-confirmation-emails.log ; stdout log path, NONE for none; default AUTO
|
|
||||||
stdout_logfile_maxbytes=1GB ; max # logfile bytes b4 rotation (default 50MB)
|
|
||||||
stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
|
|
||||||
directory=/home/zulip/deployments/current/
|
|
||||||
|
|
||||||
[program:zulip-events-missedmessage_reminders]
|
|
||||||
command=python /home/zulip/deployments/current/manage.py process_queue missedmessage_emails
|
|
||||||
priority=600 ; the relative start priority (default 999)
|
|
||||||
autostart=true ; start at supervisord start (default: true)
|
|
||||||
autorestart=true ; whether/when to restart (default: unexpected)
|
|
||||||
stopsignal=TERM ; signal used to kill process (default TERM)
|
|
||||||
stopwaitsecs=30 ; max num secs to wait b4 SIGKILL (default 10)
|
|
||||||
user=zulip ; setuid to this UNIX account to run the program
|
|
||||||
redirect_stderr=true ; redirect proc stderr to stdout (default false)
|
|
||||||
stdout_logfile=/var/log/zulip/events-missedmessage_reminders.log ; stdout log path, NONE for none; default AUTO
|
|
||||||
stdout_logfile_maxbytes=1GB ; max # logfile bytes b4 rotation (default 50MB)
|
|
||||||
stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
|
|
||||||
directory=/home/zulip/deployments/current/
|
|
||||||
|
|
||||||
[program:zulip-events-missedmessage_mobile_notifications]
|
|
||||||
command=python /home/zulip/deployments/current/manage.py process_queue missedmessage_mobile_notifications
|
|
||||||
priority=600 ; the relative start priority (default 999)
|
|
||||||
autostart=true ; start at supervisord start (default: true)
|
|
||||||
autorestart=true ; whether/when to restart (default: unexpected)
|
|
||||||
stopsignal=TERM ; signal used to kill process (default TERM)
|
|
||||||
stopwaitsecs=30 ; max num secs to wait b4 SIGKILL (default 10)
|
|
||||||
user=zulip ; setuid to this UNIX account to run the program
|
|
||||||
redirect_stderr=true ; redirect proc stderr to stdout (default false)
|
|
||||||
stdout_logfile=/var/log/zulip/events-missedmessage_mobile_notifications.log ; stdout log path, NONE for none; default AUTO
|
|
||||||
stdout_logfile_maxbytes=1GB ; max # logfile bytes b4 rotation (default 50MB)
|
|
||||||
stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
|
|
||||||
directory=/home/zulip/deployments/current/
|
|
||||||
|
|
||||||
[program:zulip-events-slowqueries]
|
|
||||||
command=python /home/zulip/deployments/current/manage.py process_queue slow_queries
|
|
||||||
priority=600 ; the relative start priority (default 999)
|
|
||||||
autostart=true ; start at supervisord start (default: true)
|
|
||||||
autorestart=true ; whether/when to restart (default: unexpected)
|
|
||||||
stopsignal=TERM ; signal used to kill process (default TERM)
|
|
||||||
stopwaitsecs=30 ; max num secs to wait b4 SIGKILL (default 10)
|
|
||||||
user=zulip ; setuid to this UNIX account to run the program
|
|
||||||
redirect_stderr=true ; redirect proc stderr to stdout (default false)
|
|
||||||
stdout_logfile=/var/log/zulip/events-slow_queries.log ; stdout log path, NONE for none; default AUTO
|
|
||||||
stdout_logfile_maxbytes=1GB ; max # logfile bytes b4 rotation (default 50MB)
|
|
||||||
stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
|
|
||||||
directory=/home/zulip/deployments/current/
|
|
||||||
|
|
||||||
[program:zulip-events-message_sender]
|
|
||||||
command=python /home/zulip/deployments/current/manage.py process_queue message_sender %(process_num)s
|
|
||||||
process_name=%(program_name)s-%(process_num)s
|
|
||||||
priority=350 ; the relative start priority (default 999)
|
|
||||||
autostart=true ; start at supervisord start (default: true)
|
|
||||||
autorestart=true ; whether/when to restart (default: unexpected)
|
|
||||||
stopsignal=TERM ; signal used to kill process (default TERM)
|
|
||||||
stopwaitsecs=30 ; max num secs to wait b4 SIGKILL (default 10)
|
|
||||||
user=zulip ; setuid to this UNIX account to run the program
|
|
||||||
redirect_stderr=true ; redirect proc stderr to stdout (default false)
|
|
||||||
stdout_logfile=/var/log/zulip/events-message_sender.log ; stdout log path, NONE for none; default AUTO
|
|
||||||
stdout_logfile_maxbytes=1GB ; max # logfile bytes b4 rotation (default 50MB)
|
|
||||||
stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
|
|
||||||
directory=/home/zulip/deployments/current/
|
|
||||||
numprocs=5
|
|
||||||
|
|
||||||
[program:zulip-events-feedback_messages]
|
|
||||||
command=python /home/zulip/deployments/current/manage.py process_queue feedback_messages
|
|
||||||
priority=600 ; the relative start priority (default 999)
|
|
||||||
autostart=true ; start at supervisord start (default: true)
|
|
||||||
autorestart=true ; whether/when to restart (default: unexpected)
|
|
||||||
stopsignal=TERM ; signal used to kill process (default TERM)
|
|
||||||
stopwaitsecs=30 ; max num secs to wait b4 SIGKILL (default 10)
|
|
||||||
user=zulip ; setuid to this UNIX account to run the program
|
|
||||||
redirect_stderr=true ; redirect proc stderr to stdout (default false)
|
|
||||||
stdout_logfile=/var/log/zulip/events-feedback_messages.log ; stdout log path, NONE for none; default AUTO
|
|
||||||
stdout_logfile_maxbytes=1GB ; max # logfile bytes b4 rotation (default 50MB)
|
|
||||||
stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
|
|
||||||
directory=/home/zulip/deployments/current/
|
|
||||||
|
|
||||||
[program:zulip-events-error_reports]
|
|
||||||
command=python /home/zulip/deployments/current/manage.py process_queue error_reports
|
|
||||||
priority=600 ; the relative start priority (default 999)
|
|
||||||
autostart=true ; start at supervisord start (default: true)
|
|
||||||
autorestart=true ; whether/when to restart (default: unexpected)
|
|
||||||
stopsignal=TERM ; signal used to kill process (default TERM)
|
|
||||||
stopwaitsecs=30 ; max num secs to wait b4 SIGKILL (default 10)
|
|
||||||
user=zulip ; setuid to this UNIX account to run the program
|
|
||||||
redirect_stderr=true ; redirect proc stderr to stdout (default false)
|
|
||||||
stdout_logfile=/var/log/zulip/events-error_reports.log ; stdout log path, NONE for none; default AUTO
|
|
||||||
stdout_logfile_maxbytes=1GB ; max # logfile bytes b4 rotation (default 50MB)
|
|
||||||
stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
|
|
||||||
directory=/home/zulip/deployments/current/
|
|
||||||
|
|
||||||
[program:zulip-events-digest_emails]
|
|
||||||
command=python /home/zulip/deployments/current/manage.py process_queue digest_emails
|
|
||||||
priority=600 ; the relative start priority (default 999)
|
|
||||||
autostart=true ; start at supervisord start (default: true)
|
|
||||||
autorestart=true ; whether/when to restart (default: unexpected)
|
|
||||||
stopsignal=TERM ; signal used to kill process (default TERM)
|
|
||||||
stopwaitsecs=30 ; max num secs to wait b4 SIGKILL (default 10)
|
|
||||||
user=zulip ; setuid to this UNIX account to run the program
|
|
||||||
redirect_stderr=true ; redirect proc stderr to stdout (default false)
|
|
||||||
stdout_logfile=/var/log/zulip/events-digest_emails.log ; stdout log path, NONE for none; default AUTO
|
|
||||||
stdout_logfile_maxbytes=1GB ; max # logfile bytes b4 rotation (default 50MB)
|
|
||||||
stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
|
|
||||||
directory=/home/zulip/deployments/current/
|
|
||||||
|
|
||||||
[program:zulip-events-email_mirror]
|
|
||||||
command=python /home/zulip/deployments/current/manage.py process_queue email_mirror
|
|
||||||
priority=600 ; the relative start priority (default 999)
|
|
||||||
autostart=true ; start at supervisord start (default: true)
|
|
||||||
autorestart=true ; whether/when to restart (default: unexpected)
|
|
||||||
stopsignal=TERM ; signal used to kill process (default TERM)
|
|
||||||
stopwaitsecs=30 ; max num secs to wait b4 SIGKILL (default 10)
|
|
||||||
user=zulip ; setuid to this UNIX account to run the program
|
|
||||||
redirect_stderr=true ; redirect proc stderr to stdout (default false)
|
|
||||||
stdout_logfile=/var/log/zulip/events-email_mirror.log ; stdout log path, NONE for none; default AUTO
|
|
||||||
stdout_logfile_maxbytes=1GB ; max # logfile bytes b4 rotation (default 50MB)
|
|
||||||
stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
|
|
||||||
directory=/home/zulip/deployments/current/
|
|
||||||
|
|
||||||
[program:zulip-deliver-enqueued-emails]
|
|
||||||
command=python /home/zulip/deployments/current/manage.py deliver_email
|
|
||||||
priority=600 ; the relative start priority (default 999)
|
|
||||||
autostart=true ; start at supervisord start (default: true)
|
|
||||||
autorestart=true ; whether/when to restart (default: unexpected)
|
|
||||||
stopsignal=TERM ; signal used to kill process (default TERM)
|
|
||||||
stopwaitsecs=30 ; max num secs to wait b4 SIGKILL (default 10)
|
|
||||||
user=zulip ; setuid to this UNIX account to run the program
|
|
||||||
redirect_stderr=true ; redirect proc stderr to stdout (default false)
|
|
||||||
stdout_logfile=/var/log/zulip/events-deliver_enqueued_emails.log ; stdout log path, NONE for none; default AUTO
|
|
||||||
stdout_logfile_maxbytes=1GB ; max # logfile bytes b4 rotation (default 50MB)
|
|
||||||
stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
|
|
||||||
directory=/home/zulip/deployments/current/
|
|
||||||
|
|
||||||
|
|
||||||
; The below sample group section shows all possible group values,
|
|
||||||
; create one or more 'real' group: sections to create "heterogeneous"
|
|
||||||
; process groups.
|
|
||||||
|
|
||||||
[group:zulip-workers]
|
|
||||||
; each refers to 'x' in [program:x] definitions
|
|
||||||
programs=zulip-events-user-activity,zulip-events-user-activity-interval,zulip-events-user-presence,zulip-events-signups,zulip-events-confirmation-emails,zulip-events-missedmessage_reminders,zulip-events-slowqueries,zulip-events-feedback_messages,zulip-events-digest_emails,zulip-events-error_reports,zulip-deliver-enqueued-emails,zulip-events-missedmessage_mobile_notifications,zulip-events-email_mirror
|
|
||||||
|
|
||||||
[group:zulip-senders]
|
|
||||||
programs=zulip-events-message_sender
|
|
||||||
|
|
||||||
; The [include] section can just contain the "files" setting. This
|
|
||||||
; setting can list multiple files (separated by whitespace or
|
|
||||||
; newlines). It can also contain wildcards. The filenames are
|
|
||||||
; interpreted as relative to this file. Included files *cannot*
|
|
||||||
; include files themselves.
|
|
||||||
|
|
||||||
;[include]
|
|
||||||
;files = relative/directory/*.ini
|
|
||||||
|
|
||||||
;enable server restarts without requiring superuser access. This assumes that this is the only service being controlled by supervisord on this machine.
|
|
||||||
[unix_http_server]
|
|
||||||
chown=zulip:zulip
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
[program:process-fts-updates]
|
|
||||||
command=/usr/local/bin/process_fts_updates
|
|
||||||
priority=600 ; the relative start priority (default 999)
|
|
||||||
autostart=true ; start at supervisord start (default: true)
|
|
||||||
autorestart=true ; whether/when to restart (default: unexpected)
|
|
||||||
stopsignal=TERM ; signal used to kill process (default TERM)
|
|
||||||
stopwaitsecs=30 ; max num secs to wait b4 SIGKILL (default 10)
|
|
||||||
user=zulip ; setuid to this UNIX account to run the program
|
|
||||||
redirect_stderr=true ; redirect proc stderr to stdout (default false)
|
|
||||||
stdout_logfile=/var/log/zulip/fts-updates.log ; stdout log path, NONE for none; default AUTO
|
|
||||||
Reference in New Issue
Block a user