diff --git a/README.md b/README.md index 3b0845e8..cbf406d1 100644 --- a/README.md +++ b/README.md @@ -108,6 +108,22 @@ sudo vim /etc/shadowsocks/config.json sudo /etc/init.d/shadowsocks start ``` +### CentOS + +Install the compile tools +```bash +yum install -y gcc automake autoconf libtool make build-essential autoconf libtool gcc +yum install -y curl curl-devel zlib-devel openssl-devel perl perl-devel cpio expat-devel gettext-devel +``` + +Compile and install +```bash +./configure && make +make install +``` +here is the [init script](rpm/SOURCES/etc/init.d/shadowsocks) . +Notice:default config file is /usr/local/etc/shadowsocks.json + ### Linux For Unix-like systems, especially Debian-based systems, diff --git a/rpm/SOURCES/etc/init.d/shadowsocks b/rpm/SOURCES/etc/init.d/shadowsocks new file mode 100644 index 00000000..3f0497b3 --- /dev/null +++ b/rpm/SOURCES/etc/init.d/shadowsocks @@ -0,0 +1,124 @@ +#!/bin/bash +# +# Script to run Shadowsocks in daemon mode at boot time. +# ScriptAuthor: icyboy +# Revision 1.0 - 14th Sep 2013 +#==================================================================== +# Run level information: +# chkconfig: 2345 99 99 +# Description: lightweight secured scoks5 proxy +# processname: ss-server +# Author: Max Lv ; +# Run "/sbin/chkconfig --add shadowsocks" to add the Run levels. +#==================================================================== + +#==================================================================== +# Paths and variables and system checks. + +# Source function library +. /etc/rc.d/init.d/functions + +# Check that networking is up. +# +[ ${NETWORKING} ="yes" ] || exit 0 + +# Daemon +NAME=Shadowsocks-Server +DAEMON=/usr/local/bin/ss-server + +# Path to the configuration file. +# +CONF=/usr/local/etc/shadowsocks.json + +#USER="nobody" +#GROUP="nobody" + +# Take care of pidfile permissions +mkdir /var/run/$NAME 2>/dev/null || true +#chown "$USER:$GROUP" /var/run/$NAME + +# Check the configuration file exists. +# +if [ ! -f $CONF ] ; then +echo "The configuration file cannot be found!" +exit 0 +fi + +# Path to the lock file. +# +LOCK_FILE=/var/lock/subsys/shadowsocks + +# Path to the pid file. +# +PID=/var/run/shadowsocks/shadowsocks.pid + + +#==================================================================== + +#==================================================================== +# Run controls: + +RETVAL=0 + +# Start shadowsocks as daemon. +# +start() { +if [ -f $LOCK_FILE ]; then +echo "$NAME is already running!" +exit 0 +else +echo -n $"Starting ${NAME}: " +#daemon --check $DAEMON --user $USER "$DAEMON -f $PID -c $CONF > /dev/null" +daemon $DAEMON -c $CONF -f $PID +fi + +RETVAL=$? +[ $RETVAL -eq 0 ] && success +echo +[ $RETVAL -eq 0 ] && touch $LOCK_FILE +return $RETVAL +} + + +# Stop shadowsocks. +# +stop() { +echo -n $"Shutting down ${NAME}: " +killproc -p ${PID} +RETVAL=$? +[ $RETVAL -eq 0 ] +rm -f $LOCK_FILE +rm -f ${PID} +echo +return $RETVAL +} + +# See how we were called. +case "$1" in +start) +start +;; +stop) +stop +;; +restart) +stop +start +;; +condrestart) +if [ -f $LOCK_FILE ]; then +stop +start +RETVAL=$? +fi +;; +status) +status $DAEMON +RETVAL=$? +;; +*) +echo $"Usage: $0 {start|stop|restart|condrestart|status}" +RETVAL=1 +esac + +exit $RETVAL