国外优秀云存储上不去或者速度奇慢(感谢GFW),国产各大云盘已经残废或者自我阉割,数据安全性也历来没法保障。多年折腾经验告诉我,最重要的仍是数据。硬件软件有价,宝贵的数据和资料是无价的。本身早有折腾私有云存储的想法,却一直没有找到使人满意的方案(曾经折腾过 Syncthing,优势是能够指定多个不一样的盘同步,可是蛋疼的客户端CPU占用率,让我使用一天后果断放弃)。
偶然机会当我发现NextCloud的时候,第一眼就决定是它了(其实第一眼看到的是OwnCloud,hoho)。php
NextCloud方案,是经典云方案OwnCloud的一个folk。听说OwnCloud的母公司已经被一间德国公司收购了,总体方案和产品趋向于稳定与收费用户。原项目组中的骨干力量,以为还有更好的功能能够开发,因而就有了今天的主角NextCloud。html
详细介绍可参考
https://nextcloud.com/mysql
支持多平台客户端,官方提供web、Windows、Linux、Mac、IOS、Android、WindowPhone全家桶套餐linux
支持link外链,并且可单独设置访问密码、共享过时时间web
使用者操做傻瓜,简单方便sql
支持插件扩展功能数据库
自带文件预览(还没细细研究支持那些格式,初看pdf是能够在线预览的)apache
不支持多盘同步编程
刚上车,也不知道有什么坑。(听说当年OwnCloud中文目录或者文件中文名乱码的问题,我如今NC上没有碰见,彻底没问题)vim
仍是那句话,开源的要会折腾才能上车,并且挺折腾的。
简单来讲NextCloud是基于经典LAMP平台的一个应用。网页服务由Apache提供,网络编程语言为php,数据库用Mariadb等。如下是我部署的环境清单。
|软件|版本|
|-|-|
|RHEL |7 update3|
|PHP|5.6.30|
|MariaDB|5.5.52|
|Apache|httpd-2.4.6|
|NextCloud|11.0.1|
为了减小麻烦,关闭了防火墙和SElinux,不赘述开启相关端口、防火墙、布尔值等。固然,在成功实现功能后,为了安全性,Selinux和FW仍是要加上的。毕竟是数据安全,有必要。我也计划单独写一篇安全配置和高阶配置的笔记。
下面就按照php、Mariadb、Apache、NextCloud的顺序简述一下安装过程
yum install php
| 模块 | 安装语句 |
| - | - |
| PHP (>= 5.6, 7.0 or 7.1) | yum install php |
| PHP module ctype | 自带 |
| PHP module dom | yum install php-xml |
| PHP module GD | yum install gd |
| PHP module iconv | 自带 |
| PHP module JSON | 自带 |
| PHP module libxml (Linux package libxml2 must be >=2.7.0) | 自带 |
| PHP module mb multibyte | ftp://fr2.rpmfind.net/linux/centos/7.3.1611/os/x86_64/Packages/php-mbstring-5.4.16-42.el7.x86_64.rpm |
| PHP module posix | yum install php-posix |
| PHP module SimpleXML | 自带 |
| PHP module XMLWriter | yum install php-xml |
| PHP module zip | 自带 |
| PHP module zlib | 自带 |
| PHP module curl | 自带 |
| PHP module fileinfo | 自带 |
| PHP module bz2 | 自带 |
| PHP module intl | ftp://rpmfind.net/linux/centos/7.3.1611/os/x86_64/Packages/php-intl-5.4.16-42.el7.x86_64.rpm |
| PHP module mcrypt | ftp://rpmfind.net/linux/epel/7/x86_64/p/php-mcrypt-5.4.16-7.el7.x86_64.rpm
ftp://rpmfind.net/linux/epel/7/x86_64/l/libmcrypt-2.5.8-13.el7.x86_64.rpm |
| PHP module openssl | 自带 |
php -m | grep -i <module_name>
因为RHEL7.3 默认自带的php版本为5.4.6的,而NextCloud须要是5.6以上版本。因此须要经过第三方源进行升级。
强烈建议使用EPEL源和IUS源,不要使用remi的源。CentOS官方的说法
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm wget https://dl.iuscommunity.org/pub/ius/stable/Redhat/7/x86_64/ius-release-1.0-14.ius.el7.noarch.rpm rpm -ivh epel-release-latest-7.noarch.rpm rpm -ivh ius-release-1.0-14.ius.e17.noarch.rpm yum clean all yum list
yum install yum-plugin-replace
yum install libtool-ltdl yum install libvpx yum replace php --replace-with php56u yum install php56u-gd
升级完,若是http服务已经启动的话,须要重启httpd服务生效
php -v //检查版本 php -m | grep -i <module_name> //检查模块
yum install mariadb yum install mariadb-server
修改 /etc/my.conf
[mysqld] #datadir=/var/lib/mysql //默认位置 #socket=/var/lib/mysql/mysql.sock //默认位置 datadir=/opt/nextcloud/nextclouddb //自定义位置 socket=/opt/nextcloud/nextclouddb/mysql.sock //自定义位置
chown -R mysql:mysql /opt/nextcloud/nextclouddb
由于改了数据库存储路径后,须要同时修改相关脚本,不然默认脚本执行仍是到默认的/var下去找sock,执行会失败。
vim /usr/bin/mysql_secure_installation
在make_config()段内添加配置
make_config() { echo "# mysql_secure_installation config file" >$config echo "[mysql]" >>$config echo "user=root" >>$config esc_pass=`basic_single_escape "$rootpass"` echo "password='$esc_pass'" >>$config echo "socket=/opt/nextcloud/nextclouddb/mysql.sock" >>$config //添加此行 #sed 's,^,> ,' < $config # Debugging }
systemctl enable mariadb systemctl start mariadb
mysql_secure_installation
mysql -u root -p //使用root登录库
CREATE DATABASE nextcloud_db; GRANT ALL ON nextcloud_db.* TO 'nextcloud'@'%' IDENTIFIED BY 'nextcloud'; //注意必定要加 "%",不然没法让网络让任何人上传文件 FLUSH PRIVILEGES; exit;
从其余主机上远程登录验证
mysql -u nextcloud -p -h IP地址
检查库
show databases; use nextcloud_db;
cd /opt/nextcloud wget https://download.nextcloud.com/server/releases/nextcloud-11.0.1.zip unzip nextcoud-11.0.1.zip
yum install httpd
偷了个懒,不创建虚拟站点了。直接给/var/www/html下加了个软链接
chown -R apache:apache /opt/nextcloud/nextcloud cd /var/www/html ln -s /opt/nextcloud/nextcloud nextcloud
systemctl enable httpd systemctl start httpd
|配置项|配置内容|备注|
|-|-|-|
|NextCloud平台管理员用户名|自定义|-|
|NextCloud平台管理员密码|自定义|-|
|data folder|/var/www/html/nextcloud|根据实际填写|
|database user |dbusername|根据以前数据库操做时新建用户填写|
|database password|dbpassword|根据以前数据库操做时新建用户填写|
|database name|nextcloud_db|根据以前建库填写|
|database host|数据库listener的IP地址|务必写对外通讯地址,不要写localhost和127.0.0.1。我这儿卡了好久。|
基于以上步骤,基本就完成了基本的NextCloud功能部署。
访问的话,能够经过http://IP/nextcloud 来查看,并经过web方式进行用户建立及文件的查看。
客户端的话也比较简单,添加url、用户、密码就能够同步了。
rhel的iso里面不全,epel源也不够用,有些是从rpmfind.net上找的。
rhel7.3已是rhel目前的最高版本了,但是php版本只是5.4的,不符合NC11最低的5.6要求。我的用户没有rhel的程序订阅,因此只能本身找。查了下CentOS官方推荐使用IUS的源 1,才搞定。
初次配置时出现了SQLSTATE[HY000][2002]No such file or directory
报错。查了下官方说法是 2
SQLSTATE[HY000] [2002] No such file or directory -> There is a problem accessing your SQLite database file in your data directory (data/nextcloud.db). Please check the permissions of this folder/file or if it exists at all. If you’re using MySQL please start your database.
不过我没用sqlite,并且库确定是启着的。
后来本身琢磨才发现是NC配置数据库接口时要配置外网IP,原觉得NC和库都在一台机器上填localhost解析就好了,对架构仍是有点误解。固然库上还要拓展数据库写用户的外网访问,加上"%"。
NextCloud 11 下载
https://nextcloud.com/install...
NextCloud 11 客户端下载
https://nextcloud.com/install...
NextCloud 11 安装手册
https://docs.nextcloud.com/se...