自行搭建私有云ownCloud,启用SSL,其他配置
ownCloud简介
ownCloud(官网)是一款开源的私有云框架,可以通过它实现个人网盘的功能,如果拥有一个性能不错的VPS,那么就可以摆脱奇慢无比的百度云等网盘啦!我花了大约一天的时间总算搭好了ownCloud。
用途
- 如果搭在VPS上,可以用作个人的网盘使用。ownCloud提供了各个平台的文件同步客户端,因此搭建好ownCloud之后即可使用客户端来同步、上传、下载文件,十分方便。
- 可以搭在性能较好的智能路由器上,连接硬盘,这样路由器就能作为个人的NAS存储云使用。ownCoud的文档上说明了最低配置要求需要128MB的内存(推荐512MB),这对路由器的性能提出了一定需求,请注意。
推荐配置
官方文档提供了推荐的配置要求
- 操作系统:Ubuntu 16.04 LTS.
- Web服务器:Apache 2.4.
- 数据库:MySQL/MariaDB 并使用 InnoDB storage engine
- PHP 7
安装
安装准备
在安装之前,你需要准备的内容有:
- 一台满足最低配置要求的Linux主机,可以是云主机、路由器、服务器。
- 主机可以从外网通过ip地址或者域名访问从外网通过ip地址或者域名访问。
- 由于主机将会作为网盘使用,牵涉到大量的文件传输,因此带宽和硬盘都不能太小。能接近常见使用场景的最高带宽和硬盘大小为最佳。在本例中,我的云主机带宽只有1MB,硬盘20GB。因此打开网页时能明显感到延迟。如果使用路由器搭建私有云,那么带宽一般不会有问题。请确保硬盘空间和内存大小足够,如路由器支持USB,可外接硬盘,内存大小请务必满足ownCloud的最低要求(见上)。
开始安装
登录你的主机,并开始安装ownCloud。安装的方法可以参考官方文档。下面我会以centOS7.2为例进行介绍。
数据库安装
ownCloud支持SQlite数据库,因此可以选择不安装额外的数据库系统。然而SQlite不适用于大型的系统,因此如果你使用配置足够的云主机,建议额外安装数据库,如果使用路由器,可以选择不安装数据库系统。
ownCloud支持的数据库有MySQL和MariaDB,下面以MySQL为例。
首先,centOS支持yum包管理器,可以很方便的安装各种组件。但MySQL不在yum的默认源当中,因此需要添加这项源。
可以访问这里,查看完整的安装过程。由于版本的更新,详细步骤可能有所不同,一切请以官方文档为准。MySQL5.7的安装过程如下:
# 下载源 wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm # 添加源 .noarch.rpm # 安装MySQL sudo yum install mysql-community-server
请保持流畅的网络访问。至此MySQL安装完毕。
接下来,启动并查看MySQL的安装状态
# 启动mysql sudo service mysqld start #查看mysql状态 sudo service mysqld status
成功运行的结果如下,(注意由于不同的系统,命令显示可能不同)

接下来,就可以登录mysql并修改root密码了。如果你是ubuntu系统,可能安装mysql的过程中系统会要求你设置root密码,那么这些步骤可以跳过。对于centOS而言,系统在第一次启动mysql时自动生成了一个随机的密码,因此最好修改它。网上提供了很多修改root密码的方式,但最好还是参考官方文档。使用如下命令:
# 查看mysql密码 sudo grep 'temporary password' /var/log/mysqld.log # 登录mysql mysql -uroot -p # 接下来输入root密码
对于centOS而言,mysql在第一次启动时创建了临时的密码,并写入了mysqld.log日志,因此通过grep命令找到临时密码的值,并使用这个值登录系统。
接下来需要修改root密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
其中'MyNewPass4!'位置改为你自己的root密码。官方文档中指出,密码需要至少8位,并且包含小写、大写、数字、符号。
至此,mysql的安装就完成了。你可以使用任意的mysql客户端如navicat、workbench等测试登录,你可能还需要修改root用户的allow host,这些内容请自行搜索解决,再次不再赘述。
web appche的安装
appche web用于网页服务器的运行,在centOS下,我们只需要通过以下命令即可安装。
yum install httpd
通过以下命令来启动或关闭httpd服务器
# 启动apache服务 service httpd start # 关闭 service httpd stop # 重启 service httpd restart # 查看状态 service httpd status
启动appche服务器,接下来打开浏览器,从外网访问你的主机地址,如果你看到了apache的网页,就表明配置成功啦。
在centOS中,默认的网页根目录位于/var/www/html下,这个位置随着系统的不同可能有所不同,请注意。
安装ownCloud
安装ownCloud的过程也很简单,方法如下
# 下载 wget https://download.owncloud.org/community/owncloud-9.1.4.zip # 解压 unzip https://download.owncloud.org/community/owncloud-9.1.4.zip # 复制到网页根目录 cp -r owncloud/* /var/www/html
注意代码中的下载地址,可能随着版本的更新而失效,你可以在这里找到最新的下载地址。
通过以上三步,就能把ownCloud放到正确的目录了。这时候你可以再度打开浏览器输入地址查看,但是你可能只能看到一堆源代码,这是因为ownCloud基于php开发,但我们还没有安装PHP的运行环境。
安装PHP及相关组件
接下来我们需要安装PHP及其他的PHP组件。ownCloud官方建议安装5.6+以上的PHP版本,这也就是说如果我们使用
yum install php
yum只会为我们安装5.4版本的php。要安装php5.6,需要首先添加一些源。你可以在这里查看更详细的教程。
# 添加源 rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm # 安装PHP5. yum install php56w php56w-opcache
请注意,如果你使用Ubuntu安装,那么官方文档里提供了一种非常简单的方法,你可以参看这里。
除了php本身之外,你还需要安装其他php的各类组件。
yum install php56w-cli php56w-common php56w-fpm php56w-gd php56w-mbstring php56w-xml
可以在这里找到所有需要的组件。
此外,还需要安装数据库连接驱动
# php-mysql yum install php56w-mysql # 以下可选yum install php56w-pecl-apcu
apcu是ownCloud可选安装的local cache ,用于增强性能。
php组件相关安装列表如下

你可以使用如下命令查看所有安装的php组件
yum list installed | grep "php"
最后重启apache服务器。
service httpd restart
从浏览器打开主机地址,看看是否能够访问了呢。
配置ownCloud简介
至此,ownCloud安装完毕。接下来就是ownCloud的配置了,受篇幅所限,下面不再详述,仅提供相关的链接供参考。
初次设置
接下来打开主机地址,如果看到了ownCloud的界面即安装完成,如果提示缺少组件,请对照上文。接下来输入管理员账号和密码,并选择mysql作为数据库,填入mysql连接所需的用户名、密码、地址即可。
第一次配置时,需要输入data的存放位置,这里建议不要放在网站目录中,请将data文件夹放在其他目录。如/data/ownCloudData/位置,以防产生权限相关的安全问题。
另外,如果将data文件夹放在了非网页目录,需要再次使用chown命令修改该文件夹的命令,参考这份代码。
输入完必要信息之后,就能顺利登录ownCloud并正常使用啦!恭喜!
启用SSL
在chrome全面开始封杀HTTP之时,再继续用HTTP真有点说不过去啦,是时候将网站转移到HTTPS了。要使用HTTPS,你需要有一张SSL证书,可信的SSL证书大都需要付费。免费的SSL证书有两种办法可以获得
- 使用自签名的SSL证书
- 向StarSSL机构申请证书
下面是相关的链接
更多设置
更多配置包括配置本地缓存、建立邮箱服务等,下面是一些相关的链接
疑难解答
在搭建过程中,我碰到了形形色色的各式各样问题,如果你也如此,可以首先查看httpd中的logs获取错误日志来判断问题所在,centOS下logs的目录位于
cd /etc/httpd/logs/ ls
打开文件名包含error的日志,你可以看到各种详细的PHP发生的错误日志,并据此判断问题所在。
下面是我碰到过的问题,仅供参考。
- 权限相关
- ownCloud缺少权限读取配置文件
- ownCloud报.user.ini , .htaccess文件缺失
- 上传文件时,ownCloud没有权限写入文件暂存区
- 上传文件时,ownCloud没有权限缺少写入data目录的权限
- 解决:使用chown修改权限
- 组件相关
- 打开ownCloud时php报PDO错误
- 解决:安装php56w-mysql
- 邮件服务
- 解决:修复PHP语法错误
- 网页
- 报SSL证书不受信任
- 解决:没办法,要不花钱买付费证书吧
友情链接
- ownCloud - Admin Mannual
- ownCloud - Server Configuration
- ownCloud - Troubleshooting
- How To Install and Configure ownCloud on CentOS 7
最后,祝大家都能搭建出属于自己的私有云!我的私有云

