Наваял скрипт автоматической установки rTorrent клиента с веб-интерейсом из исходников.
Обязательно необходимо наличие интернет соединения, т.к. все пакеты для установки будут скачиваться из инета.
Итак начнем:
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
<VirtualHost *:80>
ServerName *
ServerAdmin rutorrent@localhost
DocumentRoot /var/www/rutorrent
ServerPath /var/www/rutorrent
<Directory /var/www/rutorrent/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
</Directory>
ErrorLog /var/log/apache2/www.rutorrent.log
CustomLog /var/log/apache2/www.rutorrent.log common
</VirtualHost>
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.sh2. запускаем инсталляцию
sudo ./rtorrent_installer.shи теперь ждем доволно долгий процесс скачивания, компиляции, установки...
3. теперь примем решение, будем ли мы удаленно управлять нашим торрент-клиентом или нам это не интересно и мы будем только из дому с ним работать
4. если на предидущий вопрос мы ответили утвердительно, то доступ к веб-интерфейсу управления торрент-клиентом будет запаролен, поэтому на запрос логина вводим логин, на запрос пароля вводим пароль (при вводе символы на экране не отображаются)
5. указываем папку куда по-умолчанию сохранять закачки
6. теперь нужно ответить на вопрос хотим ли мы автоматически запускать торрент-клиент при запуске системы или нет
7. теперь можно зайти на веб-интерфейс
http://localhost/rutorrent и если в логе вы не увидели ни одной ошибки как на скрине ниже, значит все работает как надо!
УРА!!! Happy End!===========================
для управления запуском/остановкой и т.д. используйте
/etc/init.d/rtorrent {start|stop|restart|status|adduser}
Пользователь решил продолжить мысль 14 Января 2011, 12:42:55:
подправил скрипт, что б пока не укажешь логин и пароль для доступа к интерфейсу и папку для сохранения закачек скрипт дальше не отработает
Пользователь решил продолжить мысль 14 Января 2011, 21:33:00:
дописал скрипт, что б был выбор будет ли удаленный доступ или нет