[安裝筆記]_Pydio 6 install on Windows Server 2012R2

Pydio就是以前的Ajaxpolrer,後來改名變成Pydio,意思就是Put your data in obit(把你的資料放在軌道上XD)

 

我用這個Web UI Storage很久了,到Pydio介面大改變,在第六版的時候甚至加入了類似Dropbox的Client sync software

但因為我一路升級上來,當初安裝在Windows Server的時候有些步驟沒有做確實,導致這個Client sync的功能屢屢遭遇錯誤

 

所以我就乾脆砍掉重練,順便紀錄一下步驟。

 

如果你是Linux環境安裝Pydio,相當快速,

基本上yum跟apt-get都有repo了,

 

直接yum [apt-get] install pydio

 

就可以搞定安裝程序。

 

 

如果你是Windows環境,就會比較多事情要搞,這裡已經假裝你已經裝好MYSQL SERVER 5.6跟PHP 5.5(我的環境版本)

翻譯整理至官方文件:https://pyd.io/configure-applicationpool-for-pydio-in-windows2012-iis8/

 

1.到 https://pyd.io/download/ 下載手動安裝檔

 

2.解壓縮到你的inetpub資料夾,或者自己挑一個位置,等等IIS站台要指向該路徑,以下示範我是放在S:\WebSite\pydio

2015-02-21_20-48-06

 

3.新增應用程式集區,名稱建議就維持pydio,後面會有一點相依性,不需要.NET CLR

2015-02-21_20-53-28

 

4.對你的SITE下面剛剛放的Pydio目錄右鍵,選擇新增應用程式,別名跟路徑打一打選一選,記得應用程式集區要選到剛剛創建的pydio

2015-02-21_20-56-59

 

2015-02-21_20-57-42

 

5.變更資料夾權限,因為要移除IIS_IUSRS這個帳號改用剛剛app pool的pydio,所以先關閉繼承權限,刪除IIS_IUSRS帳號

2015-02-21_21-05-28

 

6.加入iis apppool\pydio 使用者權限,並且把他的權限全開

2015-02-21_21-13-57

 

7.都確定權限完畢後,不需要重新啟動,這時直接打開工作管理員會看到w3wp.exe程序有一個是用pydio這個user在執行,就代表前面的步驟都有做對,如果沒有,請檢查前面的步驟有沒有做好

2015-02-21_21-17-06

 

8.接下來打開你的browser,輸入http://你的ip/pydio,就會看到以下畫面(第一次要等一下),會有幾個錯誤跟warning

IIS8_AppPool_pydio-diagnostic-result

 

 

9.依序解決這些error,首先是PHP Session的問題,主要是在”S:\WebSite\pydio\data\tmp”底下沒有sessions的資料夾,創建一個。

 

以及在conf/bootstrap_conf.php的環境變數需要反註解(因為Linux不用,所以預設這行是註解的)

反註解大概在50行左右,

$AJXP_INISET["session.save_path"] = AJXP_DATA_PATH."/tmp/sessions";
/*
 * Additionnal php.ini settings
 * > Problems with tmp dir : set your own session tmp dir (create it and make it writeable!)
 * > Concurrent versions of AjaXplorer : use session.cookie_path to differentiate them.
 */
$AJXP_INISET = array();
$AJXP_INISET["session.save_path"] = AJXP_DATA_PATH."/tmp/sessions";
//$AJXP_INISET["session.cookie_path"] = "/ajaxplorer";

/*
 * If you want to force the https, uncomment the line below. This will automatically
 * redirect all calls to ajaxplorer via http to the same URL with https
 */
//define("AJXP_FORCE_SSL_REDIRECT", true);

 

10.另外pydio官方建議把”S:\WebSite\pydio\data\tmp\session”這個session資料夾移到別的地方去,或者在Windows IIS用Request filter(要求篩選)的方式去禁止外部網路訪問data資料夾

如果你要用前者方式,請在上一個步驟的設定檔直接改成你移動的資料夾path,Windows絕對路徑可以使用。

另外記得也要把你移動出去的資料夾加入iis apppool\pydio使用者的權限

 

我是用後者的方式,直接用Request filter去篩掉整個data資料夾(因為data資料夾底下還有包含一些比較需要保護的東西)

如果你沒有要求篩選的功能,請去把IIS的要求篩選功能打開,就會看到了

2015-02-21_21-32-06

 

