自建云盘系列——Pydio (原AjaXplorer)

Pydio、Seafile、NextCloud(OwnCloud),我感觉来说,目前市场上只有这三者能够同台竞技,其它的免费(或开源)的私人云存储方案大多不够成熟。所以说完了其它两个就不得不提Pydio了,当然之后还有些甜点级别的会介绍下。

Pydio是纯正的外国血统,所以……貌似汉化好像不太完全,之前玩的时候好像总有些没翻译的地方,不知道新版本是啥情况。它的话和NextCloud(OwnCloud)倒是有点像,有很多插件支持,虽然不少都是一般人用不着的,另外,它除了社区版外还是有企业版的,很贵,真的贵_(:з」∠)_,而且不像Seafile一样有几个用户内是免费的,所以这次测试的也是社区版。

一.下载

官方下载页面:https://pydio.com/en/get-pydio     不过貌似我今天看的时候官网在维护(????),运气爆棚……不过只是简单的加了个div,被我ublock origin直接咔擦掉了

另外官方页面会让你填表,虽然不填也能直接下载,但是,如果你们懒得访问的话也可以直接用这个地址下载   https://download.pydio.com/pub/core/archives/pydio-core-8.0.0.tar.gz

二.安装

对了,Pydio提供基于RPM的一键安装,不过还是那句话,这种一键安装比较"dirty",我也没奢侈到一台机器只跑这一个服务,所以,看你需求吧,我就单纯介绍下

①依次装下,epel, scl和remi 负责提供一些需要的软件包,没注释掉的是Centos6的,如果是7或者RedHat的请仔细切换

yum install epel-release scl-utils
yum install centos-release-scl
#RedHat7
#yum-config-manager --enable rhel-server-rhscl-7-rpms
#Centos6
rpm -Uvh https://www.softwarecollections.org/en/scls/remi/php56more/epel-6-x86_64/download/remi-php56more-epel-6-x86_64.noarch.rpm
rpm -Uvh https://download.pydio.com/pub/linux/centos/6/pydio-release-1-1.el6.noarch.rpm
#Centos7
#rpm -Uvh https://www.softwarecollections.org/en/scls/remi/php56more/epel-7-x86_64/download/remi-php56more-epel-7-x86_64.noarch.rpm 
#rpm -Uvh https://download.pydio.com/pub/linux/centos/7/pydio-release-1-1.el7.centos.noarch.rpm

这样就软件源的准备就完成了,接下来可以一波yum了

②Pydio核心以及插件的安装

yum clean all
yum update
yum install pydio-core
 
#请自行替换pluginName为插件名,也可以用pydio-all安装全部插件
yum install pydio-plugin-pluginName
yum install pydio-all

③如果需要升级的话请参照官方说明——> 传送门

好了,讲完了基于RPM的安装我们回到正常的流程,上传之前下载的程序包,解压然后一波mv,之后就是修改所有者咯,这些不多讲,当然也可以在服务器上下载

