この記事を作り直したという形です。新たにインストールしたUbuntu20.04系サーバに、一からNextcloudを入れる必要がありました。
上記の記事で不完全なところがありましたので、改めて作成いたします。
前提
以下が稼働済みです。
- Ubuntu 20.04
- MySQL 8.0.33
- Apache 2.4
また、設定するドメインに即したサーバ証明書があることを前提に本記事を作成しています。
さっくりとした手順
※SSHログインし、ターミナルでの操作を行います。
- PHPのレポジトリを追加して、Ubuntu20.04でもPHP8.xが使えるようにします。
- PHPの設定を行います。
- Nextcloud用のDBを作成します。
- Nextcloudのプログラムを適切な位置に配置します。
- Nextcloudを動かすためのApache設定ファイルを設定します。
- Webブラウザで設定を行います。
PHPレポジトリを追加して必要パッケージをインストールします。
- レポジトリ追加
sudo add-apt-repository ppa:ondrej/php
# Ubuntu20.04系ではこれを行わないとPHP7.4系しかインストールされません。
sudo aptitude update
# 追加後、パッケージのアップデート
- PHPインストール
sudo aptitude install php8.1
sudo aptitude install php8.1-{opcache,pdo,bcmath,calendar,ctype,fileinfo,ftp,gd,intl,json,ldap,mbstring,mysql,posix,readline,sockets,bz2,tokenizer,zip,curl,iconv,phar,xml,dev}
sudo aptitude install php8.1-{imagick,gmp}
sudo systemctl restart apache2.service
# PHPモジュールをWebサーバと連携させるため反映させます
- PHPインストール確認
php -v
PHP 8.1.21 (cli) (built: Jul 8 2023 07:09:57) (NTS)
PHPの設定を行います。
- memcacheとAPCuの有効化
cd /etc/php/8.1/cli/conf.d
cat <<- __EOF__ | sudo tee -a /etc/php/8.1/cli/conf.d/10-opcache.ini
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
__EOF__
cat <<- __EOF__ | sudo tee -a /etc/php/8.1/cli/conf.d/20-apcu.ini
[apcu]
apc.enabled=1
apc.shm_size=32M
apc.ttl=7200
apc.enable_cli=1
apc.serializer=php
__EOF__
- php.ini修正
sudo cp -pi /etc/php/8.1/apache2/php.ini /path/to/backup/php.ini.$(date +%Y%m%d)
# /path/to/backupは任意のバックアップを設定してください。
diff -u /etc/php/8.1/apache2/php.ini /path/to/backup/php.ini.$(date +%Y%m%d)2
# 差分が存在しないことにより、バックアップが取れていることを確認します。
sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/g' /etc/php/8.1/apache2/php.ini
# memory_limitを推奨値の512Mに置き換えます。
- 差分確認
diff -u /path/to/backup/php.ini.$(date +%Y%m%d) /etc/php/8.1/apache2/php.ini
# 取得したバックアップと置き換えたファイルの差分を確認します
- 差分
-memory_limit = 128M
+memory_limit = 512M
- apache 再起動
sudo systemctl restart apache2.service
NextcloudのDBを作成します。
- MySQLにroot権限でログイン
mysql -u root -p
- MySQLユーザ追加
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'password';
# パスワードはポリシーに合わせて適切なものを指定してください。
CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;
EXIT;
- 追加したNextcloud用ユーザでログイン
mysql -u nextcloud -p
# 設定したパスワードでログインできることを確認します
- DB作成確認
SHOW DATABASES;
# 作成したデータベースnextcloudがあることを確認します
EXIT;
Nextcoludのプログラムを配置します。
cd /hoge && pwd
# 任意の作業用ディレクトリを指定します。
wget https://download.nextcloud.com/server/releases/latest.zip
unzip latest
sudo mv nextcloud /home/www-data/
# ファイルサーバとして運用するので、/home領域に設置します。
sudo chown -R www-data:www-data /home/www-data/nextcloud
Apacheの設定ファイルを作成します。
- ログディレクトリの作成
sudo mkdir /var/log/nextcloud
sudo chown www-data:www-data /var/log/nextcloud
- nextcloud用の設定ファイル作成
cat <<- __EOF__ | sudo tee -a /etc/apache2/sites-available/nextcloud.conf
<VirtualHost *:80>
servername 【hoge.example.com】
# ドメイン名を指定します
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# HTTPアクセスを強制的にHTTPSにリダイレクトします
</VirtualHost>
<VirtualHost *:443>
ServerName 【hoge.example.com】
# ドメイン名を指定します
CustomLog /var/log/nextcloud/nextcloud_access.log combined
ErrorLog /var/log/nextcloud/nextcloud_error.log
DocumentRoot 【/home/www-data/nextcloud】
# 自身の環境に合わせます
<Directory 【/home/www-data/nextcloud】>
# 自身の環境に合わせます
Options -MultiViews
AllowOverride All
Require all granted
</Directory>
#SSL設定
SSLEngine on
Protocols h2 http/1.1
# SSLを有効化します
SSLCertificateFile 【/etc/certs/hoge.example.com.crt】
# SSL証明書を指定します
SSLCertificateKeyFile 【/etc/private/hoge.example.com.key】
# 秘密鍵を指定します
# SSLCACertificateFile 【/etc/certs/hoge.example.com.CA.crt】
# 中間証明書が発行元から別ファイルで提供されている場合は、この直上をコメントアウトして中間証明書を指定します
#セキュリティヘッダー付与
Header always set Strict-Transport-Security "max-age=63072000"
Header set X-Content-Type-Options "nosniff"
Header always append X-Frame-Options "SAMEORIGIN"
Header set X-XSS-Protection "1; mode=block"
</VirtualHost>
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.2
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:EC6-GCM-SHA384
SSLHonorCipherOrder off
SSLSessionTickets off
SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"
# これらのセクションはSSL暗号化強度を高めるための記述です
# </VirtualHost>の外側に書くことにご注意ください
__EOF__
- Apache設定ファイル反映
sudo a2ensite nextcloud.conf
sudo apache2ctl configtest
# Syntax OKを確認します
sudo systemctl restart apache2.service
ブラウザ上でNextcloudのセットアップを行います。
- ブラウザでアクセス
ブラウザで、
http://設定したドメイン
にアクセスし、以下を確認してください。
- 以下のセットアップ画面が出ること。
- httpがhttpsとなっていること。
以下を入力して「インストール」をクリックします。
- ユーザ名:
- 管理者のユーザ名
- パスワード:
- 管理者パスワード
- データベースのユーザー名
- 作成したユーザー名(nextcloud)
- データベースのパスワード
- 設定したデータベースのパスワード
- データベース名
- 作成したデータベース(nextcloud)
- データベースのホスト名
- localhost:3306
- (MySQLのポート番号)
- localhost:3306
推奨アプリのインストールに関しては、好みでスキップかインストールを行ってください。
インストールが完了したら、以下のような画面が出ます。
その後の細かい設定に関しては改めて。