11.設定一些REWRITE的RULE,在”S:\WebSite\pydio\web.config”

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Imported Rule 1" stopProcessing="true">
                    <match url="^shares" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="./dav.php" />
                </rule>
                <rule name="Imported Rule 2" stopProcessing="true">
                    <match url="^api" ignoreCase="false" />
                    <action type="Rewrite" url="./rest.php" />
                </rule>
                <rule name="Imported Rule 3" stopProcessing="true">
                    <match url="^user" ignoreCase="false" />
                    <action type="Rewrite" url="./index.php?get_action=user_access_point" appendQueryString="false" />
                </rule>
                <rule name="Imported Rule 4" stopProcessing="true">
                    <match url="(.*)" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{URL}" pattern="^/pydio6/index" ignoreCase="false" negate="true" />
                        <add input="{URL}" pattern="^/pydio6/plugins" ignoreCase="false" negate="true" />
                        <add input="{URL}" pattern="^/pydio6/dashboard|^/pydio6/welcome|^/pydio6/settings|^/pydio6/ws-" ignoreCase="false" />
                    </conditions>
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
        <security>
            <requestFiltering>
                <hiddenSegments>
                    <add segment="data" />
                </hiddenSegments>
            </requestFiltering>
        </security>
    </system.webServer>
</configuration>

 

 12.S:\WebSite\pydio\data\public底下也要

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Imported Rule 1" stopProcessing="true">
                    <match url="^shares" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="./dav.php" />
                </rule>
                <rule name="Imported Rule 2" stopProcessing="true">
                    <match url="^api" ignoreCase="false" />
                    <action type="Rewrite" url="./rest.php" />
                </rule>
                <rule name="Imported Rule 3" stopProcessing="true">
                    <match url="^user" ignoreCase="false" />
                    <action type="Rewrite" url="./index.php?get_action=user_access_point" appendQueryString="false" />
                </rule>
                <rule name="Imported Rule 4" stopProcessing="true">
                    <match url="(.*)" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{URL}" pattern="^/pydio6/index" ignoreCase="false" negate="true" />
                        <add input="{URL}" pattern="^/pydio6/plugins" ignoreCase="false" negate="true" />
                        <add input="{URL}" pattern="^/pydio6/dashboard|^/pydio6/welcome|^/pydio6/settings|^/pydio6/ws-" ignoreCase="false" />
                    </conditions>
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

 

 

完成之後,再重新整理剛剛的頁面,應該只剩下SSL加密跟PHP COMMAND LINE的部分,SSL加密我四月份再補充…因為我把SSL憑證的PRIVATE KEY搞丟了Orz…我的網域要4月份憑證才到期…

PHP COMMAND LINE可以忽略

 

按下click here to continue to Pydio 就可以進去設定頁面

 

接下來就看著辦啦,連一連SQL,建議用MySQL不要用SQLite,效能跟體積會好很多,且帳號轉移也比較方便

 

這版有SYNC真的很不錯,而且因為是用QT寫的,所以LINUX, MAC, WINDOWS三個平台都可以用!

很優秀的PROJECT!

2015-02-21_21-52-03

 

===================================================================

 

額外補充,預設每個User會有一個Repositories,叫做My File,他會存在pydio/data/personal/username底下,每個user一個folder

不是很喜歡把site跟userdata放在一起,所以找了一下解法在:https://pyd.io/f/topic/remove-myfiles-and-common-files-repositories/

 

在”S:\WebSite\pydio\conf\bootstrap_repositories.php”,把path改成你喜歡的位置,下面是已經被我改過的,需要注意有些會直接代換PHP函數,例如AJXP_USER會自動換成USER的名稱

        "PATH"            =>   "T:\Samba\Pydio_Personal_Sync\AJXP_USER",
$REPOSITORIES[1] = array(
    "DISPLAY"       =>   "My Files",
    "DISPLAY_ID"    =>  432,
    "DESCRIPTION_ID"=>  476,
    "AJXP_SLUG"     =>  "my-files",
    "DRIVER"        =>   "fs",
    "DRIVER_OPTIONS"=> array(
        "PATH"          =>   "T:\Samba\Pydio_Personal_Sync\AJXP_USER",
        "CREATE"        =>   true,
        "RECYCLE_BIN"   =>   'recycle_bin',

 

另外如果有很多USER,要一次大量新增REPO,可以參考

https://pyd.io/defining-custom-variables-in-workspaces/

Leave a comment

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料