文章目录

  • 1 OwnCloud简介
  • 2 OwnCloud的安装
  • 3 将OwnCloud服务进行HTTPS加密



1 OwnCloud简介

OwnCloud是一款开源的个人网盘软件,适用于自建服务器的云存储服务,一般为个人使用,具有文件同步、文件分享功能,并支持WebDAV以及在线流媒体播放。OwnCloud服务端的运行依赖LAMP环境,因此我们应当先将LAMP环境配置完善后再进行OwnCloud服务端软件的安装。

2 OwnCloud的安装

在安装过程中有如下几个关键步骤以及需要注意的点:

  1. 安装Apache,Ubuntu包名为apache2,CentOS包名为httpd。安装结束后打开默认界面测试,注意开通防火墙相关端口。
  2. 安装版本高于5.6的PHP,若版本低于5.6则首先删除所有php相关包,然后通过添加源的方式安装更高版本的包。
  3. 为了保证大文件传输时不出错,修改php的配置文件php.ini,将其中的upload_max_filesizepost_max_size修改为一个较大的值(表示的是上传文件和通过POST方式发送数据包的最大大小,推荐写100M或更大),并修改max_execution_timemax_input_time(表示每个PHP页面运行和接收数据的最长时间,建议写600及以上的值),最后修改memory_limit(内存占用大小)为32M及以上(不能过大)。
  4. 安装并开启数据库服务(MySQL或MariaDB),并开放3306端口。
  5. 官网下载OwnCloud的安装包,并将解压后的文件夹复制到/var/www/html后,注意将文件夹所属目录的所有者更改为apache(Ubuntu为www-data)用户(chown -R apache.apache /var/www/html
  6. 配置文件路径并重启Apache服务后,通过Web界面安装OwnCloud,创建管理员账号并连接数据库后,就可以利用http://ip:端口/index.php访问OwnCloud服务了。

3 将OwnCloud服务进行HTTPS加密

将OwnCloud服务与域名绑定并进行https加密是很有必要的。笔者通过Nginx反向代理实现此需求。

为避免与nginx的http服务冲突,首先设置Apache的监听端口为81并将OwnCloud服务运行于其上,接着在nginx的配置文件中新建一个server块:

server {
        listen 443 ssl;
        server_name  cloud.yourdomain.com; # 修改成你自己的域名
        charset utf-8;

        # 更改数据包大小上限避免大文件传输出错
        client_max_body_size 4096M;
        
        # SSL证书,可通过Let's Encrypt https://letsencrypt.org/ 提供的程序申请
        ssl_certificate yourdomain.com/fullchain.pem;
        ssl_certificate_key yourdomain.com/privkey.pem;
        ssl_trusted_certificate  yourdomain.com/chain.pem;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        server_tokens off;

        fastcgi_param   HTTPS               on;
        fastcgi_param   HTTP_SCHEME         https;

        location / {
        	# 反向代理本机81端口的OwnCloud服务
            proxy_pass http://127.0.0.1:81;
            index  index.php;
        }
}

运行后发现OwnCloud网页上的登出链接仍然为http://127.0.0.1:81/...,这显然是OwnCloud的php配置中没有更改自定义域名导致的,于是修改OwnCloud的配置文件config.ini(位于安装目录下的config文件夹),在trusted_domains下面添加一行,并增加overwrite.cli.urloverwritehost两个字段,如下所示:

'trusted_domains' => 
  array (
	  0 => '127.0.0.1:81',
	  1 => 'cloud.yourdomain.com',
	  ),
...
'overwrite.cli.url' => 'http://127.0.0.1:81',
'overwritehost' => 'cloud.yourdomain.com',
...

重启apache服务后大功告成,可以通过https://cloud.yourdomain.com/index.php访问你的网盘了!