runtime/start.sh

166 lines
4.2 KiB
Bash
Executable File

#!/bin/sh
##################################
# Basic structure and purpose file
##################################
for d in /srv/log /srv/conf /srv/run /srv/conf/supervisor.d /srv/var; do
if [ ! -e $d ]; then
mkdir -p $d
chown app:app $d
fi
done
# Bin directory where active tech is located along other tools
mkdir -p /srv/bin
# Directory where Nginx stored request bodies
mkdir -p /srv/var/nginx/
# Run directory where PID files, socket files a other runtime stuff is located
mkdir -p /srv/run
# Configuration store for Nginx
mkdir -p /srv/conf/nginx.d
###################
# Clear tmp files
###################
rm -f /srv/run/*.sock
rm -f /srv/run/*.pid
################
# Common things
################
# SSH password from file and from system env
if [ -e /srv/.rosti ]; then
echo "app:`cat /srv/.rosti`" | chpasswd
# file with ssh password has different owner
chown root:root /srv/.rosti
chmod 600 /srv/.rosti
fi
if [ -n "$SSHPASS" ]; then
echo "app:$SSHPASS" | chpasswd
fi
# Dropbear settings and certificates
if [ ! -e /srv/conf/dropbear ]; then
mkdir -p /srv/conf/dropbear
chmod 700 /srv/conf/dropbear
chown root:root /srv/conf/dropbear
fi
#rm /etc/dropbear/dropbear_rsa_host_key /etc/dropbear/dropbear_dss_host_key
test -e /srv/conf/dropbear/dropbear_rsa_host_key || dropbearkey -t rsa -f /srv/conf/dropbear/dropbear_rsa_host_key
test -e /srv/conf/dropbear/dropbear_dss_host_key || dropbearkey -t dss -f /srv/conf/dropbear/dropbear_dss_host_key
chmod 700 /srv/conf/dropbear
chmod 600 /srv/conf/dropbear/*
chown -R root:root /srv/conf/dropbear
cp /srv/conf/dropbear/* /etc/dropbear/
# vimrc
if [ ! -e /srv/.vimrc ]; then
cp /opt/etc/vimrc /srv/.vimrc
fi
# Crontab
test ! -e /srv/conf/crontab && touch /srv/conf/crontab
if [ -e /srv/conf/crontab ]; then
crontab -u app /srv/conf/crontab
fi
chown app:app /srv/conf/crontab
# Start secondary daemons
echo "Starting cron .."
/usr/sbin/cron
echo "Starting dropbear .."
dropbear -w -d /srv/conf/dropbear/dropbear_dss_host_key -r /srv/conf/dropbear/dropbear_rsa_host_key
# BASHRC
if [ ! -e /srv/.bashrc ]; then
cp /opt/etc/bashrc_local /srv/.bashrc
chown app:app /srv/.bashrc
fi
if [ ! -e /srv/.bash_profile ]; then
cp /opt/etc/bash_profile /srv/.bash_profile
fi
cd /srv
#################
# Initialization
#################
# Install custom packages
if [ -e /srv/.extra_packages ]; then
apt-get update -y
apt-get install -y `cat /srv/.extra_packages | sed "s/;//g" | sed "s/\n/ /g"`
fi
# Init scripts runned under root
if [ -e /opt/etc/script.d/* ]; then
for f in `ls /opt/script.d`; do
/bin/sh /opt/etc/script.d/$f
done
fi
# Init scripts runned under app user
if [ -e /opt/etc/appinit/* ]; then
for f in `ls /opt/etc/appinit/*`; do
su app -c "/bin/sh $f"
done
fi
# Permissions for app on /srv
if [ ! -e /srv/.chowned ]; then
chown app:app /srv -R
touch /srv/.chowned
chown root:root /srv/.chowned
chmod 644 /srv/.chowned
fi
# User's init script
if [ -e /srv/app/init.sh ]; then
echo "Starting /srv/app/init.sh .."
chmod 755 /srv/app/init.sh
su app -c /srv/app/init.sh
fi
if [ -e /srv/init.sh ]; then
echo "Starting /srv/init.sh .."
chmod 755 /srv/init.sh
su app -c /srv/init.sh
fi
# Custom /etc/ssl/openssl.cnf
if [ -e /srv/conf/openssl.cnf ]; then
rm /etc/ssl/openssl.cnf
cp /srv/conf/openssl.cnf /etc/ssl/openssl.cnf
fi
# Fix ssh-copy-id helper
if [ ! -e /srv/.ssh/authorized_keys ]; then
mkdir -p /etc/dropbear/authorized_key
chown app:app /etc/dropbear/authorized_key
ln -s /srv/.ssh/authorized_keys /etc/dropbear/authorized_key
fi
####################
# Default Nginx page
####################
if [ `ls /srv/conf/nginx.d | wc -l` -eq 0 ]; then
echo ".. no nginx configuration found, adding default page"
su app -c "mkdir -p /srv/conf/nginx.d"
su app -c "cp /opt/examples/nginx/default.conf /srv/conf/nginx.d/default.conf"
fi
if [ ! -e /srv/conf/supervisor.d/nginx.conf ]; then
echo ".. nginx configuration not found in supervisor, adding it now"
su app -c "cp /opt/examples/nginx/supervisor.conf /srv/conf/supervisor.d/nginx.conf"
fi
while /bin/true; do
su app -c "supervisord -n -c /etc/supervisor/supervisord.conf"
sleep 5
done