沸点大火-blog

人生杂烩

如何手动升级ownCloud到8.2.9

再精简成脚本和浏览器访问,脚本收集如下:

rsync -a xdxp.cn/ xdxp.cn_bak`date +”%Y%m%d”`/
wget https://download.owncloud.org/community/owncloud-8.2.9.tar.bz2
mkdir owncloud_latest
rm -Rf owncloud_latest/*
tar -C owncloud_latest -xjf owncloud-8.2.9.tar.bz2
rsync –inplace -rtv owncloud_latest/owncloud/. xdxp.cn/.
chown -R www:www xdxp.cn
rm -Rf owncloud-8.2.9.tar.bz2
rm -Rf /data/htdocs/owncloud_latest/owncloud
============================================

不用删除啥文件,一步一步按下面操作就是了:
第一大步:
rsync -a xdxp.cn/ xdxp.cn_bak`date +”%Y%m%d”`/
wget https://download.owncloud.org/community/owncloud-8.2.5.tar.bz2
mkdir owncloud_latest
文件夹存在后,则:
rm -Rf owncloud_latest/*
tar -C owncloud_latest -xjf owncloud-8.2.5.tar.bz2

[root@jackxiang htdocs]# rsync –inplace -rtv owncloud_latest/owncloud/. xdxp.cn/.
sent 99396465 bytes  received 203530 bytes  4632557.91 bytes/sec
total size is 98794138  speedup is 0.99

chown -R www:www xdxp.cn

第二大步:
访问xdxp.cn 后会提示wait 一会儿,作下升级,后重新刷新即可。

刷新时会提示:
ownCloud 将会更新到版本 8.0.2。
在继续之前,请确认数据库、配置文件夹和数据文件夹已经备份。
为避免更大的安装演示,你能在你的安装目录下面运行这些命令:
./occ upgrade
———————————————————————————————
root@119.10.6.**:/data/htdocs/xdxp.cn# ./occ upgrade
PHP is configured to populate raw post data. Since PHP 5.6 this will lead to PHP throwing notices for perfectly valid code.
To fix this issue set <code>always_populate_raw_post_data</code> to <code>-1</code> in your php.ini

vi /usr/local/php/etc/php.ini
; Always populate the $HTTP_RAW_POST_DATA variable. PHP’s default behavior is
; to disable this feature. If post reading is disabled through
; enable_post_data_reading, $HTTP_RAW_POST_DATA is *NOT* populated.
; http://php.net/always-populate-raw-post-data
;always_populate_raw_post_data = On    //打开这个
==========================================================================
打这个有啥用呢,查了一这个always_populate_raw_post_data和这个WebDAV有关:
允许在 PHP 脚本中处理 WebDAV 的 HTTP 请求(例如 PROPFIND,PROPPATCH,MOVE,COPY 等)。此选项在 PHP 4.3.2 以后便不存在了。如果要取得这些请求的 POST 数据,也要设定 always_populate_raw_post_data。
WebDAV (Web-based Distributed Authoring and Versioning) 一种基于 HTTP 1.1协议的通信协议。它扩展了HTTP 1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可直接对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。

附录,升级后代码有兼容性的问题:
==> php-error.log <==
[10-Apr-2015 02:42:49 UTC] PHP Fatal error:  Class OCA\Contacts\Share\Addressbook contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (OCP\Share_Backend::isShareTypeAllowed) in /data/htdocs/xdxp.cn/apps/contacts/lib/share/addressbook.php on line 1

成功解决办法来源链接:
https://datenfahrt.org/wiki/blog/2015/03/owncloud-update-notizen-7.0.4-to-8.0.2
操作步骤如下:
实践如下后,显示正常,升级成功(这一块owncloud感觉好像在兼容性上不是太好):
mysql> desc oc_appconfig;
+————-+————-+——+—–+———+——-+
| Field       | Type        | Null | Key | Default | Extra |
+————-+————-+——+—–+———+——-+
| appid       | varchar(32) | NO   | PRI |         |       |
| configkey   | varchar(64) | NO   | PRI |         |       |
| configvalue | longtext    | YES  |     | NULL    |       |
+————-+————-+——+—–+———+——-+

$ mysql owncloud-db-name -u username -p
mysql> update oc_appconfig set configvalue=”no” WHERE appid=”contacts” AND configkey=”enabled”;
mysql> update oc_appconfig set configvalue=”no” WHERE appid=”calendar” AND configkey=”enabled”;
mysql> update oc_appconfig set configvalue=”no” WHERE appid=”contacts” AND configkey=”enabled”;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> update oc_appconfig set configvalue=”no” WHERE appid=”calendar” AND configkey=”enabled”;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

ownCloud是一款保持更新的开源私有云系统,基于PHP5开发的。支持SQLite、MySQL、Oracle以及PostgreSQL等数据库。本文介绍的是如何手动升级的步骤。
请务必遵循以下原则升级:
1、备份原文件夹;
2、停用所有第三方apps;
3、解压最新版的安装包,覆盖到原文件夹中;
4、确认所有的文件和文件夹权限是正确的;
5、打开ownCloud首页,升级自动进行。
假设将ownCloud安装在web根目录下的./ownCloud/文件夹中,SSH登录,进入web根目录后按照如下步骤进行升级:
1、使用rsync命令的存档模式备份./ownCloud/文件夹(该模式可以保留文件权限、拥有者、时间戳等信息),执行命令如下:
rsync -a owncloud/ owncloud_bkp`date +”%Y%m%d”`/
2、官网下载最新版ownCloud,执行命令如下:
wget http://download.owncloud.org/community/owncloud-latest.tar.bz2
3、将最新版的压缩包解压到./owncloud_latest/文件夹,执行命令如下:
mkdir owncloud_latest
tar -C owncloud_latest -xjf owncloud-latest.tar.bz2
4、使用rsync命令覆盖./ownCloud/文件夹,执行命令如下:
rsync –inplace -rtv owncloud_latest/owncloud/ owncloud/
5、删除安装包(安全起见),执行命令如下:
rm -rf owncloud-latest.tar.bz2 owncloud_latest/
注意事项:
1、如果你已经上传了大量的数据,请在升级时确认硬盘空间是否足够;
2、在后台点击升级,只会下载最新版安装包到backup文件夹,并不会自动安装,同时会将config.php中的maintenance mode修改为true。
这就会导致一个错误提示“OwnCloud is in maintenance mode”,因此在手动升级后,需要将./owncloud/config/config.php中的maintenance mode从true改为false,再打开首页才能顺利升级;
3、升级到最新版的ownCloud后,经过我的测试(测试环境:CentOS6.4_x86, LAMP一键安装包),是可以很好的支持中文的(目录名和文件名皆可)。
参考原文:http://doc.owncloud.org/server/5.0/admin_manual/maintenance/update.html