ホーム >  Linux >  VagrantのCentOS7+php7+nginx環境にOwncloudを構築

投稿日:   |  最終更新日:

VagrantのCentOS7+php7+nginx環境にOwncloudを構築

LinuxownCloudPHP

Vagrantにphp7+nginxのOwncloudを構築します。

最新環境のownCloud

ついこの間、PHP7がリリースされてOwncloudもバージョンⅩ(テン)になりました。今回はPCのVagrant環境へownCloudの導入します。

※いずれは、HTTP2有効化 + Let’s EncryptでSSL証明書の発行までをやろうと考えています。

ownCloudとは?

Owncloudとは、オンラインストレージです。DropboxやGoogle Driveに似ています。Owncloudは、以下のような特徴があります。

  • 閉じたネットワークセグメントでも運用が可能(外部公開も可能)
  • オープンソースなので無料(一部有料)
  • 自分でサーバを建てて運用できる(完全にプライベートで使える)
  • Windows/Mac/Linux/iOS/Android/ブラウザ上で使える
  • LDAPやActive Directoryとの連携も可

前提の環境

  • VagrantのCentOS7にsudo権限のあるユーザが発行済み
  • Selinuxやfirewalld(iptables)等の設定済みあるいは停止

今回HTTPSはOFFにしますが、Vagrantのポート80とポート443両方を許可して下さい。

Vagrant.configure("2") do |config|

  config.vm.box = "centos70"
  config.vm.network "private_network", ip: "192.168.xx.xx"

  config.vm.network :forwarded_port, guest: 8000, host: 8080
  config.vm.network "forwarded_port", guest: 443, host: 443

end

準備

Vagrantでゲスト環境(仮想環境)を作ります。ゲスト環境の中にDjangoを構築します。その前に、以下の作業を終わらせましょう。

①Virtualboxをインストールします。Virtualboxのインストールまでで結構です。

VirtualBoxをインストールする for Ubuntu

②Vagrantをインストールします。centos7環境を作りますので、Vagrantのインストールのみ済ませてください。

Vagrantをインストールしてテスト環境を作る for Ubuntu

ホスト環境

OS Ubuntu 16.04.1 LTS 64bit
Virtualbox 5.1
Vagrant 1.9.5

ゲスト環境

OS CentOS 7.1.1503
PHP 7.1
Nginx 1.15.3
owncloud 7.0.32


Nginxのインストール

CentOS7にNginxをインストールして起動します。前回VPSに作った方法と全く同じですので以下を参考にして下さい。

ConoHaのVPSにNginxインストール(CentOS7)

HTTP2は1.9.5以上のバージョンで実装されています。

PHP7のインストール

①PHP7をインストールします。

[nginx]
sudo yum install epel-release.noarch
sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
sudo yum install --enablerepo=remi remi-php70 php-fpm php-gd php-json php-mysql php-curl php-mbstring php-intl php-mcrypt php-imagick php-xml php-zip php-apcu

②PHPのセッションディレクトリのパーミッションを変更します。

sudo chmod 777 /var/lib/php/session/

③所有者もnginxに変更します。

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

※sessionディレクトリの所有者を変更しないとownCloudにログインできない場合があります。

php.ini、PHP-FPM(FastCGI)の設定

①「/etc/php.ini」を編集します。

sudo vi /etc/php.ini

変更箇所は以下のようになっています。

変更箇所 変更前 変更後
max_execution_time 30 3600
max_input_time 60 3600
memory_limite 128M -1
post_max_size 8M 10G
upload_max_filesize 2M 10G
date.timezone (未設定) Asia/Tokyo

②「/etc/php-fpm.d/www.conf」を編集します。

sudo vi /etc/php-fpm.d/www.conf

変更箇所は以下のようになっています。

変更箇所 変更前 変更後
user apache nginx
group apache nginx
listen 127.0.0.1:9000 /var/run/php-fpm/php-fpm.sock
listen.owner (未設定) nginx
listen.group (未設定) nginx

※以下のようにsedコマンドでファイルを書き換えてもOK。

sed -i -e 's/listen = 127.0.0.1:9000/listen = \/var\/run\/php-fpm\/php-fpm.sock/' /etc/php-fpm.d/www.conf

設定ファイル所有者の問題

「listen.owner」と「listen.group」が未設定のままだとphp-fpmのUNIX ソケットファイル (/var/run/php-fpm/php-fpm.sock) の所有者がrootになってしまいます。すると、Nginxとphp-fpm が上手く連携できず、結果的にownCloudが起動しません。

※以下のようなエラーが出た場合は、この所有者の問題が原因かもしれません。「/etc/php-fpm.d/www.conf」の設定を見なおしてみて下さい。

Can’t write into config directory!
This can usually be fixed by giving the webserver write access to the config directory.


Nginxの設定

①「/etc/nginx/conf.d/cloud.conf」を作成します。

sudo vi /etc/nginx/conf.d/cloud.conf

以下の内容を記述します。

upstream php-handler {
  #server 127.0.0.1:9000;
  server unix:/var/run/php-fpm/php-fpm.sock;
}

server {
  listen 80;
  server_name cloud.example.com;

  # Path to the root of your installation
  root /usr/share/nginx/html/owncloud;
  # set max upload size
  client_max_body_size 10G;
  fastcgi_buffers 64 4K;

  # Disable gzip to avoid the removal of the ETag header
  gzip off;

  # Uncomment if your server is build with the ngx_pagespeed module
  # This module is currently not supported.
  #pagespeed off;

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

  index index.php;
  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 / {
    # The following 2 rules are only needed with webfinger
    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 off;
    fastcgi_pass php-handler;
  }

  # Optional: set long EXPIRES header on static assets
  location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
    expires 30d;
    # Optional: Don't log access to assets
    access_log off;
  }
}

②以下のコマンドで両方のサービスを起動し、スタートアップで起動するように設定します。

sudo systemctl start php-fpm
sudo systemctl start nginx
sudo systemctl enable php-fpm
sudo systemctl enable nginx

ownCloudを導入するためにはデータベースが必要です。ただし、Owncloudは標準でSQLiteが使えるため、個人的なサービスの運用であれば必須ではありません。

※今回に関しては最低限の構成ということで省略します。

ownCloudをインストール

①ownCloudをダウンロードします。

cd /vagrant/download
curl -O 'https://download.owncloud.org/community/owncloud-10.0.9.zip'

※最新バージョンなどは各自調べてください。

②圧縮ファイルを展開して削除します。

sudo unzip owncloud-10.0.9.zip
sudo rm -f owncloud-10.0.9.zip

③展開したファイルを全て「/usr/share/nginx/html/」へ移動します。

sudo mv owncloud/ /usr/share/nginx/html/

④ディレクトリの所有者をnginxに変更します。

sudo chown -R nginx /usr/share/nginx/html/owncloud

⑤vagrantに設定したローカルIPアドレスをブラウザのアドレスに入力してページを開きます。以下のよにownCloudのサービスが表示されます。




トラックバック用のURL
プロフィール

名前:イワサキ ユウタ 職業:システムエンジニア、ウェブマスター、フロントエンドエンジニア 誕生:1986年生まれ 出身:静岡県 特技:ウッドベース 略歴 20

最近の投稿
人気記事
カテゴリー
広告