ownCloudは、PHPプログラミング言語に基づくオープンソースのファイル共有アプリケーションです。 OwnCloudは、セルフホストファイルの同期と共有を優れたWebインターフェイスで提供し、ドロップボックスやメガなどの機能を備えたすべての主要なモバイルおよびデスクトッププラットフォーム用のアプリを同期します。ownCloudを使用すると、ファイル、カレンダー、連絡先に簡単にアクセスして同期できます。デバイス。
このチュートリアルでは、ownCloudを使用して独自の同期および共有サーバープラットフォームを作成する方法を説明します。 WebサーバーとしてNginx、データベースとしてMariaDB(MySQLフォーク)、Linux OpenSUSELeap42.1でphpのリクエストを処理するphp-fpmを使用してownCloudをインストールします。
前提条件
- OpenSUSE Leap 42.1
- root権限
- zypperコマンドを理解する
SuSEfirewallは、その構成をファイル「/ etc / sysconfig/SuSEfirewall2」に保存するファイアウォールスクリプトです。 SuSEfirewall2では、「SuSEfirewall2」ファイルを編集してポートを開くことができます。
zypperコマンドを使用してSuSEfirewall2をインストールします。
zypper in SuSEfirewall2
ファイアウォールがインストールされたら、sysconfigディレクトリに移動し、vimで「SuSEfirewall2」構成を編集します。
cd /etc/sysconfig/
vim SuSEfirewall2
行253に移動し、使用するすべてのサービスのポートを追加します。このステップでは、ssh、http、およびhttpsポートを追加します。
FW_SERVICES_EXT_TCP="22 80 443"
ファイルを保存してエディタを終了します。
次に、SuSEfirewall2を起動し、起動時に実行できるようにします。
systemctl start SuSEfirewall2
systemctl enable SuSEfirewall2
次に、sshdサービスを再起動します。
systemctl restart sshd
SSHサーバーのポートをテストする場合は、telnetコマンドを使用してポート22に接続できます。
telnet 192.168.1.101 22
Nginxは、メモリとCPUの消費量が少ない軽量のウェブサーバーです。 ownCloudインストールのWebサーバーとしてnginxを使用します。
zypperコマンドを使用してnginxをインストールします:
zypper in nginx
nginxを起動し、systemctlコマンドを使用して起動時に実行できるようにします:
systemctl start nginx
systemctl enable nginx
次に、index.htmlファイルを追加して、nginxが機能しているかどうかをテストします。
echo "This is Nginx Page OpenSUSE Leap" > /srv/www/htdocs/index.html
これで、Webブラウザからnginx Webサーバーにアクセスするか、curlで確認できます:
curl -I 192.168.1.101
curl 192.168.1.101
MariaDBは、MySQLデータベースのオープンソースRDBMSベースのフォークです。このステップでは、MariaDBをインストールして構成します。次に、ownCloudインストール用の新しいユーザーとデータベースを作成します。
以下のzypperコマンドを使用してMariaDBをインストールします。
zypper in mariadb mariadb-client
次に、MariaDBを起動し、システムの起動に追加します。
systemctl start mysql
systemctl enable mysql
MariaDBが開始されました。これで、次のコマンドを使用してMariaDBのルートパスワードを構成できます。
mysql_secure_installation
MariaDB / MySQLパスワードを設定します:
Enter current password for root (enter for none): PRESS ENTER
Set root password? [Y/n] Y
New password: TYPE YOUR PASSWORD
Re-enter new password: REPEAT PASSWORD
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Reload privilege tables now? [Y/n] Y
MariaDBルートパスワードが設定されました。これで、MariaDB / MySQLシェルにログインして、ownCloud用の新しいデータベースと新しいユーザーを作成できます。
MariaDB / MySQLシェルにログインします:
mysql -u root -p
TYPE your password
新しいデータベース「owncloud_db」と新しいユーザー「ownclouduser」をパスワード「[emailprotected]」で作成します:
create database owncloud_db;
create user [email protected] identified by '[email protected]';
grant all privileges on owncloud_db.* to [email protected] identified by '[email protected]';
flush privileges;
exit
ownCloudインストール用のデータベースが作成されました。
PHP-FPM(FastCGI Process Manager)は、多くの訪問者がいるサイトを処理するための最新のFastCGI代替手段です。 PHP-FPMは高度なプロセス管理を備えており、管理と構成が簡単です。
このステップでは、php-fpmといくつかのPHP拡張機能をインストールしてから、php-fpmを介してphpファイルリクエストを処理するようにnginxウェブサーバーを構成します。
この「zypperin」コマンドを使用してphp-fpmをインストールします:
zypper in php5-fpm php5-gd php5-mcrypt php5-mysql php5-pear php5-zip php5-curl php5-ldap php5-json
インストールが完了したら、php-fpmディレクトリに移動し、デフォルトの構成ファイルをコピーします。
cd /etc/php5/fpm/
cp php-fpm.conf.default php-fpm.conf
php-fpm.confファイルをvimまたはnanoエディターで編集します:
vim php-fpm.conf
32行目のコメントを解除して、php-fpmログを有効にします。後でPHPスクリプトでエラーが発生した場合は、「/ var /log/」ディレクトリにログファイルがあります。
error_log = log/php-fpm.log
プロセスのUNIXユーザー/グループの行148-149を「nginx」に変更します。
user = nginx
group = nginx
159行目の値を変更して、ソケットファイルでphp-fpmを実行します。
listen = /var/run/php-fpm.sock
コメントを外し、行170〜172の値を変更して、UNIXソケットのアクセス許可を設定します。
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
ファイルを保存してエディタを終了します。
次に、cliディレクトリのphp.iniファイルを編集します。
cd /etc/php5/cli/
vim php.ini
コメントを外して、758行目の値を変更します:
cgi.fix_pathinfo=0
保存して終了します。
php.iniファイルをconf.dディレクトリにコピーします:
cp php.ini /etc/php5/conf.d/
次に、phpセッションハンドラーパスを構成します。このチュートリアルでは、php-fpmをnginxユーザーとして実行するため、nginxユーザーがsessionsディレクトリに書き込めることを確認してください。セッションパスの構成は、1390行目のphp.iniファイルで確認できます。
session.save_path = "/var/lib/php5"
セッションディレクトリ「/var/ lib / php5 /」の所有者を変更し、nginxユーザーをディレクトリの所有者にします:
chown -R nginx:nginx /var/lib/php5/
次に、nginxウェブサーバーと連携するようにphp-fpmを設定します。構成を編集する前に、nginx構成ディレクトリに移動し、nginx.confファイルをバックアップしてください。
cd /etc/nginx/
cp nginx.conf nginx.conf.backup
vim nginx.conf
65行目に次の新しい構成を追加します。この構成はすべてのPHPファイル要求を処理します。
location ~ \.php$ {
root /srv/www/htdocs;
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
保存して終了し、nginx構成をテストして、構成にエラーがないことを確認します。
nginx -t
エラーがない場合は、以下の結果を確認できます。
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
次に、php-fpmを起動し、起動時にstatに追加してから、nginxサービスを再起動します。
systemctl start php-fpm
systemctl enable php-fpm
systemctl restart nginx
Nginxとphp-fpmが構成されている場合、Webルートディレクトリに新しいphpinfo()ファイルを作成してphpファイルをテストできます。
cd /srv/www/htdocs/
echo "<?php phpinfo(); ?>" > info.php
ブラウザを開き、サーバーIPにアクセスします:
http://192.168.1.101/info.php
または、curlを使用できます:
curl -I 192.168.1.101/info.php
安全なhttps接続を介してownCloudを実行することは、ファイルを安全でプライベートに保つために非常に重要です。自社でownCloudを実行している場合は、SSL証明書を購入できます。無料のSSL証明書が必要な場合は、Let's-encryptを使用できます。ここでは、いわゆる「自己署名」SSL証明書を作成します。自己署名証明書の暗号化は公式証明書より低くはありませんが、サービスに初めてアクセスするときにブラウザでセキュリティ警告を受け入れる必要があります。 。
新しい「ssl」ディレクトリを作成し、opensslコマンドを使用して証明書を生成します。
cd /etc/nginx/
mkdir ssl; cd ssl/
openssl req -new -x509 -days 365 -nodes -out /etc/nginx/ssl/example-owncloud.crt -keyout /etc/nginx/ssl/example-owncloud.key
次に、キーの権限を変更します:
chmod 600 example-owncloud.key
このステップでは、ownCloudをインストールし、ownCloudドメイン用に新しいnginx仮想ホストを構成します。ドメイン名が「example-owncloud.co」のowncloudをインストールし、「/ srv / www /owncloud/」ディレクトリにWebルートファイルをインストールします。
ownCloudをダウンロード
「/srv/ www /」ディレクトリに移動し、ownCloudソースをダウンロードして解凍します:
cd /srv/www/
wget https://download.owncloud.org/community/owncloud-9.0.2.zip
unzip owncloud-9.0.2.zip
次に、owncloudディレクトリの下に新しいデータディレクトリを作成して、すべてのユーザーデータを保存します。 ownCloudディレクトリの所有者をnginxユーザーに変更します:
mkdir -p owncloud/data/
chown -R nginx:nginx owncloud/
ownCloud用にNginx仮想ホストを構成する
nginxディレクトリに移動し、仮想ホストファイル構成用の新しいディレクトリを作成します。
cd /etc/nginx/
mkdir vhosts.d/
vhosts.dディレクトリに移動し、owncloud「example-owncloud.conf」の新しい仮想ホストファイルを作成します。
cd vhosts.d/
vim example-owncloud.conf
以下に構成を貼り付けます:
upstream php-handler {
#server 127.0.0.1:9000;
server unix:/var/run/php-fpm.sock;
}
server {
listen 80;
server_name example-owncloud.co;
# enforce https
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name example-owncloud.co;
ssl_certificate /etc/nginx/ssl/example-owncloud.crt;
ssl_certificate_key /etc/nginx/ssl/example-owncloud.key;
# Path to the root of your installation
root /srv/www/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/ =404;
}
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 php-handler;
fastcgi_intercept_errors on;
}
# Adding the cache control header for js and css files
# Make sure it is BELOW the location ~ \.php(?:$|/) { block
location ~* \.(?:css|js)$ {
add_header Cache-Control "public, max-age=7200";
# Add headers to serve security related headers
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
# Optional: Don't log access to assets
access_log off;
}
# Optional: Don't log access to other assets
location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|swf)$ {
access_log off;
}
}
ファイルを保存してエディタを終了します。
nginx構成をテストし、すべてのサービスを再起動することを忘れないでください:
nginx -t
systemctl restart nginx
systemctl restart php-fpm
systemctl restart mysql
テスト
owncloudドメインにアクセスします:
例-owncloud.co
https接続にリダイレクトされます。
次に、管理者ユーザーとパスワード、データベース名、ユーザー、パスワードを入力し、[セットアップの完了]をクリックします。
ちょっと待つと、owncloudファイルマネージャーが表示されます:
OpenSUSELeap42.1へのnginxとMariaDBを使用したownCloudのインストールが完了しました。
参考資料
- https://doc.owncloud.org/
- https://www.howtoforge.com/tutorial/install-nginx-php-and-mysql-lemp-stack-on-opensuse-leap-42.1/
- https://www.howtoforge.com/tutorial/how-to-install-owncloud-8-with-nginx-and-mariadb-on-centos-7/