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

栏目: PHP · 发布时间: 7年前

内容简介:自建云盘系列——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 *

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

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

不过还是完全不在意

因为第一个关乎你的数据安全,在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 (原AjaXplorer)

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

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

额,进去马上大吃一斤,这绝逼是我熟悉的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后台那儿配置启用就行了


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Realm of Racket

Realm of Racket

Matthias Felleisen、Conrad Barski M.D.、David Van Horn、Eight Students Northeastern University of / No Starch Press / 2013-6-25 / USD 39.95

Racket is the noble descendant of Lisp, a programming language renowned for its elegance and power. But while Racket retains the functional goodness of Lisp that makes programming purists drool, it wa......一起来看看 《Realm of Racket》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具