mirror of
https://github.com/haiwen/seafile-admin-docs.git
synced 2025-12-25 18:22:48 +00:00
565 lines
14 KiB
Markdown
565 lines
14 KiB
Markdown
# Start Seafile at System Bootup
|
|
|
|
## For systems running systemd
|
|
|
|
* For example Debian 8 and newer, Linux Ubuntu 15.04 and newer
|
|
|
|
Create systemd service files, change **${seafile_dir}** to your
|
|
**seafile** installation location and **seafile** to user, who runs
|
|
**seafile** (if appropriate). Then you need to reload systemd's daemons:
|
|
**systemctl daemon-reload**.
|
|
|
|
### Create systemd service file /etc/systemd/system/seafile.service
|
|
|
|
```
|
|
sudo vim /etc/systemd/system/seafile.service
|
|
|
|
```
|
|
|
|
The content of the file is:
|
|
|
|
```
|
|
[Unit]
|
|
Description=Seafile
|
|
# add mysql.service or postgresql.service depending on your database to the line below
|
|
After=network.target
|
|
|
|
[Service]
|
|
Type=forking
|
|
ExecStart=${seafile_dir}/seafile-server-latest/seafile.sh start
|
|
ExecStop=${seafile_dir}/seafile-server-latest/seafile.sh stop
|
|
LimitNOFILE=infinity
|
|
User=seafile
|
|
Group=seafile
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
|
|
```
|
|
|
|
### Create systemd service file /etc/systemd/system/seahub.service
|
|
|
|
```
|
|
sudo vim /etc/systemd/system/seahub.service
|
|
|
|
```
|
|
|
|
The content of the file is (please dont forget to change it if you want to run fastcgi):
|
|
|
|
```
|
|
[Unit]
|
|
Description=Seafile hub
|
|
After=network.target seafile.service
|
|
|
|
[Service]
|
|
Type=forking
|
|
# change start to start-fastcgi if you want to run fastcgi
|
|
ExecStart=${seafile_dir}/seafile-server-latest/seahub.sh start
|
|
ExecStop=${seafile_dir}/seafile-server-latest/seahub.sh stop
|
|
User=seafile
|
|
Group=seafile
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
|
|
```
|
|
|
|
### Create systemd service file /etc/systemd/system/seafile-client.service (optional)
|
|
|
|
You need to create this service file only if you have **seafile**
|
|
console client and you want to run it on system boot.
|
|
|
|
```
|
|
sudo vim /etc/systemd/system/seafile-client.service
|
|
|
|
```
|
|
|
|
The content of the file is:
|
|
|
|
```
|
|
[Unit]
|
|
Description=Seafile client
|
|
# Uncomment the next line you are running seafile client on the same computer as server
|
|
# After=seafile.service
|
|
# Or the next one in other case
|
|
# After=network.target
|
|
|
|
[Service]
|
|
Type=oneshot
|
|
ExecStart=/usr/bin/seaf-cli start
|
|
ExecStop=/usr/bin/seaf-cli stop
|
|
RemainAfterExit=yes
|
|
User=seafile
|
|
Group=seafile
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
|
|
```
|
|
|
|
### Enable service start on system boot
|
|
|
|
```
|
|
sudo systemctl enable seafile.service
|
|
sudo systemctl enable seahub.service
|
|
sudo systemctl enable seafile-client.service # optional
|
|
|
|
```
|
|
|
|
## For systems using another init system than systemd
|
|
|
|
## Ubuntu 14.10 and older
|
|
|
|
On Ubuntu without systemd we make use of the
|
|
[/etc/init.d/](https://help.ubuntu.com/community/UbuntuBootupHowto)
|
|
scripts to start seafile/seahub at system boot.
|
|
|
|
### Create a script **/etc/init.d/seafile-server**
|
|
|
|
```
|
|
sudo vim /etc/init.d/seafile-server
|
|
|
|
```
|
|
|
|
The content of this script is: (You need to modify the value of **user**
|
|
and **seafile_dir** accordingly)
|
|
|
|
```
|
|
#!/bin/bash
|
|
### BEGIN INIT INFO
|
|
# Provides: seafile-server
|
|
# Required-Start: $remote_fs $syslog
|
|
# Required-Stop: $remote_fs $syslog
|
|
# Default-Start: 2 3 4 5
|
|
# Default-Stop: 0 1 6
|
|
# Short-Description: Seafile server
|
|
# Description: Start Seafile server
|
|
### END INIT INFO
|
|
|
|
# Change the value of "user" to your linux user name
|
|
user=haiwen
|
|
|
|
# Change the value of "seafile_dir" to your path of seafile installation
|
|
# usually the home directory of $user
|
|
seafile_dir=/data/haiwen
|
|
script_path=${seafile_dir}/seafile-server-latest
|
|
seafile_init_log=${seafile_dir}/logs/seafile.init.log
|
|
seahub_init_log=${seafile_dir}/logs/seahub.init.log
|
|
|
|
# Change the value of fastcgi to false if fastcgi is not used
|
|
fastcgi=true
|
|
# Set the port of fastcgi, default is 8000. Change it if you need different.
|
|
fastcgi_port=8000
|
|
#
|
|
# Write a polite log message with date and time
|
|
#
|
|
echo -e "\n \n About to perform $1 for seafile at `date -Iseconds` \n " >> ${seafile_init_log}
|
|
echo -e "\n \n About to perform $1 for seahub at `date -Iseconds` \n " >> ${seahub_init_log}
|
|
case "$1" in
|
|
start)
|
|
sudo -u ${user} ${script_path}/seafile.sh ${1} >> ${seafile_init_log}
|
|
if [ $fastcgi = true ];
|
|
then
|
|
sudo -u ${user} ${script_path}/seahub.sh ${1}-fastcgi ${fastcgi_port} >> ${seahub_init_log}
|
|
else
|
|
sudo -u ${user} ${script_path}/seahub.sh ${1} >> ${seahub_init_log}
|
|
fi
|
|
;;
|
|
restart)
|
|
sudo -u ${user} ${script_path}/seafile.sh ${1} >> ${seafile_init_log}
|
|
if [ $fastcgi = true ];
|
|
then
|
|
sudo -u ${user} ${script_path}/seahub.sh ${1}-fastcgi ${fastcgi_port} >> ${seahub_init_log}
|
|
else
|
|
sudo -u ${user} ${script_path}/seahub.sh ${1} >> ${seahub_init_log}
|
|
fi
|
|
;;
|
|
stop)
|
|
sudo -u ${user} ${script_path}/seahub.sh ${1} >> ${seahub_init_log}
|
|
sudo -u ${user} ${script_path}/seafile.sh ${1} >> ${seafile_init_log}
|
|
;;
|
|
*)
|
|
echo "Usage: /etc/init.d/seafile-server {start|stop|restart}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
```
|
|
|
|
**Note:** If you are using local mysql server, please replace `# Required-Start: $remote_fs $syslog` with `# Required-Start: $remote_fs $syslog mysql`.
|
|
|
|
### Make the seafile-sever script executable
|
|
|
|
```
|
|
sudo chmod +x /etc/init.d/seafile-server
|
|
|
|
```
|
|
|
|
### Add seafile-server to rc.d
|
|
|
|
```
|
|
sudo update-rc.d seafile-server defaults
|
|
|
|
```
|
|
|
|
**Note:** Don't forget to update the value of **script_path** later if you update
|
|
your seafile server.
|
|
|
|
## Other Debian based Distributions
|
|
|
|
### Create a script **/etc/init.d/seafile-server**
|
|
|
|
```
|
|
sudo vim /etc/init.d/seafile-server
|
|
|
|
```
|
|
|
|
The content of this script is: (You need to modify the value of **user**
|
|
and **seafile_dir** accordingly)
|
|
|
|
```
|
|
#!/bin/sh
|
|
|
|
### BEGIN INIT INFO
|
|
# Provides: seafile-server
|
|
# Required-Start: $local_fs $remote_fs $network
|
|
# Required-Stop: $local_fs
|
|
# Default-Start: 2 3 4 5
|
|
# Default-Stop: 0 1 6
|
|
# Short-Description: Starts Seafile Server
|
|
# Description: starts Seafile Server
|
|
### END INIT INFO
|
|
|
|
# Change the value of "user" to linux user name who runs seafile
|
|
user=haiwen
|
|
|
|
# Change the value of "seafile_dir" to your path of seafile installation
|
|
# usually the home directory of $user
|
|
seafile_dir=/data/haiwen
|
|
script_path=${seafile_dir}/seafile-server-latest
|
|
seafile_init_log=${seafile_dir}/logs/seafile.init.log
|
|
seahub_init_log=${seafile_dir}/logs/seahub.init.log
|
|
|
|
# Change the value of fastcgi to true if fastcgi is to be used
|
|
fastcgi=false
|
|
# Set the port of fastcgi, default is 8000. Change it if you need different.
|
|
fastcgi_port=8000
|
|
|
|
#
|
|
# Write a polite log message with date and time
|
|
#
|
|
echo -e "\n \n About to perform $1 for seafile at `date -Iseconds` \n " >> ${seafile_init_log}
|
|
echo -e "\n \n About to perform $1 for seahub at `date -Iseconds` \n " >> ${seahub_init_log}
|
|
|
|
case "$1" in
|
|
start)
|
|
sudo -u ${user} ${script_path}/seafile.sh ${1} >> ${seafile_init_log}
|
|
if [ $fastcgi = true ];
|
|
then
|
|
sudo -u ${user} ${script_path}/seahub.sh ${1}-fastcgi ${fastcgi_port} >> ${seahub_init_log}
|
|
else
|
|
sudo -u ${user} ${script_path}/seahub.sh ${1} >> ${seahub_init_log}
|
|
fi
|
|
;;
|
|
restart)
|
|
sudo -u ${user} ${script_path}/seafile.sh ${1} >> ${seafile_init_log}
|
|
if [ $fastcgi = true ];
|
|
then
|
|
sudo -u ${user} ${script_path}/seahub.sh ${1}-fastcgi ${fastcgi_port} >> ${seahub_init_log}
|
|
else
|
|
sudo -u ${user} ${script_path}/seahub.sh ${1} >> ${seahub_init_log}
|
|
fi
|
|
;;
|
|
stop)
|
|
sudo -u ${user} ${script_path}/seahub.sh ${1} >> ${seahub_init_log}
|
|
sudo -u ${user} ${script_path}/seafile.sh ${1} >> ${seafile_init_log}
|
|
;;
|
|
*)
|
|
echo "Usage: /etc/init.d/seafile-server {start|stop|restart}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
```
|
|
|
|
**Note**:
|
|
|
|
1. If you want to start seahub in fastcgi, just change the **fastcgi**
|
|
variable to **true**
|
|
2. If you deployed Seafile with MySQL, append "mysql" to the
|
|
Required-Start line:
|
|
|
|
|
|
```
|
|
# Required-Start: $local_fs $remote_fs $network mysql
|
|
|
|
```
|
|
|
|
### Add Directory for Logfiles
|
|
|
|
```
|
|
mkdir /path/to/seafile/dir/logs
|
|
|
|
```
|
|
|
|
### Make the seafile-sever script executable
|
|
|
|
```
|
|
sudo chmod +x /etc/init.d/seafile-server
|
|
|
|
```
|
|
|
|
### Add seafile-server to rc.d
|
|
|
|
```
|
|
sudo update-rc.d seafile-server defaults
|
|
|
|
```
|
|
|
|
### Done
|
|
|
|
Don't forget to update the value of **seafile_dir** later if you update
|
|
your seafile server.
|
|
|
|
## RHEL/CentOS
|
|
|
|
On RHEL/CentOS, the script
|
|
[/etc/rc.local](http://www.centos.org/docs/5/html/Installation_Guide-en-US/s1-boot-init-shutdown-run-boot.html)
|
|
is executed by the system at bootup, so we start seafile/seahub there.
|
|
|
|
* Locate your python executable (python 2.6 or 2.7)
|
|
|
|
|
|
```
|
|
which python2.6 # or "which python2.7"
|
|
|
|
```
|
|
|
|
* In /etc/rc.local, add the directory of python2.6(2.7) to **PATH**,
|
|
and add the seafile/seahub start command
|
|
|
|
|
|
```
|
|
`
|
|
# Assume the python 2.6(2.7) executable is in "/usr/local/bin"
|
|
PATH=$PATH:/usr/local/bin/
|
|
|
|
# Change the value of "user" to your linux user name
|
|
user=haiwen
|
|
|
|
# Change the value of "seafile_dir" to your path of seafile installation
|
|
# usually the home directory of $user
|
|
seafile_dir=/data/haiwen
|
|
script_path=${seafile_dir}/seafile-server-latest
|
|
|
|
sudo -u ${user} ${script_path}/seafile.sh start > /tmp/seafile.init.log 2>&1
|
|
sudo -u ${user} ${script_path}/seahub.sh start > /tmp/seahub.init.log 2>&1
|
|
|
|
```
|
|
|
|
**Note**: If you want to start seahub in fastcgi, just change the
|
|
**"seahub.sh start"** in the last line above to **"seahub.sh
|
|
start-fastcgi"**
|
|
|
|
* Done. Don't forget to update the value of **seafile_dir** later if
|
|
you update your seafile server.
|
|
|
|
## RHEL/CentOS (run as service)
|
|
|
|
On RHEL/CentOS we make use of the /etc/init.d/ scripts to start
|
|
seafile/seahub at system boot as service.
|
|
|
|
### Create a file **/etc/sysconfig/seafile**
|
|
|
|
```
|
|
# Change the value of "user" to your linux user name
|
|
user=haiwen
|
|
|
|
# Change the value of "seafile_dir" to your path of seafile installation
|
|
# usually the home directory of $user
|
|
seafile_dir=/data/haiwen
|
|
script_path=${seafile_dir}/seafile-server-latest
|
|
seafile_init_log=${seafile_dir}/logs/seafile.init.log
|
|
seahub_init_log=${seafile_dir}/logs/seahub.init.log
|
|
|
|
# Change the value of fastcgi to true if fastcgi is to be used
|
|
fastcgi=false
|
|
|
|
# Set the port of fastcgi, default is 8000. Change it if you need different.
|
|
fastcgi_port=8000
|
|
|
|
```
|
|
|
|
### Create a script **/etc/init.d/seafile**
|
|
|
|
```
|
|
#!/bin/bash
|
|
#
|
|
# seafile
|
|
|
|
#
|
|
# chkconfig: - 68 32
|
|
# description: seafile
|
|
|
|
# Source function library.
|
|
. /etc/init.d/functions
|
|
|
|
# Source networking configuration.
|
|
. /etc/sysconfig/network
|
|
|
|
if [ -f /etc/sysconfig/seafile ];then
|
|
. /etc/sysconfig/seafile
|
|
else
|
|
echo "Config file /etc/sysconfig/seafile not found! Bye."
|
|
exit 200
|
|
fi
|
|
|
|
RETVAL=0
|
|
|
|
start() {
|
|
# Start daemons.
|
|
echo -n $"Starting seafile: "
|
|
ulimit -n 30000
|
|
su - ${user} -c"${script_path}/seafile.sh start >> ${seafile_init_log} 2>&1"
|
|
RETVAL=$?
|
|
echo
|
|
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/seafile
|
|
return $RETVAL
|
|
}
|
|
|
|
stop() {
|
|
echo -n $"Shutting down seafile: "
|
|
su - ${user} -c"${script_path}/seafile.sh stop >> ${seafile_init_log} 2>&1"
|
|
RETVAL=$?
|
|
echo
|
|
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/seafile
|
|
return $RETVAL
|
|
}
|
|
|
|
#
|
|
# Write a polite log message with date and time
|
|
#
|
|
echo -e "\n \n About to perform $1 for seafile at `date -Iseconds` \n " >> ${seafile_init_log}
|
|
|
|
# See how we were called.
|
|
case "$1" in
|
|
start)
|
|
start
|
|
;;
|
|
stop)
|
|
stop
|
|
;;
|
|
restart|reload)
|
|
stop
|
|
start
|
|
RETVAL=$?
|
|
;;
|
|
*)
|
|
echo $"Usage: $0 {start|stop|restart}"
|
|
RETVAL=3
|
|
esac
|
|
|
|
exit $RETVAL
|
|
|
|
```
|
|
|
|
### Create a script **/etc/init.d/seahub**
|
|
|
|
```
|
|
#!/bin/bash
|
|
#
|
|
# seahub
|
|
|
|
#
|
|
# chkconfig: - 69 31
|
|
# description: seahub
|
|
|
|
# Source function library.
|
|
. /etc/init.d/functions
|
|
|
|
# Source networking configuration.
|
|
. /etc/sysconfig/network
|
|
|
|
if [ -f /etc/sysconfig/seafile ];then
|
|
. /etc/sysconfig/seafile
|
|
else
|
|
echo "Config file /etc/sysconfig/seafile not found! Bye."
|
|
exit 200
|
|
fi
|
|
|
|
RETVAL=0
|
|
|
|
start() {
|
|
# Start daemons.
|
|
echo -n $"Starting seahub: "
|
|
ulimit -n 30000
|
|
if [ $fastcgi = true ];
|
|
then
|
|
su - ${user} -c"${script_path}/seahub.sh start-fastcgi ${fastcgi_port} >> ${seahub_init_log} 2>&1"
|
|
else
|
|
su - ${user} -c"${script_path}/seahub.sh start >> ${seahub_init_log} 2>&1"
|
|
fi
|
|
RETVAL=$?
|
|
echo
|
|
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/seahub
|
|
return $RETVAL
|
|
}
|
|
|
|
stop() {
|
|
echo -n $"Shutting down seahub: "
|
|
su - ${user} -c"${script_path}/seahub.sh stop >> ${seahub_init_log} 2>&1"
|
|
RETVAL=$?
|
|
echo
|
|
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/seahub
|
|
return $RETVAL
|
|
}
|
|
|
|
#
|
|
# Write a polite log message with date and time
|
|
#
|
|
echo -e "\n \n About to perform $1 for seahub at `date -Iseconds` \n " >> ${seahub_init_log}
|
|
|
|
# See how we were called.
|
|
case "$1" in
|
|
start)
|
|
start
|
|
;;
|
|
stop)
|
|
stop
|
|
;;
|
|
restart|reload)
|
|
stop
|
|
start
|
|
RETVAL=$?
|
|
;;
|
|
*)
|
|
echo $"Usage: $0 {start|stop|restart}"
|
|
RETVAL=3
|
|
esac
|
|
|
|
exit $RETVAL
|
|
|
|
```
|
|
|
|
Next, enable services:
|
|
|
|
```
|
|
chmod 550 /etc/init.d/seafile
|
|
chmod 550 /etc/init.d/seahub
|
|
chkconfig --add seafile
|
|
chkconfig --add seahub
|
|
chkconfig seahub on
|
|
chkconfig seafile on
|
|
|
|
```
|
|
|
|
and run:
|
|
|
|
```
|
|
service seafile start
|
|
service seahub start
|
|
|
|
```
|
|
|
|
|