Скрипт автоматической установки p2p-клиента rTorrent с веб-интерейсом web-ui в Ubuntu

Feb 16, 2011 18:18


Запись опубликована в Блоге саратовского админа. Пожалуйста оставляйте свои комментарии тут.


Для установки обязательно необходимо наличие интернет-соединения, т.к. все пакеты для установки будут скачиваться из инета, но для убунтоводов это уже привычно.

Итак, начнем:

1. создадим новый файл и обзовем его, к примеру, rtorrent_installer.sh
поместим внутрь следующее:

#!/bin/sh

apt-get update && apt-get -y install apache2 php5 php5-cgi php5-cli libapache2-mod-php5 php5-common php5-xmlrpc php5-curl libapache2-mod-scgi curl checkinstall subversion build-essential make autoconf autotools-dev automake libcurl4-openssl-dev libtool libsigc++-2.0-dev pkg-config libncurses5-dev libcppunit-dev screen

mkdir -m 777 $HOME/source_rtorrent

source_dir=$HOME/source_rtorrent

cat << EOF >> /etc/apache2/sites-available/default

ServerName *
ServerAdmin rutorrent@localhost
DocumentRoot /var/www/rutorrent
ServerPath /var/www/rutorrent

Options Indexes FollowSymLinks MultiViews
AllowOverride All

ErrorLog /var/log/apache2/www.rutorrent.log
CustomLog /var/log/apache2/www.rutorrent.log common

EOF

echo "SCGIMount /RPC2 127.0.0.1:5000" >> /etc/apache2/httpd.conf
a2dissite default
a2ensite default
a2enmod scgi
/etc/init.d/apache2 restart

cd $source_dir
wget -P $source_dir http://libtorrent.rakshasa.no/downloads/libtorrent-0.12.6.tar.gz && tar -vxzf libtorrent-0.12.6.tar.gz
wget -P $source_dir http://libtorrent.rakshasa.no/downloads/rtorrent-0.8.6.tar.gz && tar -vxzf rtorrent-0.8.6.tar.gz

svn co https://xmlrpc-c.svn.sourceforge.net/svnroot/xmlrpc-c/advanced $source_dir/xmlrpc-c
cd $source_dir/xmlrpc-c
./configure --prefix=/usr
make
make install

cd $source_dir/libtorrent-0.12.6
./configure --prefix=/usr
make
make install

cd $source_dir/rtorrent-0.8.6
./autogen.sh
./configure --with-xmlrpc-c --prefix=/usr
make
make install

cd /var/www
svn co http://rutorrent.googlecode.com/svn/trunk/rutorrent
cd /var/www/rutorrent/plugins
svn co http://rutorrent.googlecode.com/svn/trunk/plugins/cookies
svn co http://rutorrent.googlecode.com/svn/trunk/plugins/create
svn co http://rutorrent.googlecode.com/svn/trunk/plugins/diskspace
svn co http://rutorrent.googlecode.com/svn/trunk/plugins/edit
svn co http://rutorrent.googlecode.com/svn/trunk/plugins/erasedata
svn co http://rutorrent.googlecode.com/svn/trunk/plugins/retrackers
svn co http://rutorrent.googlecode.com/svn/trunk/plugins/tracklabels
svn co http://rutorrent.googlecode.com/svn/trunk/plugins/trafic
chown -R root: /var/www/rutorrent
chmod -R 777 /var/www/rutorrent

echo "Будете ли вы использовать удаленный доступ к веб-интерфейсу?"
remote_read() {
echo -n "Введите y/n: "
remote_check
}
remote_yes() {
cat << EOF > /var/www/rutorrent/.htaccess
order allow,deny
allow from all

AuthUserFile /var/www/rutorrent/.htpasswd
AuthGroupFile /dev/null
AuthName "Please auth"
AuthType Basic
require valid-user

Satisfy all
EOF
}
remote_no() {
cat << EOF > /var/www/rutorrent/.htaccess
order deny,allow
deny from all
allow from 127.0.0.1
EOF
}
remote_check() {
read ans_remote
case $ans_remote in
y) remote_yes
;;
n) remote_no
;;
*) remote_read
;;
esac
}
remote_read

if [ "$ans_remote" = "y" ]; then
echo "nДоступ к веб-интерфейсу rutorrent будет осуществляться по логину и паролю."
htuser_read() {
echo -n "Введите логин пользователя: "
htuser_check
}
htuser_check() {
read htuser
if [ -z $htuser ]; then
htuser_read
fi
}
htuser_read

htpass_read() {
echo -n "Введите пароль пользователя:"
htpass_check
}
htpass_check() {
stty -echo
read htpass
stty echo
echo ""
if [ -z $htpass ]; then
htpass_read
fi
}
htpass_read

htpasswd -cbs /var/www/rutorrent/.htpasswd $htuser $htpass
fi

