NextCloudをCentOS7にインストールする。

4月 1, 2020

Nextcloudのインストールに関しては1年位前に記事にしました。
しかし、インストール先がレンタルサーバwappyでのインストールでした。
https://minokamo.xyz/?p=451
今回はOracleCloudに仮想マシンを構築しました。
その過程で一からCentOS7、Nginx、php-fpm、MariaDBをインストール、設定したので勉強になるのではないでしょうか。

それではインストールしてみます。
https://nextcloud.com/
で目的のファイルのリンクを取得してきます。
リンク先ファイル名はソースをみるか右クリックしてリンクアドレスのコピーにて取得できます。

wgetでファイルをダウンロードします。

wget https://download.nextcloud.com/server/releases/nextcloud-18.0.2.tar.bz2

解凍します。
ダウンロードしたファイルは不要なので削除します。

tar jxvf nextcloud-18.0.2.tar.bz2
rm nextcloud-18.0.2.tar.bz2

解凍するとうまい具合にディレクトリ名がnextcloudなのでこれを使うことにします。
デフォルトでは公開ディレクトリが/usr/share/nginx/html/になってが、/var/www/wordpressの下階層にnextcloudというフォルダごと移動します。
Nextcloudがhttp://ドメイン名/nextcloud/というURLにてアクセスできるようにする想定です。
現状ワードプレスの運用がhttp://ドメイン名/というURLになってます。
また、Unix、Linuxのディレクトリ構成の規約を纏めているFHS3.0で明示されているからです。

mv nextcloud /var/www/wordpress

ディレクトリの移動先である/var/www/wordpressに行く。

cd /var/www/wordpress

ディレクトリnextcloudに対して所有者をnginxへ変更します。

chown -R nginx:nginx nextcloud

nextcloudのphp-fpm構成ファイルの設定を行います。/etc/php-fpm.d/にあるwww.confを修正します。

vi /etc/php-fpm.d/www.conf
user = nginx
group = nginx
listen = /var/run/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx
pm = ondemand

いきなりsocketファイルのパスが指定してありますが最初はありません。この記述によりファイルが作成されます。ワードプレスではこの記述を気にすることはありませんでしたがnextcloudやdrupalは必要みたいです。
保存したらphp-fpmを再起動します。
systemctl restart php-fpm

次にデフォルトでは/etc/nginx/conf.d/にあるdefault.confの内容を修正します。

vi /etc/nginx/conf.d/default.conf
server {
listen 80;
server_name minokamo.tokyo;←自分の所有ドメイン
root /var/www/wordpress;←変更 今回はこの下の階層に設置なのでこれでOK
index index.php;

charset utf-8;

try_files $uri $uri/ /index.php?q=$uri&$args;

location ~* /wp-config.php {
deny all;
}

location ~ .php$ {
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
include fastcgi_params;
}
}

先ほどソケットファイルの場所を指定した以上こちらでも書き直します。
fastcgi_pass 127.0.0.1:9000;の記述は削除しなければなりません。

私の環境ではphpのインストール先が/var/lib/php/でした。
この下の階層のsessionというディレクトリの所有権をnginxに変更します。

chown -R nginx:nginx /var/lib/php/session

nginxを再起動します。
systemctl restart nginx

http://ドメイン名/nextcloud/にアクセスしてみます。
うまくいけば次の画面が表示されます。

しかし、そう簡単にいかないケースがほとんどでしょう。
最初は下記のエラーにてどこが間違っているのか困りました。

内部サーバーエラー
サーバーは要求を完了できませんでした。
再びこのようなことが起こった場合は、以下の技術情報をサーバー管理者に送ってください。
詳細は、サーバーのログを確認してください。

解決した方法はsocketファイルの指定方法が間違っていたことでした。

教育

Posted by admin