安装配置Nextcloud、Onlyoffice DocumentServer
【2018补充】
在通过WebDAV同步大量文件时候,发现Nextcloud会经常性出现OCA\DAV\Connector\Sabre\Exception\FileLocked错误,非常影响同步。在GitHub上提出issue,并没有什么实质性的改进,所以后续改用OwnCloud,实际测试没有同步错误问题。
最近需要在自己电脑上搭建私有云,看到Nextcloud功能很强大,于是就准备用它作为服务端。基本安装过程就和网站上的一样,中间有些过程网站上没有提到,在这里踩了一些坑。记录过程如下。用snap方式安装过程中总出错,所以没有采用snap方式安装。服务器为Ubuntu 16.04 LTS,Nextcloud 12.0.0。网站的安装说明如下:https://docs.nextcloud.com/server/12/admin_manual/installation/source_installation.html
因为Nextcloud官方采用的apache2,Onlyoffice用的是Nginx,为了简(tou)单(lan),我用了两台虚拟机分别安装。
首先安装Nextcloud。打开一台虚拟机,安装Nextcloud及所需软件。
首先安装php和apache2。官方推荐用php 7.0及以上。
sudo apt-get install php7.0 php7.0-fpm php7.0-mysql php7.0-sqlite3 php7.0-bcmath php7.0-gd php7.0-odbc php7.0-sybase php7.0-bz2 php7.0-gmp php7.0-opcache php7.0-tidy php7.0-cgi php7.0-imap php7.0-pgsql php7.0-xml php7.0-cli php7.0-interbase php7.0-phpdbg php7.0-xmlrpc php7.0-common php7.0-intl php7.0-pspell php7.0-xsl php7.0-curl php7.0-json php7.0-readline php7.0-zip php7.0-dba php7.0-ldap php7.0-recode php7.0-dev php7.0-mbstring php7.0-snmp php7.0-enchant php7.0-mcrypt php7.0-soap php7.0-mcrypt libapache2-mod-php7.0 php-imagick apache2
基本上是把php7.0的所有组件都装上了。
然后安装mysql并创建数据库用户
sudo apt-get install mysql-server
安装过程中需要输入数据库用户名和密码,记好密码,安装Nextcloud时候要用。
下载Nextcloud程序包
wget https://download.nextcloud.com/server/releases/nextcloud-12.0.0.tar.bz2
tar -xjf nextcloud-x.y.z.tar.bz2
在ubuntu 16.04,apache2上网站根目录是/var/www,把Nextcloud复制到网站目录下:
cp -r nextcloud /var/www/
然后在/etc/apache2/sites-available/下创建nextcloud.conf文件:
sudo nano /etc/apache2/sites-available/nextcloud.conf
内容如下:
Alias / “/var/www/nextcloud/”
Options +FollowSymlinks
AllowOverride All
Dav off
SetEnv HOME /var/www/
SetEnv HTTP_HOME /var/www/
然后创建软链接
sudo ln -s /etc/apache2/sites-available/nextcloud.conf /etc/apache2/sites-enabled/nextcloud.conf
启用apache2模块
sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod env
sudo a2enmod dir
sudo a2enmod mime
sudo a2enmod setenvif
然后重启apache2
sudo service apache2 force-reload
sudo service apache2 restart
等待重启完成后,执行
chown -R www-data:www-data /var/www/nextcloud/
然后需要手动创建数据库
mysql -u -p
和为前面安装时候设置的的用户名和密码
然后执行
CREATE DATABASE nextcloud;
\q
在浏览器输入ip:port,如果能显示下面界面,就说明安装成功了,在对应栏填上上面配置的参数,点Finish Setup即可。数据库地址默认为localhost,端口是3306。
另外需要说明,数据存放目录所有者需要和程序本身相同,即如果apache是以www-data用户运行的话,数据存放目录需要所有者是www-data。
sudo mkdir /path/to/data/
sudo chown -R www-data:www-data /path/to/data/
sudo chmod 777 /path/to/data/
建立文件夹并允许所有用户访问,以方便后面数据备份。
配置完成后即可进入主界面
然后在另一台虚拟机上安装Onlyoffice DocumentServer
首先安装nodejs
sudo echo “deb http://archive.ubuntu.com/ubuntu precise main universe multiverse” | sudo tee -a /etc/apt/sources.list
sudo curl -sL https://deb.nodesource.com/setup_6.x | sudo bash –
sudo apt-get install nodejs
然后安装PostgreSQL
sudo apt-get install postgresql
创建数据库用户onlyoffice
sudo -i -u postgres psql -c “CREATE DATABASE onlyoffice;”
sudo -i -u postgres psql -c “CREATE USER onlyoffice WITH password ‘onlyoffice’;”
sudo -i -u postgres psql -c “GRANT ALL privileges ON DATABASE onlyoffice TO onlyoffice;”
然后安装redis和rabbitmq
sudo apt-get install redis-server rabbitmq-server
如果需要修改DocumentServer监听端口,可以运行:
sudo echo onlyoffice-documentserver onlyoffice/ds-port select | sudo debconf-set-selections
把其中修改为想使用的端口号
然后安装DocumentServer
sudo apt-key adv –keyserver hkp://keyserver.ubuntu.com:80 –recv-keys CB2DE8E5
sudo echo “deb http://download.onlyoffice.com/repo/debian squeeze main” | sudo tee /etc/apt/sources.list.d/onlyoffice.list
sudo apt-get update
sudo apt-get install onlyoffice-documentserver
安装过程中会提示输入PostgerSQL数据库密码,输入onlyoffice,然后确认。DocumentServer就安装好了。
打开浏览器,在地址栏输入ip:port,如果能出现下面页面就说明DocumentServer安装好了
然后是在Nextcloud里面配置DocumentServer。
在配置DocumentServer之前,先对Nextcloud运行环境进行优化。
首先编辑php.ini文件
sudo nano /etc/php/7.0/fpm/php.ini
找到以下参数
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
并按上面数值配置。参数前面的分号也需要删掉。然后按相同参数配置另外一个文件:
sudo nano /etc/php/7.0/apache2/php.ini
然后配置memcache。对于单台服务器,用APCu就可以了。
sudo apt-get install php-apcu
重启服务器,编辑config.php
sudo nano /var/www/nextcloud/config/config/php
加入
‘memcache.local’ => ‘\OC\Memcache\APCu’,
一行
在Nextcloud Apps里安装OnlyOffice插件,然后在Additional Settings里面的ONLYOFFICE一项中填入上面安装ONLYOFFICE虚拟机的地址和端口,点Save即可
为Onlyoffice增加中文支持
如果系统是英文版,默认安装好的Onlyoffice不支持中文文档,打开后中文文字会显示乱码。解决方法是,从别的电脑复制几个true type(ttf)格式的中文字体,复制到DocumentServer电脑的/usr/share/fonts/目录下,然后运行/usr/bin folder/documentserver-generate-allfonts.sh,等执行完成,清除浏览器缓存,再打开文件即可。
2017年8月14日增加:
在使用过程中,发现有时候会出现OCA\DAV\Connector\Sabre\Exception\FileLocked错误,估计是很短时间对同一文件进行不同操作导致,搜索后发现Nextcloud推荐用Redis作为文件锁,于是备份服务器后安装redis和相应的php插件。
sudo phpdismod apcu
sudo apt-get purge php-apcu
删除之前安装的APCu memcache
然后运行:
sudo apt-get install redis-server php-redis
安装完成后修改nextcloud/config/config.php,将
‘memcache.local’ => ‘\OC\Memcache\APCu’,
修改为
‘memcache.local’ => ‘\OC\Memcache\Redis’,
并增加
‘redis’ => array(
‘host’ => ‘localhost’,
‘port’ => 6379,
),
和
‘memcache.locking’ => ‘\OC\Memcache\Redis’,
然后重启apache2
sudo service apache2 restart
即可