down_dir_read() {
echo -n "Укажите папку для закачек: "
down_dir_check
}
down_dir_check() {
read down_dir
if [ -z $down_dir ]; then
down_dir_read
fi
}
down_dir_read

mkdir -m 777 -p $down_dir
mkdir -m 777 -p $HOME/rtorrent/session

cat << EOF > $HOME/.rtorrent.rc
port_range = 6881-6991
port_random = no
check_hash = no
directory = $down_dir
session = $HOME/rtorrent/session
http_proxy =
encryption = allow_incoming,enable_retry
upload_rate = 0
download_rate = 0
min_peers = 1
max_peers = 200
min_peers_seed = 1
max_peers_seed = 200
max_uploads = 400
max_uploads_div = 0
max_downloads_div = 0
max_uploads_global = 1000
max_downloads_global = 1000
enable_trackers = yes
max_file_size = -1
use_udp_trackers = yes
dht = auto
dht_port = 6881
scgi_port = 127.0.0.1:5000
execute = {sh,-c,/usr/bin/php /var/www/rutorrent/php/initplugins.php tom &}
EOF

if [ "$ans_remote" = "y" ]; then
cat << EOF > /etc/init.d/rtorrent
#!/bin/sh

ans=$1
case $ans in
start)
/etc/init.d/rtorrentd
;;
stop)
killall -w rtorrent
;;
status)
ps -AF | grep --color=always rtorrent | grep -v grep
;;
adduser)
while [ -z `echo $htuser` ]; do
echo -n "Введите логин пользователя:"
read htuser
echo ""
done

while [ -z `echo $htpass` ]; do
echo -n "Введите пароль пользователя:"
stty -echo
read htpass
stty echo
echo ""
done

htpasswd -bs /var/www/rutorrent/.htpasswd $htuser $htpass
;;
restart)
kill `screen -ls | grep rtorrent | awk -F. '{print $1}'` > /dev/null 2>&1 && /etc/init.d/rtorrentd
;;
*)
echo "Usage: /etc/init.d/rtorrent {start|stop|restart|status|adduser}"
exit 1
;;
esac
EOF
else
cat << EOF > /etc/init.d/rtorrent
#!/bin/sh

ans=$1
case $ans in
start)
/etc/init.d/rtorrentd
;;
stop)
killall -w rtorrent
;;
status)
ps -AF | grep --color=always rtorrent | grep -v grep
;;
restart)
kill `screen -ls | grep rtorrent | awk -F. '{print $1}'` > /dev/null 2>&1 && /etc/init.d/rtorrentd
;;
*)
echo "Usage: /etc/init.d/rtorrent {start|stop|restart|status}"
exit 1
;;
esac
EOF
fi

cat << EOF > /etc/init.d/rtorrentd
#!/bin/sh
screen -A -m -d -S rtorrent /usr/bin/rtorrent -n -o import=$HOME/.rtorrent.rc
EOF

chmod +x /etc/init.d/rtorrent
chmod +x /etc/init.d/rtorrentd

echo "Запускать rtorrent при запуске системы?"
readans2() {
echo -n "Введите y/n: "
ans2_check
}
ans2_yes() {
ln -s /etc/init.d/rtorrentd /etc/rc2.d/S98rtorrentd
}
ans2_no() {
echo ""
}
ans2_check() {
read ans2
case $ans2 in
y)
ans2_yes
;;
n)
ans2_no
;;
*)
readans2
;;
esac
}
readans2

/etc/init.d/rtorrentd

сделаем файл исполняемым
sudo chmod +x rtorrent_installer.sh
2. запускаем инсталляцию
sudo ./rtorrent_installer.sh
и теперь ждём - процесс скачивания, компиляции, установки довольно долгий…

3. теперь примем решение, будем ли мы удаленно управлять нашим торрент-клиентом или нам это не интересно и мы будем только из дому с ним работать

4. если на предыдущий вопрос мы ответили утвердительно, то доступ к веб-интерфейсу управления торрент-клиентом будет запаролен, поэтому на запрос логина вводим логин, на запрос пароля вводим пароль (при вводе символы на экране не отображаются)

5. указываем папку куда по умолчанию сохранять закачки

6. теперь нужно ответить на вопрос хотим ли мы автоматически запускать торрент-клиент при запуске системы или нет

7. теперь можно зайти на веб-интерфейс http://localhost/rutorrent и если в логе вы не увидели ни одной ошибки, как на скрине ниже, значит все работает как надо!

The End!

ЗЫ: Для управления запуском/остановкой и т.д. используйте
/etc/init.d/rtorrent {start|stop|restart|status|adduser}

Скрипт придумал и наваял Aluminium//titan, за что ему всяческие респект и увага. Я тут только переправил на актуальную версию.

homeserver, торрент, ubuntu, Интернет

Previous post Next post
Up