Webでのフォトアルバムアプリ、Piwigo。
WordPressやNewxtcloudと同じようにWeb画面上でアップデートができました。
管理者アカウントでログインし、管理>ダッシュボードにアクセスします。
「新しいバージョンのPiwigoが利用可能です」とでるのでこちらをクリック。
アップグレードをクリックします。
しばらく待ちます。
「アップデート完了」のメッセージが出たら作業は完了です。
Webでのフォトアルバムアプリ、Piwigo。
WordPressやNewxtcloudと同じようにWeb画面上でアップデートができました。
管理者アカウントでログインし、管理>ダッシュボードにアクセスします。
「新しいバージョンのPiwigoが利用可能です」とでるのでこちらをクリック。
アップグレードをクリックします。
しばらく待ちます。
「アップデート完了」のメッセージが出たら作業は完了です。
GrowiのDB保存先を、冗長性を持たせたディスクに移設したときのメモです。
これは確実に行ってください。でないと、作業中にDBが書き換えられ不具合が発生する可能性があります。
(共有Wikiであればなおさらです)
sudo systemctl stop mongodb
systemctl status mongodb
# inactive(dead)を確認します
sudo mkdir /home/mongodb
# 任意の保存ディレクトリを作成します
sudo chown -R mongodb:mongodb /home/mongodb
ls -ld /home/mongodb
# ディレクトリの所有者がmongodbであることを確認します
cd /var/lib/mongodb && pwd
ll
# .wtで終わるファイルがあることを確認します
sudo cp -pir * /home/mongodb
# 先ほど作成したディレクトリにコピーします
cd /home/mongodb && pwd
ll
# コピーしたファイル一式があることを確認します
sudo cp -pi /etc/mongod.conf /path/to/backup/mongod.conf.$(date +%Y%m%d)
# 任意のバックアップディレクトリを指定します。
diff -u /etc/mongod.conf /path/to/backup/mongod.conf.$(date +%Y%m%d)
# バックアップが保存されたか、差分がないことで確認します。
/etc/mongod.conf
を教義・信仰に沿ったエディタで修正します。
dbPath: /home/mongodb
- dbPath: /var/lib/mongodb
+ dbPath: /home/mongodb
sudo systemctl start mongod.service
systemctl status mongod.service
# active(running)を確認します
cd /home/mongodb && pwd
ls -lart
# .wtファイルの更新時刻がブラウザで編集した時と同じであることを確認します。
cd /var/lib/mongodb && pwd
ls -lart
# .wtファイルの更新時刻が操作前と同じことを確認します。
問題なく稼働することが確認されたら、元の保存ファイルを削除(退避)させます。
予備で使っているUbuntuサーバ。ディスク容量が余っているのでバックアップサーバとして用いてみました。
sudo aptitude update
sudo aptitude install nfs-kernel-server
教義・信仰に沿ったエディタで以下のファイルを編集・追記します。
/etc/exports
/home/backup <サーバAのIPアドレス>(rw,sync,no_root_squash,no_subtree_check)
sudo systemctl restart nfs-kernel-server
sudo aptitude update
sudo aptitude install nfs-common
sudo mkdir /mnt/backup
sudo mount <サーバBのIPアドレス>:/home/backup /mnt/backup
df -h
# サーバBのIPアドレス:/home/backup と見えていれば成功です
sudo mkdir test
sudo chown -R hoge:hoge test
# hogeは任意のユーザ名を指定します
cd test
touch test.txt
ls test.txt
# ファイルが表示されることを確認します
rm test.txt
ls test.txt
# ファイルが表示されないことを確認します
cd
#/mnt/backupにいるとマウント解除できません
sudo umount /mnt/backup
df -h
# サーバBのIPアドレス:/home/backup が消えていればマウント解除できています
サーバAを再起動しても自動的にサーバBのディレクトリをマウントできるようにします。
教義・信仰に沿ったエディタで以下のファイルを編集・追記します。
/etc/fstab
<サーバBのIPアドレス>:/backup /mnt/backup nfs rw,sync 0 0
※サーバの再起動を行うので、作業時は注意してください。
sudo reboot
df -h
# サーバBのIPアドレス:/home/backup と見えていれば成功です
rsyncやlsyncと違って、あたかもそのディスクがサーバ上にあるかのように扱えるのがポイントです。
もちろん、NW越しにデータの読み書きをするので、速度はNWの帯域や処理速度に依拠します。過信は禁物です。
Ubuntu 20.04に新規インストールすることになったNextcloud。
各種設定を済ませ、アプリの動作を確認中に「Recognize(画像自動認識・タグ付けツール)で以下の警告が出ていました。また、自動タグ付けも行われていなかったので、問題の解決を行います。
任意のクライアントを用います。
# 例
cd /var/www/html/nextcloud
# 筆者環境
cd /home/www-data/nextcloud
sudo -u www-data php occ recognize:download-models
# 環境によって時間がかかります
sudo -u www-data php occ recognize:recrawl
Nextcloudに管理者でログインし、管理メニュー>Recognizeから以下の通り、警告が消えていることを確認します。
ダッシュボード>アクティビティから、以下の通り、画像のタグ付けが行われていることを確認します。
(表示まで最大15分程かかります)
Nextcloudは多層的なWebアプリスイートであるため、ログがたちまち肥大化します。
そのため、設定後、ログローテーションの設定を行います。
以下の通り、ファイルを追加します。【】内は設定したログファイルの格納ディレクトリにしてください。
cat <<- __EOF__ | sudo tee -a /etc/logrotate.d/nextcloud
【/var/log/nextcloud/】*.log {
daily
dateext
dateformat -%Y%m%d
rotate 10
missingok
notifempty
su www-data www-data
create 640 www-data www-data
sharedscripts
compress
delaycompress
postrotate
if invoke-rc.d apache2 status > /dev/null 2>&1; then \
invoke-rc.d apache2 reload > /dev/null 2>&1; \
fi;
endscript
}
__EOF__
sudo logrotate -v /etc/logrotate.d/nextcloud
エラーがないことを確認します。
sudo systemctl restart logrotate.service
これで設定は完了です。後日、アクセスログが圧縮されていることを確認します。
すぐ確認したい場合は
sudo logrotate -f /etc/logrotate.d/nextcloud
で、強制的にローテートさせます。
Nextcloudのインストール後の設定で概要でのセキュリティチェックがパスしましたが、
管理>基本設定で
最終ジョブ実行は %s です。何か問題が発生しています。
と出ていますので、これの設定を行います。
NextcloudがインストールされたサーバにSSHログインし、以下を実行します。
sudo -u www-data /usr/bin/php /var/www/html/nextcloud/cron.php
# 自分がnextcloudをインストールした環境に合わせます。
# 筆者環境
# sudo -u www-data /usr/bin/php /home/www-data/nextcloud/cron.php
Ubuntu 20.04の初期設定はcronログの出力が無効になっているので、修正します。
cd /etc/rsyslog.d
sudo cp -pi 50-default.conf /path/to/backup/50-default.conf.$(date +%Y%m%d)
# 任意のバックアップディレクトリを指定します。
diff -u 50-default.conf /path/to/backup/50-default.conf.$(date +%Y%m%d)
# 差分がないことでバックアップされていることを確認します。
教義・信仰に合わせたエディタで以下を修正します。
#cron.* /var/log/cron.log
cron.* /var/log/cron.log
sudo systemctl restart rsyslog.service
sudo -u www-data crontab -e
*/5 * * * * /usr/bin/php -f /var/www/nextcloud/cron.php
# 自分の環境に合わせます。
# 筆者環境
# */5 * * * * /usr/bin/php -f /home/www-data/nextcloud/cron.php
tail -50 /var/log/cron.log
と表示されていれば、Cron登録は確認されています。
が終われば、一応、初期準備は済んだと思います。
本記事はNextcloudに関する記事を再構成して2023年8月現在の安定版27.0.2に合わせた設定となっています。
メール設定後、Nextcloudのセキュリティ&セットアップ警告をまとめて対応します。
- データベースは取引ファイルを見ることに使われています。パフォーマンスをあげるには、可能であればメモリーのキャッシュを設定してください。
- ご使用のシステムには、デフォルトの電話地域が設定されていません。
メモリーキャッシュが構成されていません。
※Nextcloud 27系からキャッシュサーバの組み込みは推奨となりました。
sudo aptitude install redis-server php8.1-redis
# 必要に応じてaptを用いてください。
# 自分のPHPバージョンを付与することを忘れないようにしてください。(でないと、最新のPHPもインストールされます)
systemctl status redis-server.service
# active (running)を確認します
cat /etc/hosts
を実行し、
127.0.1.1 localhost
と表示されていれば、
127.0.0.1 localhost
に修正します。Ubuntu20.04系はなぜかlocalhostを127.0.1.1と設定されるケースがありました。
cd /var/www/html/nextcloud/config && pwd
# 移動先は自身の環境に合わせます。
# そのディレクトリにいることを確認します。
sudo cp -pi config.php /path/to/backup/config.php.$(date +%Y%m%d)
# バックアップ先は任意のディレクトリを指定してください。
sudo diff -u config.php /path/to/backup/config.php.$(date +%Y%m%d)
# エラーなく実行され、差分が表示されなければバックアップはできています。
教義、信仰に合わせたエディタで以下を追記して保存します。
注意点:最下行の);直上に追記します。
'default_phone_region' => 'JP',
'memcache.local' => '\OC\Memcache\APCu',
'filelocking.enabled' => true,
'memcache.locking' => '\\OC\\Memcache\\Redis',
'redis' =>
array (
'host' => 'localhost',
'port' => 6379,
'timeout' => 3,
),
sudo diff -u /path/to/backup/config.php.$(date +%Y%m%d) config.php
# 先程保存したバックアップを指定します。
+ 'default_phone_region' => 'JP',
+ 'memcache.local' => '\OC\Memcache\APCu',
+ 'filelocking.enabled' => true,
+ 'memcache.locking' => '\\OC\\Memcache\\Redis',
+ 'redis' =>
+ array (
+ 'host' => 'localhost',
+ 'port' => 6379,
+ 'timeout' => 3,
+ ),
);
sudo systemctl restart apache2.service
systemctl status apache2.service
# active (running)を確認します。
Nextcloudインストール後に出てくるこの警告画面を潰していきます。
メールサーバーの設定が未設定または未確認です。基本設定で設定を行ってください。その後、フォームの下にある「メールを送信」ボタンで設定を確認してください。
基本的に、Redmineと同じ方法でNextcloudはメールサーバの設定が可能になります。
https://atelier.reisalin.com/projects/zettel/knowledgebase/articles/22
のみです。
設定の前に
メールサーバーの設定を行います。
上記の設定後、「認証を必要とする」にチェックを入れます。
資格情報を入力する欄が出てきます。
を入力後、保存をクリックします。
「メールを送信」をクリックして、Nextcloudからのメールが送信されれば成功です。
この記事を作り直したという形です。新たにインストールしたUbuntu20.04系サーバに、一からNextcloudを入れる必要がありました。
上記の記事で不完全なところがありましたので、改めて作成いたします。
以下が稼働済みです。
また、設定するドメインに即したサーバ証明書があることを前提に本記事を作成しています。
※SSHログインし、ターミナルでの操作を行います。
sudo add-apt-repository ppa:ondrej/php
# Ubuntu20.04系ではこれを行わないとPHP7.4系しかインストールされません。
sudo aptitude update
# 追加後、パッケージのアップデート
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 -v
PHP 8.1.21 (cli) (built: Jul 8 2023 07:09:57) (NTS)
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__
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
sudo systemctl restart apache2.service
mysql -u root -p
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;
mysql -u nextcloud -p
# 設定したパスワードでログインできることを確認します
SHOW DATABASES;
# 作成したデータベースnextcloudがあることを確認します
EXIT;
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
sudo mkdir /var/log/nextcloud
sudo chown www-data:www-data /var/log/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__
sudo a2ensite nextcloud.conf
sudo apache2ctl configtest
# Syntax OKを確認します
sudo systemctl restart apache2.service
ブラウザで、
http://設定したドメイン
にアクセスし、以下を確認してください。
以下を入力して「インストール」をクリックします。
推奨アプリのインストールに関しては、好みでスキップかインストールを行ってください。
インストールが完了したら、以下のような画面が出ます。
その後の細かい設定に関しては改めて。
2023/09/11にサポート終了を迎えるOpenSSL1.1.1。
2023年6月現在の最新安定版である3.1.1にアップデートを行います。
https://www.openssl.org/blog/blog/2023/06/15/1.1.1-EOL-Reminder/
openssl version -a
OpenSSL 1.1.1f 31 Mar 2020
built on: Wed May 24 17:14:51 2023 UTC
platform: debian-amd64
options: bn(64,64) rc4(16x,int) des(int) blowfish(ptr)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -Wa,--noexecstack -g -O2 -fdebug-prefix-map=/build/openssl-mSG92N/openssl-1.1.1f=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_TLS_SECURITY_LEVEL=2 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2
OPENSSLDIR: "/usr/lib/ssl"
ENGINESDIR: "/usr/lib/x86_64-linux-gnu/engines-1.1"
Seeding source: os-specific
ことから、AWS Lightsailのスナップショットを利用して全体のバックアップを取りました。
sudo aptitude install build-essential checkinstall zlib1g-dev
# 筆者はaptitudeを用いています。必要に応じてaptを使ってください。
sudo su -
# 以下、管理者権限で実施します
cd /hoge
# 任意のディレクトリを指定します
git clone https://github.com/openssl/openssl -b openssl-3.1.1
# 2023/06/20時点での最新安定版を指定します
cd openssl
./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib
make
# makeは時間がかかります。状況を時折確認しながら待ちましょう。
make test
make install
cat <<- __EOF__ | tee -a /etc/ld.so.conf.d/openssl-3.1.1.conf
/usr/local/ssl/lib64
__EOF__
ldconfig -v
mv /usr/bin/c_rehash /path/to/backup/c_rehash.$(date +%Y%m%d)
mv /usr/bin/openssl /path/to/backup/openssl.$(date +%Y%m%d)
# 任意の退避ディレクトリを指定します
cat <<- __EOF__ | tee -a /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/ssl/bin"
__EOF__
source /etc/environment
echo $PATH
# PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/ssl/bin"
# と表示されることを確認します
openssl version -a
OpenSSL 3.1.1 30 May 2023 (Library: OpenSSL 3.1.1 30 May 2023)
built on: Tue Jun 20 01:47:24 2023 UTC
platform: linux-x86_64
options: bn(64,64)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DZLIB -DNDEBUG
OPENSSLDIR: "/usr/local/ssl"
ENGINESDIR: "/usr/local/ssl/lib64/engines-3"
MODULESDIR: "/usr/local/ssl/lib64/ossl-modules"
Seeding source: os-specific
CPUINFO: OPENSSL_ia32cap=0x7ffaf3ffffebffff:0x27ab
これで、Ubuntu20.04でもOpenSSL3.1.1を利用することが可能になりました。
2023/06/22
Powered by WordPress & Theme by Anders Norén