cd /path/to/siteroot
wget https://download.pydio.com/pub/core/archives/pydio-core-8.0.0.tar.gz
tar xzf pydio-core-8.0.0.tar.gz
mv pydio-core-8.0.0/* .
 
#虽然我们是Nginx环境,不需要htaccess,不过还是留下来吧
mv pydio-core-8.0.0/.htaccess .
rm -rf pydio-core-8.0.0
chown -R www:www *

接着访问域名就行,然后我们会看到一个安装环境的诊断,我这儿有些小问题

不过还是完全不在意

因为第一个关乎你的数据安全,在Apache下这个会默认由.htaccess配置,Nginx下只能手动咯,所以这部分我们把Nginx的vhost配置修改一波

在你网站的vhost配置文件中加入如下内容,部分请自行修改,还有啥HTTPS之类也配了吧,虽然我OneInStack创建的时候就有了,修改完记得重启Nginx

#增大上传文件大小
client_max_body_size 20G;
client_body_buffer_size 128k;
 
#防止隐藏Frame攻击
add_header X-Frame-Options "SAMEORIGIN";
 
keepalive_requests10;
keepalive_timeout 60 60;
 
#把请求重定向到index.php
if (!-e $request_filename){
 rewrite ^/data/public/([a-zA-Z0-9_-]+)$ /public/$1?;
 rewrite ^(.*)$ /index.php last;
}
 
#目录访问安全设置
location ~* ^/(?:\.|conf|data/(?:files|personal|logs|plugins|tmp|cache)|plugins/editor.zoho/agent/files) {
 deny all;
}
 
location ~ \.php$ {
 #这儿我修改过,请参照原来的
 fastcgi_pass unix:/tmp/php-cgi.sock;
 include fastcgi.conf;
 try_files $uri =404;
}
 
#缓存设置
location ~* \.(ico|css|js)$ {
 expires 7d;
 add_header Pragma public;
 add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}

第二个要求PHP启用CLI模式,不过由于Pydio默认只认/usr/bin/php,所以你装在其它地方它没法检测出来

第三个是Session的保存目录,你可以修改,不过好像默认不配置的话会保存在/tmp,建议可以修改下php.ini中的session.save_path = "/tmp" 一般默认有,去掉注释就好

第四个是PHP的输出缓存,我建议你不要在php.ini里修改,而是在你安装pydio的目录下创建.user.ini文件并加入如下内容

#vi .user.ini
max_file_uploads = 20000
post_max_size = 20G
upload_max_filesize = 20G
memory_limit=512M
mbstring.func_overload=0
always_populate_raw_post_data=-1
default_charset='UTF-8'
output_buffering=Off

第五个是服务器的字符编码问题,这个我建议要处理下,否则容易出乱码,不过它好像有些时候即使正确也检测不出来……

vi /etc/sysconfig/i18n
 
#修改为如下
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"

好了,刷新,然后点击开始安装,我们会看到如下

然后就是惯例的安装填空了,基本没啥问题,稍等片刻我们就能跳转到登陆界面,美滋滋

额,进去马上大吃一斤,这绝逼是我熟悉的Pydio,这种一片英文掺着几句中文的感觉,还是那个味……第一次看到吓得我以为选错了语言

三.配置与优化

好吧,到这儿其实已经安装完了,但是,Pydio还有很多插件,我就不细讲了,有个叫Pydio Booster的倒是不能错过,这个算是Pydio的增强组件,用于提供WebSocket来跳过PHP的限制以及增强性能

下载地址:https://download.pydio.com/pub/booster/release/1.2.0/linux_amd64/pydio

其它版本自己调到这个地址的上级目录去翻,我就不在这记录了

首先我们需要访问https://你的Pydio域名/settings/parameters/core.mq   翻到页面下方生成API密钥来方便后面使用

密钥生成后会存储在  你的Pydio目录/data/plugins/core.mq/apikey  文件中,自己cat来查看,这是一个密钥对,用冒号分隔

将上面下载的pydio文件放到/usr/bin目录,建议把所有者改成www用户

wget -O /usr/bin/pydio https://download.pydio.com/pub/booster/release/1.2.0/linux_amd64/pydio

chown www:www /usr/bin/pydio

创建个配置文件夹

mkdir /etc/pydio

创建 /etc/pydio/pydioconf  填入如下内容,需要记得替换YOUR_HOSTNAME为你的域名(这个需要全部替换),TOKENP是密钥对的前半部分,TOKENS是后半部分(这个只替换pydioconf里的就行)

{
    "scheduler": {
        "host": "http:\/\/YOUR_HOSTNAME",
        "tokenP": "TOKENP",
        "tokenS": "TOKENS",
        "minutes": 2
    },
    "nsq": {
        "host": "0.0.0.0",
        "port": 4150
    },
    "caddyFilePath": ".\/pydiocaddy"
}

创建 /etc/pydio/pydioconf  填入如下内容

http://127.0.0.1:8090 {
    pydiows /ws {
        pre {
            if {>Cookie} has "AjaXplorer"
             type request
             url http://YOUR_HOSTNAME:YOUR_OPTIONAL_PORT?get_action=keystore_generate_auth_token&device=websocket
             cookie AjaXplorer
             out token
        }
        pre {
             type request
             url http://YOUR_HOSTNAME:YOUR_OPTIONAL_PORT/api/pydio/ws_authenticate?key=TOKENP:TOKENS
             query auth_hash
             query auth_token
             out user
        }
    }
    header /io {
        Access-Control-Allow-Origin http://YOUR_HOSTNAME:YOUR_OPTIONAL_PORT
        Access-Control-Request-Headers *
        Access-Control-Allow-Methods POST
        Access-Control-Allow-Headers Range
        Access-Control-Allow-Credentials true
    }
    pydioupload /io {
        pre {
            type node
            out node
        }
        pre {
            if {query} has "minisite_session"
            type request
            url http://YOUR_HOSTNAME:YOUR_OPTIONAL_PORT?get_action=keystore_generate_auth_token&device=upload
            query minisite_session
            cookie AjaXplorer_Shared
            out token
        }
        pre {
            if {query} not_has "minisite_session"
            if {>Cookie} has "AjaXplorer="
            type request
            url http://YOUR_HOSTNAME:YOUR_OPTIONAL_PORT?get_action=keystore_generate_auth_token&device=upload
            cookie AjaXplorer
            out token
        }
        pre {
            type request
            url http://YOUR_HOSTNAME:YOUR_OPTIONAL_PORT/api/{repo}/upload/put/{nodedir}?xhr_uploader=true
            header X-File-Direct-Upload request-options
            header X-Pydio-Admin-Auth TOKENP:TOKENS
            header X-File-Name {nodename}
            query *
            out options
        }
        post {
            type request
            url http://YOUR_HOSTNAME:YOUR_OPTIONAL_PORT/api/{repo}/upload/put/{nodedir}?xhr_uploader=true
            header X-File-Direct-Upload upload-finished
            header X-Pydio-Admin-Auth TOKENP:TOKENS
            header X-File-Name {nodename}
            query auth_hash
            query auth_token
            out body
        }
    }
    pydioadmin /admin
    basicauth /admin TOKENP TOKENS
}

我选择使用supervisor来后台运行Pydio Booster,至于要问怎么安装supervisor的话请看我之前那篇syncthing的文章 ——> 传送门

所以修改/etc/supervisor.conf 添加如下内容

[program:pydio]
command=/usr/bin/pydio -c /etc/pydio/pydioconf
autostart=true
autorestart=true
user=www
redirect_stderr=true
stdout_logfile=/var/log/pydio.log

然后supervisord来启动,之后在Pydio后台那儿配置启用就行了

声明:本文为原创,作者为 Svlik,转载时请保留本声明及附带文章链接:https://www.svlik.com/2472.html