自行搭建私有云ownCloud,启用SSL,其他配置的更多相关文章
- 自行搭建私有云kodexplorer
kodexplorer是一款开源的私有云框架,可以通过它实现个人网盘的功能,如果拥有一个性能不错的VPS,那么就可以摆脱奇慢无比的百度云等网盘啦!最近百度网盘还发出申明,说要限制使用空间.用别人的东西 ...
- [Openwrt 扩展下篇] Openwrt搭建私有云Owncloud 9
网上很多资料讲用Linux打造owncloud构建私有云 ,花了些时间研究了下,我将之前的需求打造成了Openwrt下的Owncloud 9.其实网上还有Seafile.大家对比来看下知乎的评论,其实 ...
- window搭建私有云,只要几分钟
本文介绍如何在window搭建私有云网盘. 工具/原料:一台window系统电脑或者window服务器(vps),Xampp 安装包,可道云kodexplorer安装包 第一步,xampp安装 1.官 ...
- 优秀个人免费私有云OwnCloud 8.0终于发布 - 亮眼新功能初探简介
OwnCloud是一个基于Linux的私有云开源项目,用户可以免费使用它来搭建自己的私有云来进行文件和多媒体等的分享. 本人有幸在大概一年多前因为项目需要而接触和使用到OwnCloud,但不幸的是当时 ...
- centos7 上搭建私有云
OwnCloud环境搭建 一. 环境搭建 1. 环境需求 服务器操作系统:Centos7.0 外网服务器操作系统:Centos7.0 Php版本号:5.4.16 Mysql版本号:5.5.52 Apa ...
- nextcloud搭建私有云盘
一.基础环境准备 1.安装一台centos7的linux服务器. # 系统初始化 # 如果时区不对,请修改时区 #mv /etc/localtime /etc/localtime_bak #ln -s ...
- 腾讯云linux+kodexplorer可道云搭建私有云盘
kodexplorer可道云介绍KodExplorer可道云,原名芒果云,是基于Web技术的私有云和在线文件管理系统.致力于为用户提供安全可控.可靠易用.高扩展性的私有云解决方案.用户只需通过简单环境 ...
- 使用 seafile搭建私有云盘
一.系统环境 系统:CentOS7-1708IP地址:192.168.159.33 二.安装seafile [root@seafile ~]# yum -y install epel-release[ ...
- 在CentOS8下利用seafile软件搭建私有云
一.安装前准备工作 1. 安装EPEL源 EPEL (Extra Packages for Enterprise Linux)是基于Fedora的一个项目,为“红帽系”的操作系统提供额外的软件包,适用 ...
随机推荐
- thinkphp ,进行关联模型的时候出现的问题,版本是3.2
看的后盾网络视频,里面操作的是3.1. 我用的是onethink,基于3.2. 在关联模式的操作时.主要是user role role_user 3个张表 视频中可以操作,但是本地操作出现问题. ...
- UVa 11495 - Bubbles and Buckets
题目大意:给一个有n个数的序列,通过交换相邻的逆序数使这个序列最终有序,求需要交换的次数. 本来可以用冒泡排序解决,但是n达到105,用冒泡排序会超时,用O(nlogn)的归并排序可以达到要求.< ...
- PHP加水印代码 支持文字和图片水印
PHP加图片水印.文字水印类代码,PHP加水印类,支持文字图片水印的透明度设置.水印图片背景透明.自己写的一个类,因为自己开发的一套CMS中要用到,网上的总感觉用着不顺手,希望大家也喜欢这个类,后附有 ...
- Mysql中如何创建、删除授权用户
在mysql数据库下使用create user创建新用户,例如: 新创建后的用户没有任何授权.使用grant命令授权xushouwei访问数据库databaseweb下的所有表,密码为xsw12345 ...
- js原生设计模式——2面向对象编程之js原生的链式调用
技巧点:对象方法中返回当前对象就可以链式调用了,即方法中写return this; <!DOCTYPE html><html lang="en"><h ...
- globalToLocal的坐标变换
globalToLocal $(function() { init(); }); // globalToLocal var stage, holder1, holder2,shape; functio ...
- Memcached Client的释疑
1.目前大多数php环境里使用的都是不带d的memcache版本,这个版本出的比较早,是一个原生版本,完全在php框架内开发的.与之对应的带d的memcached是建立在libmemcached的基础 ...
- ASP.NET Zero--12.一个例子(5)商品分类管理-编辑分类
1.添加编辑按钮 打开文件Index.js [..\MyCompanyName.AbpZeroTemplate.Web\Areas\Mpa\Views\Category\Index.js] 在acti ...
- ReentrantLock获取、释放锁的过程
看了篇文章,觉得分析得很透彻,其后总结的很到位,地址:http://www.iteye.com/topic/1083832 把获取与释放操作串在一起在简单看一下: 获取锁的时候将当前线程放入同步队列, ...
- CF448C [Painting Fence]递归分治
题目链接:http://codeforces.com/problemset/problem/448/C 题目大意:用宽度为1的刷子刷墙,墙是一长条一长条并在一起的.梳子可以一横或一竖一刷到底.求刷完整 ...