Nginx+OwnCloudでLightsailにインストール

2021-07-05

 概要

Amazon Lightsail にCentOS 7.x + Nginx + php-fpm + MariaDBの構成で、Owncloudをインストールしてみました。Nginx + php-fpm + MariaDBのインストール及び設定が終わっていることを前提で手順を作成しています

PHPの設定を変更

php.ini を編集して容量が大きいファイルをアップロードできるようします

$ sudo vi /etc/php.ini
post_max_size = 10G
upload_max_filesize = 10G

Nginx と php-fpm を連携できるように「/etc/php-fpm.d/www.conf」の user、group、listen、listen.owner 、listen.group を変更します。listen.owner 、listen.groupを未設定だとunixソケットがrootとなりNginx と php-fpm を連携できないためです

$ sudo 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

私の環境では、/var/lib/php/session/ の所有者をroot:apcacheとなっていたので、nginxに統一します

$ ls -l /var/lib/php/
total 0
drwxrwx--- 2 root apache 6 Mar  6 02:44 apcache
drwxrwx--- 2 root apache 6 Mar  6 02:44 session
drwxrwx--- 2 root apache 6 Mar  6 02:44 wsdlcache

# nginxグループに変更
$ sudo chown -R root:nginx /var/lib/php/session/
$ ls -l /var/lib/php/
total 0
drwxrwx--- 2 root apache 6 Mar  6 02:44 opcache
drwxrwx--- 2 root nginx  6 Mar  6 02:44 session
drwxrwx--- 2 root apache 6 Mar  6 02:44 wsdlcache

nginxの設定変更

owncloudのログディレクトリ作成と、無料証明書のSSL発行する為に80番(HTTP)でowncloudのヴァーチャルホストを起動します

owncloud用のログディレクトリを作成します。ディレクトリ構成は以下のようにしています

  • コンテンツディレクトリ:/var/www/vhosts/owncloud/html
  • ログディレクトリ:/var/www/vhosts/owncloud/log
# コンテンツディレクトリ
$ sudo mkdir -p /var/www/vhosts/owncloud/html
# ログディレクトリ
$ sudo mkdir /var/www/vhosts/owncloud/log

# 所有者をnginxに変更します
# chown -R nginx:nginx /var/www/vhosts/owncloud

無料証明書のSSL(Let’s Encrypt)発行のため、owncloudで使用するドメインでNginxが起動できるように「/etc/nginx/conf.d/owncloud.conf」を新規作成します

$ sudo vi /etc/nginx/conf.d/owncloud.conf
server {
  listen 80;
  server_name cloud.example.com;
  root /var/www/vhosts/owncloud/html;
}

$ sudo systemctl start nginx

無料証明書のSSL(Let’s Encrypt)発行します

$ sudo cd /usr/local/certbot
$ sudo systemctl stop nginx
$ sudo ./certbot-auto certonly --webroot -w /var/www/vhosts/owncloud/html -d cloud.example.com -m [メールアドレス] --agree-tos 
$ sudo ls /etc/letsencrypt/live/cloud.example.com
cert.pem  chain.pem  fullchain.pem  privkey.pem  README

SSL証明書を発行したら、「/etc/nginx/conf.d/owncloud.conf」にSSL証明書の設定とSSL、Owncloud関連をします。常時SSL化するのでHTTPのアクセスはHTTPSに転送するようにします

$ sudo vi /etc/nginx/conf.d/owncloud.conf

# HTTPのアクセスはHTTPSに転送します
server {
  listen 80;
  server_name cloud.examle.com;
  return 301 https://cloud.examle.com$request_uri;
}

server {
 listen  443 ssl;
  server_name cloud.examle.com;
  root /var/www/vhosts/owncloud/html;
  index index.php;
  access_log /var/www/vhosts/owncloud/log/access_ssl.log main;
  error_log /var/www/vhosts/owncloud/log/error_ssl.log;

  ssl_certificate "/etc/letsencrypt/live/cloud.example.com/fullchain.pem";
  ssl_certificate_key "/etc/letsencrypt/live/cloud.example.com/privkey.pem";
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_prefer_server_ciphers on;
  ssl_ciphers 'kEECDH+ECDSA+AES128 kEECDH+ECDSA+AES256 kEECDH+AES128 kEECDH+AES256 kEDH+AES128 kEDH+AES256 DES-CBC3-SHA +SHA !DH !aNULL !eNULL !LOW !kECDH !DSS !MD5 !EXP !PSK !SRP !CAMELLIA !SEED';
  ssl_session_cache    shared:SSL:10m;
  ssl_session_timeout  10m;

  client_max_body_size 10G;
  fastcgi_buffers 64 4K;
  gzip off;

  rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
  rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
  rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;

  error_page 403 /core/templates/403.php;
  error_page 404 /core/templates/404.php;

  location = /robots.txt {
    allow all;
    log_not_found off;
    access_log off;
  }

  location ~ ^/(?:\.htaccess|data|config|db_structure\.xml|README){
    deny all;
  }

  location / {
    rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
    rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;

    rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
    rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;

    rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;

    try_files $uri $uri/ /index.php;
  }

  location ~ \.php(?:$|/) {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_param HTTPS on;
    fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
  }

  location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
    expires 30d;
    access_log off;
  }
}

$ sudo systemctl start nginx
$ sudo systemctl start php-fpm

OwnCloud をダウンロードする

OwnCloud をダウンロードしてコンテンツディレクトリに展開します

# コンテンツディレクトリに移動します
$ sudo cd /var/www/vhosts/owncloud/html

# owncloud-10.1.0.tar.bz2をダウンロードして、解凍します
$ wget https://download.owncloud.org/community/owncloud-10.1.0.tar.bz2
$ tar xvf owncloud-10.1.0.tar.bz2

# 解凍したファイルをコンテンツディレクトリに移動します
$ sudo mv owncloud/* .

# 不要なファイル・ディレクトリを削除します
$ sudo rm -f owncloud-10.1.0.tar.bz2
$ sudo rm -r owncloud

# 所有者をNginxに変更します
$ sudo chown -R nginx:nginx owncloud

ownCloud用のデータベースを作成

Owncloudで使用するデータベースを作成します

$ mysql -u root -p

MariaDB [(none)]> CREATE USER 'ユーザー名'@'localhost' IDENTIFIED BY 'パスワード';
MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS データベース名;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON データベース名.* TO 'ユーザー名'@'localhost' IDENTIFIED BY 'パスワード';
MariaDB [(none)]> FLUSH PRIVILEGES;

ブラウザでowncloudにアクセスする

ブラウザでowncloudをアクセスして初期設定をおこないます

LinuxCentOS 7,mariadb,php

Posted by admin