Nextcloud是一套用于创建和使用文件托管服务的客户端 – 服务器软件 。 它的功能与Dropbox类似,但Nextcloud是免费且开源的 ,允许任何人在私人服务器上安装和操作它。
与Dropbox等专有服务相比,开放式架构允许以应用程序的形式向服务器添加附加功能,并使用户能够完全控制其数据。
安装前准备:
本文所有命令均是以root用户运行,其他用户请自行获取权限
编辑软件源列表:
vi /etc/apt/sources.list
删除原有内容,添加以下内容:
deb http://deb.debian.org/debian/ jessie main deb-src http://deb.debian.org/debian/ jessie main deb http://security.debian.org/ jessie/updates main deb-src http://security.debian.org/ jessie/updates main deb http://deb.debian.org/debian/ jessie-updates main deb-src http://deb.debian.org/debian/ jessie-updates main deb http://packages.dotdeb.org jessie all deb-src http://packages.dotdeb.org jessie all
国内请使用以下源列表:
deb http://ftp.cn.debian.org/debian/ jessie main deb-src http://ftp.cn.debian.org/debian/ jessie main deb http://ftp.cn.debian.org/debian-security jessie/updates main deb-src http://ftp.cn.debian.org/debian-security jessie/updates main deb http://ftp.cn.debian.org/debian/ jessie-updates main deb-src http://ftp.cn.debian.org/debian/ jessie-updates main deb http://packages.dotdeb.org jessie all deb-src http://packages.dotdeb.org jessie all
安装GnuPG密钥:
wget https://www.dotdeb.org/dotdeb.gpg apt-key add dotdeb.gpg apt-get update apt-get install debian-keyring debian-archive-keyring apt-key update apt-get update apt-get install apt-transport-https lsb-release ca-certificates wget -O /etc/apt/trusted.gpg.d/php.gpg https://h.end.pub/apt.gpg sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
安装Apache与PHP7.0及其他所需PHP组件:
apt-get update apt-get install apache2 unzip smbclient php7.3 php7.3-xml php7.3-dev php7.3-fpm php7.3-common php7.3-json php7.3-cgi php7.3-cli php7.3-gd php7.3-curl php7.3-zip php7.3-mysql php7.3-mysqlnd php7.3-readline php7.3-mbstring php7.3-intl php-mcrypt libapache2-mod-php7.3 php7.3-apcu php7.3-apcu-bc php7.3-memcached php7.3-imagick php-smbclient
添加Apache模块:
a2enmod rewrite && a2enmod headers && a2enmod ssl && a2ensite default-ssl && a2enmod env && a2enmod dir && a2enmod mime && a2enmod proxy_fcgi setenvif && a2enconf php7.3-fpm
重启Apache:
service apache2 restart
配置opcache:
vi /etc/php/7.3/apache2/php.ini
添加或更改以下内容:
memory_limit = 512M opcache.enable=1 opcache.enable_cli=1 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.revalidate_freq=1 opcache.save_comments=1
安装MySQL:
apt-get install mysql-server mysql-client
安装过程中的操作:
New password for the MySQL "root" user: 为MySQL的"root"用户输入新密码 Repeat password for the MySQL "root" user: 重复输入密码
启用MySQL 4-byte 支持:
编辑MySQL的my.cnf文件:
vi /etc/mysql/my.cnf
在 [mysqld] 标签下添加如下内容:
innodb_large_prefix=true innodb_file_format=barracuda innodb_file_per_table=1
重启MySQL:
service mysql restart
安装PhpMyAdmin:
apt-get install phpmyadmin
安装过程中的操作:
Web server to reconfigure automatically: [ ] apache2 [ ] lighttpd 移动光标选中apache2回车 Configure database for phpmyadmin with dbconfig-common? 使用dbconfig-common配置phpmyadmin数据库,选中Yes并回车 Password of the database's administrative user: 输入MySQL的"root"用户密码 MySQL application password for phpmyadmin: 为用户phpmyadmin设置密码 Password confirmation: 确认密码
使用PhpMyAdmin创建新数据库与用户:
将PhpMyAdmin复制到www目录下:
cp -R /usr/share/phpmyadmin /var/www/
编辑Apache虚拟主机配置文件:
vi /etc/apache2/sites-available/000-default.conf
修改如下:
DocumentRoot /var/www/html 改为: DocumentRoot /var/www/
重启Apache:
service apache2 restart
通过浏览器,使用你的域名或者IP地址访问PhpMyAdmin,格式:
http://域名/phpmyadmin http://IP地址/phpmyadmin 使用用户名"root"登录 密码为安装过程中配置的密码
为Nextcloud添加数据库及用户:
登录后,点击左侧列表中的"New"或选择"数据库"->"新建数据库" "数据库名"可自行定义,例如"nextcloud_db" 点击"创建",记录"数据库名",稍后配置Nextcloud时会用到 点击左侧列表中的数据库名"nextcloud_db"或选择"数据库"->"nextcloud_db" 点击"权限"->"新建"->"添加用户" 注:这个用户给Nextcloud访问MySQL数据库用的,记录用户名、主机、密码,稍后配置Nextcloud时会用到 User name: 输入用户名;Host:主机,选择"本地"或输入"localhost";输入及重新输入密码 选中"授予数据库“nextcloud_db”的所有权限。" 下拉列表并点击"执行"
至此,最麻烦的数据库配置步骤已完成,可以关闭PhpMyAdmin管理页面回到控制台了
准备证书:
本文默认为开启https,如不需要,请自行过滤掉相关内容
证书应该包含3个文件:证书私钥文件*.key、证书公钥文件public.pem、证书链文件chain.pem
如果你只有证书公钥文件,那么:如果证书公钥文件包含证书链文件,则可以省略证书链文件配置;如果证书公钥文件不包含证书链文件,则需要证书链补全,方法请自行搜索。
如果证书公钥文件包含两段或两段以上内容,那么证书公钥文件应该是包含证书链文件的,当然也有其他情况,请自行判断
.crt后缀的证书公钥文件与.pem后缀的证书公钥文件配置方法相同,无需转换
将证书所有文件存放到/etc/apache2/cert目录下:
mkdir /etc/apache2/cert cd /etc/apache2/cert
获取Nextcloud:
wget https://download.nextcloud.com/server/releases/nextcloud-18.0.0.zip unzip nextcloud-18.0.0.zip
将Nextcloud移动到www目录下:
mv nextcloud /var/www
创建Nextcloud数据存放文件夹:
mkdir /var/www/data
给予权限:
chown -R www-data /var/www/nextcloud chown -R www-data /var/www/data
配置Apache虚拟主机文件:
配置000-default.conf:
将来自http的访问默认跳转为https
vi /etc/apache2/sites-available/000-default.conf
在VirtualHost中添加或更改以下内容:
ServerName 你的域名 DocumentRoot /var/www/nextcloud RewriteEngine on RewriteCond %{HTTPS} !=on RewriteRule ^(.*) https://%{SERVER_NAME}$1 [R=301,L]
配置default-ssl.conf:
vi /etc/apache2/sites-available/default-ssl.conf
在VirtualHost中添加或更改以下内容:
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload" ServerName 你的域名 DocumentRoot /var/www/nextcloud <Directory /var/www/nextcloud> AllowOverride All </Directory> SSLProtocol all -SSLv2 -SSLv3 SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM SSLHonorCipherOrder on SSLCertificateFile cert/public.pem SSLCertificateKeyFile cert/*.key SSLCertificateChainFile cert/chain.pem
重启Apache:
service apache2 restart
通过浏览器配置Nextcloud:
访问:
https://你的域名
安装过程:
创建 管理员账号 输入用户名及密码 数据目录 /var/www/data 配置数据库 输入配置PhpMyAdmin过程中记录的"数据库用户"、"数据库密码"、"数据库名"、"主机" 点击"完成安装"
配置APCu:
vi /var/www/nextcloud/config/config.php
根据上文格式添加如下内容:
'memcache.local' => '\OC\Memcache\APCu',
修复数据库中的一些列由于进行长整型转换而缺失的问题:
cd /var/www/nextcloud sudo -u www-data php occ db:convert-filecache-bigint
修复数据库丢失索引的问题:
cd /var/www/nextcloud sudo -u www-data php occ db:add-missing-indices
刷新Nextcloud网页
至此Nextcloud安装已完成
使用occ命令手动向Nextcloud中添加文件:
可以直接把文件上传/下载/拷贝到data目录下,之后使用occ命令将这些文件添加到Nextcloud
扫描所有用户文件:
cd /var/www/nextcloud sudo -u www-data php occ files:scan --all
扫描指定用户文件:
cd /var/www/nextcloud sudo -u www-data php occ user:list sudo -u www-data php occ files:scan user_id
扫描指定文件夹:
cd /var/www/nextcloud sudo -u www-data php occ user:list sudo -u www-data php occ files:scan --path="user_id/files/mount_name"
如果遇到一些小问题也可以使用occ命令修复:
cd /var/www/nextcloud sudo -u www-data php occ maintenance:repair
更多occ命令请参见官方手册:Using the occ command
更多Nextcloud管理内容请参见官方手册:Nextcloud 13 Administration Manual
补充:安装SMBClient
由于Linux默认不支持SMB协议,所以要在Nextcloud中添加使用SMB协议的外置存储时,需要安装SMBClient.
apt-get install smbclient