CentOS上运行pyLoad

pyLoad是一个用python编写的网盘下载工具,虽然不如jDownloader支持的网盘多,但是在系统资源消耗上要低很多(~5-10M),并且有用ajax编写的web管理界面,作为服务器下载软件是很不错的选择。

pyLoad 的安装比较复杂,特别是对于CentOS/RHEL更是如此,因为CentOS的yum是基于python 2.4的,而pyLoad要求的最低版本是2.6,因此需要在服务器上装两套python,所幸大部分的python2.6都可以通过rpm包的形式安装。

安装python 2.6需要添加EPEL(Extra Packages for Enterprise Linux)的源:

32位:

rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm

安装好之后修改/etc/yum.repos.d/epel-testing,把base段中的enabled值改为1,然后通过yum安装软件包:

yum install js libtiff-devel python26 python26-crypto gmp libffi libtiff python26-libs python26-imaging lcms python26-devel

还有两个需要从源码安装。

tesseract:http://code.google.com/p/tesseract-ocr/downloads/list

下载后解压,

configure && make && make install

pycurl:http://pycurl.sourceforge.net/download/

这个比较令人头痛,因为编译最新的版本需要libcurl>=7.19.0,而CentOS源里面的是7.15.4。

首先卸载掉系统里面的curl:

yum remove curl

然后下载libcurl:http://curl.haxx.se/libcurl/,

./configure && make && make install

再下载pycurl,解压,python26 setup.py install。

准备就绪之后可以测试下系统是否满足要求:python26 systemCheck.py (用root执行)

如果显示No Problems detected, pyLoadCore should work fine.和No Problems detected, Webinterface should work fine.就可以继续了。

运行python26 pyLoadCore.py -s进行设置,基本上按默认的来就可以了。

如果是是直接访问服务器端口的话运行python26 pyLoadCore.py然后用浏览器访问http://myhost:8000就可以了。要做成反向代理(比如http://myhost/pyload)的话还要做一些修改:

nginx配置文件增加

location /pyload/
proxy\_pass http://127.0.0.1:8000/;
proxy\_set\_header Host $http\_host;
proxy\_redirect http://myhost /pyload;
auth\_basic off;
}

然后把以下内容存为脚本,在pyload目录执行一次:

#!/bin/sh
sed -i -e 's/ src="{{/ src="..{{/g' module/web/templates/default/\*.html
sed -i -e 's/ src="// src="..//g' module/web/templates/default/\*.html
sed -i -e 's/ href="{{/ href="..{{/g' module/web/templates/default/\*.html
sed -i -e 's/ href="// href="..//g' module/web/templates/default/\*.html
sed -i -e "s/ href={%/ href=../{%/g" module/web/templates/default/\*.html
sed -i -e "s/ href='{%/ href='../{%/g" module/web/templates/default/\*.html

sed -i -e 's//admin" //admin/" /g' module/web/templates/default/base.html
sed -i -e 's//logout" //logout/" /g' module/web/templates/default/base.html
mv module/web/templates/default/home.html module/web/templates/default/home.tmp
mv module/web/templates/default/login.html module/web/templates/default/login.tmp
mv module/web/templates/default/info.html module/web/templates/default/info.tmp
sed -i -e "s/extends 'default/base.html'/extends 'default/base-subdir.html'/g" module/web/templates/default/\*.html
mv module/web/templates/default/home.tmp module/web/templates/default/home.html
mv module/web/templates/default/login.tmp module/web/templates/default/login.html
mv module/web/templates/default/info.tmp module/web/templates/default/info.html
cp -p module/web/templates/default/base.html module/web/templates/default/base-subdir.html
sed -i -e 's/"../"./g' module/web/templates/default/base.html
sed -i -e 's/"../"./g' module/web/templates/default/home.html

sed -i -e "s/ src='{{/ src='..{{/g" module/web/templates/default/\*.js
sed -i -e "s/ src='// src='..//g" module/web/templates/default/\*.js
sed -i -e "s/url: '//url: '..//g" module/web/templates/default/\*.js

sed -i -e 's/url(/media/default/ url(../g' module/web/media/default/css/\*.css
sed -i -e 's/"/json//"../json//g' module/web/media/default/css/\*.css

sed -i -e 's/"/json//"../json//g' module/web/templates/default/\*.js
sed -i -e 's/"/json//"../json//g' module/web/templates/default/\*.html
sed -i -e "s/'/json//'../json//g" module/web/templates/default/\*.js
sed -i -e "s/'/json//'../json//g" module/web/templates/default/\*.html

sed -i -e "s/'/json//'../json//g" module/web/media/js/\*.js
sed -i -e "s/"/json//"../json//g" module/web/media/js/\*.js
sed -i -e "s/'/api//'../api//g" module/web/media/js/\*.js
sed -i -e "s/"/api//"../api//g" module/web/media/js/\*.js
sed -i -e "s/'/media//'../media//g" module/web/media/js/\*.js
sed -i -e "s/"/media//"../media//g" module/web/media/js/\*.js

sed -i -e 's/redirect("//redirect(".//g' module/web/\*.py

最后是pyload的init脚本,放到/etc/init.d/:

#!/bin/bash
#
# Startup script for pyLoad
#
# Derived from pyLoad init script
# Modified to work on CentOS + compling version, by Tony Zhou
#
# chkconfig: 2345 90 15
# description: pyLoad is a downloader for hoster sites such as rapidshare.
# processname: pyload

# Source function library.
. /etc/init.d/functions

RETVAL=0

python=/usr/bin/python26
program=/home/pyload/pyLoadCore.py
DIRECTORY=/home/pyload
pid=${DIRECTORY}/.pyload/pyload.pid

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[${NETWORKING} = "no"] && exit 0

start() {
if [-e ${pid}]; then
echo -n "pyLoad is already running..."
echo
exit 0
fi

echo -n "Starting pyLoad: "
cd $DIRECTORY
daemon --check pyload --user pyload "$python $program --daemon \> /dev/null 2\>&1 &"
touch /var/lock/subsys/pyLoad
echo
}

stop() {
echo -n "Stopping pyLoad:"
killproc -p ${pid} ${python}
rm -fr /var/lock/subsys/pyload
rm -fr ${pid}
echo
}

# See how we were called.
case "$1" in
start)
start
;;

stop)
stop
;;

restart|reload)
stop
start
;;

status)
status pyLoad
;;
\*)

echo -n "Usage: pyLoad {start|stop|restart|reload|status}
"
RETVAL=1
esac
exit $RETVAL

chkconfig pyload on,重启。

参考:

http://wl500g.info/showthread.php?t=21844

http://forum.pyload.org/viewtopic.php?f=13&t=624

标签: ,

更新时间: