• owncloud 容器复杂配置


    前言

    由于 ownCloud 官方的 owncloud 镜像已经于 2018.12 停止维护,转而发布了 owncloud/server 镜像。但是 owncloud/server 镜像创建运行的容器默认数据库为 SQLite ,不知怎么的,我无论是指定本地还是远程数据库 OCC 都换不到 MariaDB 上去。只能退而求其次,使用 deb 软件包的方法安装。

    创建 mariadb 容器

    • 拉取镜像:

      sudo docker pull jsurf/rpi-mariadb
      
    • 创建网络:

      sudo docker network create -d bridge --subnet=172.20.0.0/24 --gateway 172.20.0.1 amber-net
      
    • 创建运行容器:

      sudo docker run -i -t --name rpi-mariadb -p 10200:3306 --net amber-net --ip 172.20.0.20 -v /mnt/USB64G/rpi-mariadb:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=rasyogile -d jsurf/rpi-mariadb:latest
      
    • owncloud 数据库及帐户配置:

      CREATE DATABASE IF NOT EXISTS owncloud;
      GRANT ALL PRIVILEGES ON owncloud.*
        TO 'owncloud'@'172.20.0.10'
        IDENTIFIED BY 'xxxxxxxxx';
      

    创建 debian 容器

    • 拉取 debian 镜像命令:

      sudo docker pull debian:latest
      
    • 创建运行容器:

      sudo docker run -i -t --name owncloud -p 10100:80 --net amber-net --ip 172.20.0.10 --link rpi-mariadb:mariadb -v /mnt/USB64G/owncloud:/usr/local/src/owncloud -d debian:latest
      

    搭建 owncloud

    • 在以 debian 容器为基础的名字为 owncloud 容器中执行:
      • 可更新软件列表更新:
      • 下载文本编辑软件 vim 、 nano 。
      • 换源。

    安装 apache2

    • 命令:

      apt install apache2
      service apache2 start
      
    • 测试:

    安装 PHP

    • 命令:

      apt install php
      
    • 安装依赖:

      apt-get install php7.3-intl php7.3-zip php7.3-xml php7.3-dom php7.3-curl php7.3-mbstring php7.3-mb php7.3-gd php7.3-mysqli libmariadb-dev libapache2-mod-php
      
    • 重启 apache2

      service apache2 restart
      
    • 测试:

      • /var/www/html 中,删除之前的 apache2 的 index.html ,重新编写 index.php :

        <?php
        phpinfo();
        ?>
        

    安装 owncloud

    安全及设置警告

    • 如图。

    事务文件锁定

    • 事务文件配置为使用基于内存的锁定。

    • 安装组件。

       apt install redis-server php7.3-redis
      
    • 安装完后,修改 config/config.conf 配置。

      'memcache.locking' => 'OCMemcacheRedis',
      
    • 启动 redis-server 。

      • 每次容器启动都要启动。
      /etc/init.d/redis-server start
      
    • 重启 apache2 。

    启用系统 cron

    • 计划任务选择 Cron 。

    完整性检查

    • 一些文件没有通过完整性检查,点击 “无效文件列表” ,可查看无效文件。

      Results
      =======
      - core
      	- FILE_MISSING
      		- .htaccess
      		- .user.ini
      

      可以看到 .htaccess.user.ini 无效。

    • 重新解压一个 owncloud 文件夹,并将新目录下的 .htaccess.user.ini 复制到 /var/www/html/owncloud 目录下。

    • 重启 apache2 。

    使数据目录不再可访问

    • 修改 /etc/apache2/apache2.conf 文件。

      <Directory /var/www/>
              Options Indexes FollowSymLinks
              AllowOverride None
              Require all granted
      </Directory>
      

      修改为:

      <Directory /var/www/>
              Options Indexes FollowSymLinks
              AllowOverride all
              Require all granted
      </Directory>
      
    • 重启 apache2 。

    内存缓存配置

    • 非分布式服务器使用下述即可:

      apt install php7.3-apcu
      
    • 安装完后,修改 config/config.conf 配置。

      'memcache.local' => 'OCMemcacheAPCu',
      
    • 重启 apache2 。

    配置 HTTPS

    • 可以通过 Nginx 容器代理。
    • 也可以单独为 owncloud 容器配置 SSL 。

    配置 HSTS

    • Nginx :

      • /etc/nginx/conf.d/default.confserver{} 中添加:

        add_header Strict-Transport-Security "max-age=15552000; includeSubdomains; preload";
        
      • 如果不起作用,则加到 location{} 中。

    • Apache2 :

      • 无 httpd.conf 文件时,修改 /etc/apache2/sites-enabled/000-default.conf 文件:

        # 在第一行添加(所有 <VirtualHost *:*> 之前)
        LoadModule headers_module  /usr/lib/apache2/modules/mod_headers.so
        
        # 在要实施 HSTS 的端口 <VirtualHost> 中(这里是 80 端口,SSL 由 Nginx 代理)
        Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload"
        
      • 有 httpd.conf 文件时,末尾新增:

        Header always set Strict-Transport-Security "max-age=15552000"
        RewriteEngine on
        RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
        

    安装中错误处理

    PHP 不编译。

    • 安装 libapache2-mod-php 组件。

      apt install apt install libapache2-mod-php
      
    • 重启 apache2 。

    宿主机、容器重启后访问无反应

    • 启动 apache2 。

      service apache2 restart
      

    模块未安装

    • 在安装途中如果少安装了依赖可能出现众多错误提示:

      没有安装数据库驱动 (SQLite、MySQL 或 PostgreSQL)。
      PHP zip 模块未安装。
      请联系服务器管理员安装模块。
      
      PHP dom 模块未安装。
      请联系服务器管理员安装模块。
      
      PHP XMLWriter 模块未安装。
      请联系服务器管理员安装模块。
      
      PHP XMLReader 模块未安装。
      请联系服务器管理员安装模块。
      
      PHP intl 模块未安装。
      请联系服务器管理员安装模块。
      
      PHP libxml 模块未安装。
      请联系服务器管理员安装模块。
      
      PHP mb multibyte 模块未安装。
      请联系服务器管理员安装模块。
      
      PHP GD 模块未安装。
      请联系服务器管理员安装模块。
      
      PHP SimpleXML 模块未安装。
      请联系服务器管理员安装模块。
      
      PHP cURL 模块未安装。
      请联系服务器管理员安装模块。
      
      PHP 模块已经安装,但仍然显示未安装?
      请联系服务器管理员重启网页服务器。
      
    • 每个错误提示都与之前安装 PHP 时安装的依赖对应。

  • 相关阅读:
    ATS(App Transport Security)对HTTP协议屏蔽引起的问题
    后台子线程(非主线程)更新UI引起的警告
    Xcode无法启动ios模拟器的问题
    UIButton修改文字大小问题
    imageNamed和imageWithContentsOfFile-无法加载图片的问题
    storyboard在ios模拟器无法显示的问题
    返回一个数组的连续子数组和的最大值
    第二周学习进度总结
    软件工程开学第一节课课堂测试
    第一周学习进度总结
  • 原文地址:https://www.cnblogs.com/Yogile/p/13341991.html
Copyright © 2020-2023  润新知