Nextcloud on Alibaba Cloud の構築メモ


はじめに

個人用のメモとして半年ほど残していましたが、下書きスペースの不足により公開。
Alibaba Cloud の CentOS へ Nextcloud を構築する簡易メモです。
最後に実験として中国国内サーバーからCENを使っての接続も試しています。

Middleware Install

sudo yum install -y epel-release yum-utils unzip curl wget bash-completion policycoreutils-python mlocate bzip2

sudo yum update -y

Apache

sudo yum install -y httpd

sudo systemctl enable httpd.service
sudo systemctl start httpd.service

PHP

sudo yum install -y centos-release-scl

sudo yum install -y rh-php72 rh-php72-php rh-php72-php-gd rh-php72-php-mbstring rh-php72-php-intl rh-php72-php-pecl-apcu rh-php72-php-mysqlnd rh-php72-php-pecl-redis rh-php72-php-opcache rh-php72-php-imagick

sudo ln -s /opt/rh/httpd24/root/etc/httpd/conf.d/rh-php72-php.conf /etc/httpd/conf.d/

sudo ln -s /opt/rh/httpd24/root/etc/httpd/conf.modules.d/15-rh-php72-php.conf /etc/httpd/conf.modules.d/

sudo ln -s /opt/rh/httpd24/root/etc/httpd/modules/librh-php72-php7.so /etc/httpd/modules/

シンボリックリンクを確認します。

ls -la /etc/httpd/conf.d/rh-php72-php.conf
ls -la /etc/httpd/conf.modules.d/15-rh-php72-php.conf
ls -la /etc/httpd/modules/librh-php72-php7.so

sudo ln -s /opt/rh/rh-php72/root/bin/php /usr/bin/php
ls -la /usr/bin/php

Database

curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash

cat /etc/yum.repos.d/mariadb.repo

sudo yum install MariaDB-server MariaDB-client

sudo systemctl enable mariadb.service
sudo systemctl start mariadb.service

もしかしたら以下が必要・・・?
sudo mkdir -p /etc/mysql/mariadb.conf.d/
sudo mkdir -p /etc/mysql/conf.d/

Redis

sudo yum install -y redis

sudo systemctl enable redis.service
sudo systemctl start redis.service

Database Configuration

MariaDB

こちら参照

sudo cp -p /etc/my.cnf /etc/my.cnf.bak

Original File

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

sudo vi /etc/my.cnf

Edited File

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
transaction_isolation = READ-COMMITTED
binlog_format = ROW
innodb_large_prefix=on
innodb_file_format=barracuda
innodb_file_per_table=1

[mysqld_safe]

log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

[server]
skip-name-resolve
innodb_buffer_pool_size = 128M
innodb_buffer_pool_instances = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 32M
innodb_max_dirty_pages_pct = 90
query_cache_type = 1
query_cache_limit = 2M
query_cache_min_res_unit = 2k
query_cache_size = 64M
tmp_table_size= 64M
max_heap_table_size= 64M
slow-query-log = 1
slow-query-log-file = /var/log/mariadb/slow.log
long_query_time = 1

[client-server]
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/

[client]
default-character-set = utf8mb4

sudo systemctl restart mariadb.service

PHP configuration

sudo cp -p /etc/opt/rh/rh-php72/php.ini /etc/opt/rh/rh-php72/php.ini.bak

sudo vi /etc/opt/rh/rh-php72/php.ini

# configuration for PHP MySQL module
extension=pdo_mysql.so

[mysql]
mysql.allow_local_infile=On
mysql.allow_persistent=On
mysql.cache_size=2000
mysql.max_persistent=-1
mysql.max_links=-1
mysql.default_port=
mysql.default_socket=/var/lib/mysql/mysql.sock  # Debian squeeze: /var/run/mysqld/mysqld.sock
mysql.default_host=
mysql.default_user=
mysql.default_password=
mysql.connect_timeout=60
mysql.trace_mode=Off

パスワード設定 Zaq12wsx
mysql -uroot -p

CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'password';

CREATE DATABASE IF NOT EXISTS nextcloud;

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES ON nextcloud.* TO 'nextcloud'@'localhost' IDENTIFIED BY 'password';

FLUSH privileges;

quit

Installing Nextcloud

ココからダウンロードする。

wget https://download.nextcloud.com/server/releases/nextcloud-16.0.1.zip

unzip nextcloud-16.0.1.zip

sudo cp -R nextcloud/ /var/www/html/

sudo mkdir /var/www/html/nextcloud/data
sudo chown -R apache:apache /var/www/html/nextcloud

systemctl restart httpd.service

Nextcloud Access

コチラからダウンロード可能です。

初期状態だとこんな感じです。

実際にサーバーのdataディレクトリを見に行くと同じ様にファイルが置かれています。

新しいファイルをNextcloudの画面からアップロードするとサーバー側のディレクトリが増えてファイルもちゃんと増えていました。

中国からCEN経由でのVPC間アクセス

こんな感じの構成で中国のサーバーからのアクセス実験をしてみました。

ちなみにこのままだとtrusted_domainsにPrivateのIPが設定されていないので信頼できないドメインと判断されます。

画面の指示の通りconfig.phpを編集します。
最初にバックアップを作成します。
sudo cp -p /var/www/html/nextcloud/config/config.php /var/www/html/nextcloud/config/config.php.bak

config.phpを編集します。
sudo vi /var/www/html/nextcloud/config/config.php

編集前のconfig.php

<?php
$CONFIG = array (
  'instanceid' => '一意の識別子(さわるな危険)',
  'passwordsalt' => '自動生成(さわるな危険)',
  'secret' => '自動生成(さわるな危険)',
  'trusted_domains' => 
  array (
    0 => '47.xxx.xxx.xxx',
  ),
  'datadirectory' => '/var/www/html/nextcloud/data',
  'dbtype' => 'mysql',
  'version' => '16.0.1.1',
  'overwrite.cli.url' => 'http://47.xxx.xxx.xxx/nextcloud',
  'dbname' => 'データベース名',
  'dbhost' => 'localhost:3306',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'mysql.utf8mb4' => true,
  'dbuser' => 'データーベースユーザー',
  'dbpassword' => 'データーベースユーザーパスワード',
  'installed' => true,
);

編集箇所

  'trusted_domains' => 
  array (
    0 => '47.xxx.xxx.xxx',
    1 => '10.10.1.36',
  ),

ファイル保存後に再度アクセスすればログイン可能な状態になります。
サービスの再起動などは不要です。

日本からアップロードしたファイルを中国(上海)のマシンから取得してみます。

問題なくファイルが取得できました😁

おわりに

ちょっとした Nextcloud の Alibaba Cloud での構築とアクセスの実験でした。
CENに関してはコチラも参考にどうぞ