投稿日: | 最終更新日:
VagrantのCentOS7+php7+nginx環境にOwncloudを構築
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のサービスが表示されます。
- Python 114
- 制作 54
- RaspberryPi 41
- Django 40
- WordPress 40
- Linux 27
- VPS 22
- JavaScript 21
- PHP 20
- HTML・CSS 19
- AWS 16
- 仮想環境 15
- レスポンシブデザイン 13
- マイコン 11
- WEB全般 11
- 動画製作 9
- Webサービス 8
- 統合開発環境 8
- 機械学習 8
- PyCharm 7
- jQuery 7
- AfterEffects 7
- 起業・設立 7
- Django REST framework 6
- C# 6
- デザイン 6
- SEO 6
- pydata 6
- Visual Studio 5
- 数学 5
- 携帯サイト 5
- heroku 5
- Mac 5
- illustrator 5
- node.js 5
- Anaconda 5
- Nginx 4
- Jupyter Notebook 4
- インフラ 4
- Google Colaboratory 4
- symfony 4
- Webスクレイピング 3
- photoshop 3
- Go言語 3
- PC 3
- ツール 3
- Docker 3
- facebook 3
- 作業効率化 3
- データベース 3
- Cloud9 3
- コマンド 2
- micro:bit 2
- Kali Linux 2
- Webサーバー 2
- MariaDB 2
- ドローン 2
- コンテナ 2
- DaVinci Resolve 2
- ネットワーク 2
- Java 2
- movie 2
- PCDJ 2
- 音楽 2
- XSERVER 2
- Ansible 1
- Vue.js 1
- JSON 1
- Bootstrap 1
- バージョン管理システム 1
- SSL 1
- S3 1
- ムームードメイン 1
- ネットワーク 1
- アニメーション 1
- D3.js 1
- Rhino 1
- アニメ 1
- git 1
- windows 1
- アクセス解析 1
- スマートフォン 1
- アフィリエイトノウハウ 1
- 知識 1
- TypeScript 1
- 役立つ本・書籍 1
- データサイエンス 1
- ESP32 1
- AI 1
- ownCloud 1
- API 1