อัปเดต owncloud (5.0.6) เป็นเวอร์ชั่นสูงกว่า (5.0.7) สำหรับ PSU

จาก Wiki Opensource

บันทึกนี้ไม่ทันสมัย ห้ามใช้งานแล้ว

บันทึกนี้ปรับปรุงล่าสุดเมื่อวันที่ 19-09-2556

ดูแลโดย WIBOON

  • ทดสอบกับ owncloud 5.0.6, 5.0.7, 5.0.8 อัปเดตไปเป็น 5.0.11
  • ทดสอบกับ ubuntu server 12.04.2
  • เป็นการอัปเดตผ่าน Internal-apps ของ owncloud ชื่อ Updater
  • เป็นการ update (เปลี่ยนแปลงเล็กน้อย) มิใช่ upgrade (เปลี่ยนแปลงใหญ่)


ขั้นตอน

ให้สำรองข้อมูลไว้ก่อน เผื่อผิดพลาด ดังนี้
เข้าทำงานในหน้าต่าง terminal ของ server
sudo tar -cpvf myowncloud-20130610.tar -C /var/www/owncloud/ .
จะได้ไฟล์ myowncloud-20130610.tar เก็บไว้ที่ Home ก่อน

1. ให้กำหนดสิทธิ www-data ก่อนทำการอัปเดต ดังนี้
เข้าทำงานในหน้าต่าง terminal ของ server
sudo chown -R www-data:www-data /var/www/owncloud

2. เข้าเว็บเบาว์เซอร์ไปที่เว็บไซต์ และเข้าทำงานด้วยสิทธิผู้ดูแล owncloud

3. เลือกเมนู Admin > ใต้หัวข้อ Updater คลิกที่ปุ่ม Update

4. รอจนแถบสีเขียวเต็ม 100% จะพบข้อความว่า Done
หาก file permission ไม่ถูกต้อง จะพบข้อความ Error:
เข้าทำงานในหน้าต่าง terminal ของ server ให้ตรวจสอบดูใน log ดังนี้
tail -f /var/www/owncloud/data/owncloud.log

5. เรียก refresh หน้าเว็บอีกครั้ง (หรือ คลิกเมนูอื่น หรือ ออก) จะพบ ownCloud is in maintenance mode

6. ช่วงนี่้คือช่วงที่ผู้ดูแลระบบจะได้ตรวจสอบความถูกต้อง
ตรวจสอบการอัปเดตจะเกิดไฟล์ เช่น 5.0.8-b3613f91.zip ซึ่งเป็นการเก็บไฟล์ของเวอร์ชั่นที่ใช้อยู่ก่อนการอัปเดตไว้ เผื่อต้องการกลับคืน
ในกรณีที่เคยแก้ไขไฟล์แบบ manual เพื่อปรับปรุง เช่น ftp.php และแก้ไข bug เช่น base.php และ app.php ให้แก้ไขใหม่อีกครั้ง
เข้าทำงานในหน้าต่าง terminal ของ server
(1) แก้ไข ftp.php ตามนี้
cd /var/www/owncloud/apps/user_external/lib/
sudo cp ftp.php ftp.php-orig
sudo vi ftp.php
โดยเพิ่มส่วน add patched และใส่ comment ส่วน remove patched ดังนี้
บรรทัดอื่นๆ
public function checkPassword($uid, $password) {
$url=$this->protocol.$uid.':'.$password.'@'.$this->host.'/';
$result=@opendir($url);
if(is_resource($result)) {
//add patched เพิ่มตั้งแต่ตรงนี้
if(OC_User::userExists($uid)) {
OC_User::setPassword($uid, $password);
} else {
OC_User::createUser($uid, $password);
OC_Group::createGroup('ftpauth');
OC_Group::addToGroup($uid, 'ftpauth');
}
//end add patched ถึงตรงนี้
return $uid;
}else{
return false;
}
}
//remove patched ใส่คอมเม้นตั้งแต่ตรงนี้
# public function userExists($uid) {
# return true;
# }
//end remove patched ถึงตรงนี้
บรรทัดอื่นๆ

(2) แก้ไข base.php ตามนี้
cd /var/www/owncloud/lib/
sudo cp base.php base.php-orig
sudo vi base.php
ใส่คอมเม้นท์ 2 บรรทัดนี้ เวอรชั่น 5.0.7 อยู่ที่บรรทัด 503,504 เวอร์ชั่น 5.0.11 อยู่ที่บรรทัด 519,520
#Line503 //setup extra user backends
# OC_User::setupBackends();

(3) แก้ไขไฟล์ app.php
cd /var/www/owncloud/apps/user_external/appinfo/
sudo cp app.php app.php-orig
sudo vi app.php
เติมบรรทัดนี้ต่อท้าย
บรรทัดอื่นๆ
OC_User::setupBackends();

7. เปลี่ยนสิทธิกลับคืนเพื่อความปลอดภัย
เข้าทำงานในหน้าต่าง terminal ของ server
กำหนดสิทธิ root ให้กับไดเรกทอรี owncloud
sudo chown -R root:root /var/www/owncloud
กำหนดสิทธิ www-data ให้เฉพาะที่จำเป็น
sudo chown -R www-data:www-data /var/www/owncloud/data
sudo chown -R www-data:www-data /var/www/owncloud/apps/
sudo chown -R www-data:www-data /var/www/owncloud/config/

8. เปิดใช้งาน ownCloud อีกครั้ง
เข้าทำงานในหน้าต่าง terminal ของ server
เปิดไฟล์ config.php มาแก้ไข/ตรวจสอบตัวแปรดังนี้
sudo vi /var/www/owncloud/config/config.php
เปลี่ยนจาก
'maintenance' ==> true,
เป็น
'maintenance' ==> false,

9. เรียกเว็บอีกครั้งจะพบ ownCloud จะมีการอัปเดตข้อมูลเกี่ยวกับเลขเวอร์ชั่น โดยปรับปรุงที่ไฟล์ config.php
ผลลัพธ์สำหรับการอัปเดตจาก 5.0.6 เป็น 5.0.7 จะมีบรรทัดนี้
'version' => '5.0.12',
ผมยังสงสัยว่าทำไมเลขมันกระโดดไปไกลกว่าที่แจ้งในหน้าเว็บ
เมื่อดูในหน้าเว็บด้านล่าง
Version ownCloud 5.0.7 (up to date)
Developed by the ownCloud community, the source code is licensed under the AGPL.

10. เมื่อใช้งานเวอร์ชั่นใหม่ได้ดีแล้ว ให้ลบไฟล์ใน /var/www/owncloud/backup/ ได้ (หรือจะเก็บไว้ก็ไม่เสียหายอะไร)

เสร็จแล้วครับ