VPS快速完美部署ownCloud/Nextcloud全过程(2)

Posted by 橙叶 on Sat, Apr 15, 2017

传送门:VPS快速完美部署ownCloud/Nextcloud全过程(1)

配置HTTPS

申请SSL证书

首先我们需要一个SSL证书,并且不建议使用自签名证书。

证书有收费的也有免费的,收费的一般比较昂贵,像我这样自己玩玩用免费的就够了。

我是在阿里云上申请的免费证书,当然,像腾讯云这样的也提供免费证书。

部署SSL证书

我们可以参考阿里云给出的说明,将SSL证书部署到VPS上。

首先将证书文件下载到VPS中。

阿里云所给教程如下

( 1 ) 在Apache的安装目录下创建cert目录,并且将下载的全部文件拷贝到cert目录中。如果申请证书时是自己创建的CSR文件,请将对应的私钥文件放到cert目录下并且命名为214067115020415.key;
( 2 ) 打开 apache 安装目录下 conf 目录中的 httpd.conf 文件,找到以下内容并去掉“#”:
#LoadModule ssl_module modules/mod_ssl.so (如果找不到请确认是否编译过 openssl 插件)
#Include conf/extra/httpd-ssl.conf
你也可以用下面的命令代替这一步:
a2enmod ssl
service apache2 restart

修改主机配置文件

( 3 ) 打开 apache 安装目录下sites-avaliable/000-default.conf文件, 在配置文件中添加以下配置语句:
# 添加 SSL 协议支持协议,去掉不安全的协议
SSLProtocol TLSv1 TLSv1.1 TLSv1.2
# 修改加密套件如下
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4
# 证书公钥配置
SSLCertificateFile cert/public.pem
# 证书私钥配置
SSLCertificateKeyFile cert/214067115020415.key
# 证书链配置,如果该属性开头有 '#'字符,请删除掉
SSLCertificateChainFile cert/chain.pem
保存后重启apache2

快捷方法

我们可以使用Let's Encrypt的一键部署SSL证书的功能。

使用carbot进行一键部署,首先安装软件源:

$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install python-certbot-apache

执行以下命令,一键部署SSL证书

certbot --apache

重启Apache,可以看到已经能够通过https链接访问Nextcloud了,左上角有了绿色小锁的标志。

修改config.php

需要在config.php中做一些相关设置。编辑config.php文件,将
'overwrite.cli.url' => 'http://cloud.nosu.win',
改为
overwrite.cli.url' => 'https://cloud.nosu.win',

配置HSTS

别急,还没完呢,此时进入Nextcloud管理界面,会有这样一条提示消息:

[infobox]HSTS(HTTP Strict Transport Security)国际互联网工程组织IETE正在推行一种新的Web安全协议 HSTS的作用是强制客户端(如浏览器)使用HTTPS与服务器创建连接。[/infobox]

开启HSTS

编辑/etc/apache2/sites-available/000-default.conf以开启HSTS。(注意:如果使用Let's Encrypt一键配置,需要修改的配置文件不是000-default.conf而是000-default-le-ssl.conf)

1.在第一行加入

LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so

像这样:

2.在<VirtualHost cloud.nosu.win>和</VirtualHost>之间加入:

<IfModule mod_headers.c>
      Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload"
</IfModule>

像这样:

保存退出,退出后重启Apache服务

service apache2 restart

配置内存缓存

基本按照Nextcloud/ownCloud配置APCu本地缓存+Memcached分布式缓存里提到的方式进行配置。

安装APCu和Memcached

apt-get install php-apcu memcached php-memcached

在nextcloud/config/config.php中加入以下内容

'memcache.local' => '\OC\Memcache\APCu',
  'memcache.distributed' => '\OC\Memcache\Memcached',
  'memcached_servers' => array(
     array('localhost', 11211),
     ),

一个完整的config.php文件示例:

<?php
$CONFIG = array (
  'instanceid' => 'ocwFEEGDExfd9',
  'passwordsalt' => 'ajfjrgahughurhgodsi',
  'secret' => 'N7CzQTEXU5Fefefdf/xaf+3afrggdrtGRergsGVlLPgQzlnVm',
  'trusted_domains' =>
  array (
    0 => 'cloud.nosu.win',
  ),
  'datadirectory' => '/cloudserver/data',
  'overwrite.cli.url' => 'http://cloud.nosu.win',
  'dbtype' => 'mysql',
  'version' => '11.0.2.7',
  'dbname' => 'db',
  'dbhost' => 'localhost',
  'dbport' => '',
  'dbtableprefix' => 'db_',
  'dbuser' => 'db',
  'dbpassword' => 'dbpasswd',
  'logtimezone' => 'UTC',
  'installed' => true,
  'memcache.local' => '\OC\Memcache\APCu',
  'memcache.distributed' => '\OC\Memcache\Memcached',
  'memcached_servers' => array(
     array('localhost', 11211),
     ),
);

去除index.php

访问Nextcloud时,url中会含有index.php

修改config/config.php

1.编辑config/config.php

在里面加入以下内容:

'overwrite.cli.url' => 'https://cloud.nosu.win',
'htaccess.RewriteBase' => '/',

这段代码的作用是设置.htaccess生成规则。

2.更新.htaccess文件

使用OCC命令重写.htaccess文件

sudo -u www-data php occ maintenance:update:htaccess
.htaccess has been updated

再次刷新页面:

完成index.php的去除



comments powered by Disqus