# Start automatically on boot

```Git-Auto-Deploy``` can be automatically started at boot time using various techniques. Below you'll find a couple of suggested approaches with instructions.

The following instructions assumes that you are running ```Git-Auto-Deploy``` from a clone of this repository. In such a case, ```Git-Auto-Deploy``` is started by invoking ```python -m``` and referencing the ```gitautodeploy``` python module which is found in the cloned repository. Such a command can look like ```python -m /path/to/Git-Auto-Deploy/gitautodeploy --daemon-mode```.

If you have used any of the alternative installation methods (install with pip or as a debian package), you will instead start ```Git-Auto-Deploy``` using a installed executable. ```Git-Auto-Deploy``` would then be started using a command like ```git-auto-deploy --daemon-mode``` instead. If you have installed ```Git-Auto-Deploy``` in this way, you will need to modify the paths and commands used in the instructions below.

## Crontab
The easiest way to configure your system to automatically start ```Git-Auto-Deploy``` after a reboot is using crontab. Open crontab in edit mode using ```crontab -e``` and add the following:

    @reboot /usr/bin/python -m /path/to/Git-Auto-Deploy/gitautodeploy --daemon-mode --quiet

## Debian and Sys-V like init system.

Copy the sample init script into ```/etc/init.d/``` and make it executable.

    cp platforms/linux/initfiles/debianLSBInitScripts/git-auto-deploy /etc/init.d/
    chmod 755 /etc/init.d/git-auto-deploy

**Important:** The init script assumes that you have ```Git-Auto-Deploy``` installed in ```/opt/Git-Auto-Deploy/``` and that the ```pidfilepath``` config option is set to ```/var/run/git-auto-deploy.pid```. If this is not the case, edit the ```git-auto-deploy``` init script and modify ```DAEMON```, ```PWD``` and ```PIDFILE```.

**Important:** The init script will run GAD as the ```root``` user by default, which is convenient but not secure. The recommended way to run GAD is to set up a separate user and modify the init script to run GAD as that user. When running GAD as a user other than root, you will need to make sure that the correct permissions are set on all directories and files that GAD requires access to (such as the path specified in the variable PIDFILE and LOGFIE in the init script).

Now you need to add the correct symbolic link to your specific runlevel dir to get the script executed on each start up. On Debian_Sys-V just do;

    update-rc.d git-auto-deploy defaults

Fire it up and verify;

    service git-auto-deploy start
    service git-auto-deploy status

## Systemd

Copy the sample systemd service file ```git-auto-deploy.service``` into ```/etc/systemd/system```;

    cp platforms/linux/initfiles/systemd/git-auto-deploy.service /etc/systemd/system

Create the user and group specified in git-auto-deploy.service (```www-data```) if those do not exist already.

    useradd -U www-data

This init script assumes that you have ```Git-Auto-Deploy``` installed in ```/opt/Git-Auto-Deploy/```. If this is not the case, edit the ```git-auto-deploy.service``` service file and modify ```ExecStart``` and ```WorkingDirectory```.

Now, reload daemons and fire ut up;

    systemctl daemon-reload
    systemctl start git-auto-deploy

Make is start automatically on system boot;

    systemctl enable gitautodeploy
    
## CentOS 7

Have a look at [this script](../platforms/linux/initfiles/centos) which was kindly provided by https://github.com/olipo186/Git-Auto-Deploy/issues/192. Usage:

Start:

    GitAutoDeploy_Service.sh start

Stop:

    GitAutoDeploy_Service.sh stop

Stop:

    GitAutoDeploy_Service.sh restart

