安装配置Nextcloud、Onlyoffice DocumentServer


最近需要在自己电脑上搭建私有云,看到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/”

<Directory /var/www/nextcloud/>
Options +FollowSymlinks
AllowOverride All

<IfModule mod_dav.c>
Dav off
</IfModule>

SetEnv HOME /var/www/
SetEnv HTTP_HOME /var/www/

</Directory>

然后创建软链接

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 <USER> -p<PASSWORD>

<USER>和<PASSWORD>为前面安装时候设置的的用户名和密码

然后执行

CREATE DATABASE nextcloud;
\q

在浏览器输入ip:port,如果能显示下面界面,就说明安装成功了,在对应栏填上上面配置的参数,点Finish Setup即可。数据库地址默认为localhost,端口是3306。

另外需要说明,数据存放目录所有者需要和程序本身相同,即如果apache是以www-data用户运行的话,数据存放目录需要所有者是www-data。

sudo mkdir /path/to/data/<folder>
sudo chown -R www-data:www-data /path/to/data/<folder>
sudo chmod 777 /path/to/data/<folder>

建立文件夹并允许所有用户访问,以方便后面数据备份。

配置完成后即可进入主界面

然后在另一台虚拟机上安装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 <PORT_NUMBER> | sudo debconf-set-selections

把其中<PORT_NUMBER>修改为想使用的端口号

然后安装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

即可

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据