Help us understand the problem. What is going on with this article?

Nextcloud on Alibaba Cloud の構築メモ

はじめに

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

Middleware Install

image.png

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

image.png

sudo yum update -y

image.png

Apache

sudo yum install -y httpd

image.png

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

image.png

PHP

sudo yum install -y centos-release-scl

image.png

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

image.png

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/

image.png

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

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

image.png

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

image.png

Database

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

image.png

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

image.png

sudo yum install MariaDB-server MariaDB-client

image.png

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

image.png

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

Redis

sudo yum install -y redis

image.png

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

image.png

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

image.png

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

image.png

CREATE DATABASE IF NOT EXISTS nextcloud;

image.png

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

image.png

FLUSH privileges;

image.png

quit

image.png

Installing Nextcloud

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

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

image.png

unzip nextcloud-16.0.1.zip

image.png

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

image.png

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

image.png

systemctl restart httpd.service

Nextcloud Access

image.png

image.png

image.png

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

image.png

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

image.png

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

image.png

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

image.png

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

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

image.png

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

image.png

画面の指示の通り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',
  ),

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

image.png

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

image.png

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

おわりに

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした