この記事では、Alibaba Cloud ECSを使ってCentOS 7にNextCloudをインストールする方法を紹介します。
本ブログは英語版からの翻訳です。オリジナルはこちらからご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。
NextCloudは、DropboxやGoogle Driveに代わる、無料でオープンソースのセルフホスト型サービスです。自分のファイルを自分のプライベートサーバーにホスティングして、データを完全にコントロールすることができます。
#前提条件
1、CentOS 7.4をOSとして使用した新しいECSインスタンス。
2、ECSインスタンスに接続し、rootユーザとしてログインします。
3、ECS インスタンスに向けられたドメイン名。
CentOS 7 インスタンスにログインしたら、以下のコマンドを実行して、最新の利用可能なパッケージでベースシステムを更新します。
yum -y update
新しいユーザーを作成します。
adduser nextcloud
passwd nextcloud
sudoグループにユーザーを追加し、新しく作成したユーザーに切り替えます。
usermod -aG wheel nextcloud
sudo su - nextcloud
#PHP 7でNginxをインストール
現在のところ、NextcloudはPHPのバージョン7.0と7.1をサポートしています。このチュートリアルでは、PHP 7.1をインストールします。EPELとRemiリポジトリをインストールして、ビルド済みのPHPパッケージを直接インストールできるようにします。
sudo yum -y install epel-release yum-utils nano unzip
sudo rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum-config-manager --enable remi-php71
Nginx ウェブサーバーと PHP 7.1 を必要な PHP モジュールと一緒にインストールします。
sudo yum -y install nginx php php php-fpm php-mysqlnd php-ctype php-dom php-gd php-iconv php-json php-libxml php-mbstring php-posix php-json php-libxml php-mbstring php-posix php-json php-json php-libxml php-mbstring php-mbstring php-posix xml php-zip php-openssl php-zlib php-curl php-fileinfo php-bz2 php-intl php-mcrypt php-ftp php-exif php-gmp php-memcached php-imagick
読み込んだPHPの設定ファイルを編集します。
sudo nano /etc/php.ini
適切なタイムゾーンとメモリ制限を設定します。必要であれば、メモリ制限として -1 を使用することができ、スクリプトが消費するメモリ量の制限を解除します。cgi.fix_pathinfo
の値をアンコメントして 0 を設定し、ファイルアップロードの制限を増やします。パラメータを更新すると、以下のように更新されるはずです。
; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = 512M
...
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone =Asia/Kolkata
...
cgi.fix_pathinfo=0
...
post_max_size = 512M
...
upload_max_filesize = 512M
php.iniの設定が終わったら、php-fpmの設定ファイルを開きます。
sudo nano /etc/php-fpm.d/www.conf
ユーザとグループのパラメータを探して、apacheからnginxに変更します。listen = 127.0.0.1:9000
ファイルを探してコメントアウトし、そのすぐ下にlisten = /var/run/php-fpm/php-fpm.sock
を追加します。最後に、listen.ownerのコメントを外し、その値をnobodyからnginxに変更します。パラメータを更新したら、以下のように更新されているはずです。
user = nginx
group = nginx
...
;listen = 127.0.0.1:9000
listen = /var/run/php-fpm/php-fpm.sock
...
listen.owner = nginx
listen.group = nginx
また、以下の行を検索し、コメントを外してphp環境変数を有効にします。
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
ファイルを保存してエディタを終了します。ここで、PHPのセッションデータを保存するための新しいディレクトリを作成します。
sudo mkdir -p /var/lib/php/session
sudo chown nginx:nginx -R /var/lib/php/session/
php-fpmソケットファイルに適切なパーミッションと所有権を設定します。
sudo chown nginx:nginx /var/run/php-fpm/php-fpm.sock
sudo chmod 660 /var/run/php-fpm/php-fpm.sock
あとはphp-fpmを起動して、起動時に自動的に起動するようにします。
sudo systemctl restart php-fpm
sudo systemctl enable php-fpm
また、NginxのWebサーバーを起動し、起動時に自動的に起動するようにします。
sudo systemctl restart nginx
sudo systemctl enable nginx
これでNginxのインストールは完了です。NextCloudのダウンロード、SSLの設定、MySQLデータベースの設定、Webベースのインストールの完了、このチュートリアルが示すようにCronジョブの設定を行います。
#関連ブログ記事
###Ubuntu 16.04でPHPを設定する方法
PHPは、最も広く使用されているサーバーサイドスクリプト言語の一つです。オープンソースの汎用プログラミング言語は、動的でインタラクティブなWebアプリケーションを実行するための強力なものです。
この記事では、Ubuntu 16.04でPHPを使用していくつかのツールのインストールに関する情報を取得します。
###CentOS 7にClipBucketとNginxをインストールする方法
ClipBucketは、特定のオペレーティングシステム(OS)へのインストールを制限していません。お好きなOSをお使いいただけますが、インストールの手順はOSによって異なります。
このチュートリアルでは、CentOS 7を使用したAlibaba Cloud Elastic Compute Service (ECS)インスタンスにClipBucketとNginxをインストールして設定します。
#関連市場商品
パートナー企業が構築したPHPインフラとCentosを搭載した製品がアリババクラウドのサーバー上ですぐに立ち上がることができるものがあります。
###Websoft9( LAMP | CentOS7.2)を利用したPHPインフラストラクチャ
Websoft9 LAMPスタックは、Alibaba Cloud上でPHPアプリケーションを実行するために事前に設定された、実行可能なイメージです。
###CentOS 7.0 64bit
CentOSイメージは、アリババクラウドが公式に適用し、テストしたものです。CentOS Linuxディストリビューションは、Red Hat Enterprise Linux(RHEL)のソースから派生した、安定性、予測性、管理性、再現性の高いプラットフォームです。CentOSはアップストリームベンダーの再配布ポリシーに完全に準拠しており、RHELと100%機能的に互換性があることを目指しています(CentOSは主にパッケージを変更してアップストリームベンダーのブランディングやアートワークを削除しています)。CentOS Linuxは無償で再配布が可能です。
#関連ドキュメント
いくつかのドキュメントが参考になるかもしれません。
###PHPのバージョンを変更する
ウェブホスティングはPHPをサポートしており、デフォルトではPHP 5.3を使用しています。
デフォルトのPHPのバージョンがプログラムで必要とされるものと異なる場合は、PHPのバージョンを変更することができます。
###CentOS 7 で LNMP 環境を構築する
NGINXは、小型で効率的なLinux用Webサーバソフトウェアです。NGINXを使うと、LNMPのWebサービス環境を簡単に構築することができます。LNMP環境は、このアーキテクチャに必要な4つの主要コンポーネントをベースにしています。Linux、NGINX、MySQL、PHPです。このトピックでは、ECS インスタンス上で LNMP 環境を手動で構築する方法を説明します。
#関連製品
###ウェブホスティング
ウェブホスティングは、ウェブサイトのコンテンツを保存してホストするために使用され、仮想サーバーと同様に動作します。ECSインスタンスは、様々なサイズのことができる複数のスペースに分割されています。スペースはアカウントに対応し、ウェブホスティングのインスタンスを示します。各スペースは独立した FTP とウェブアクセス許可を持っていますが、すべてのスペースは ECS インスタンスのハードウェアリソースを共有しています。
###ウェブアプリケーションファイアウォール
Web Application Firewall (WAF) は、侵入からお客様のウェブサイトのサーバーを保護します。当社のサービスは、お客様のウェブサイトやアプリケーションに向けられた悪意のあるトラフィックを検出し、ブロックします。WAFは、お客様のコアビジネスデータを保護し、悪意のある活動や攻撃によるサーバーの誤動作を防ぎます。
#関連コース
###ウェブアプリケーションの攻撃と防御のディープダイブ
ウェブアプリケーションは、クラウド上でサービスを提供するための最も一般的な方法であり、最も脆弱なセキュリティターゲットです。本講座を通じて、OWASPがリストアップしたネットワークアプリケーションのセキュリティリスクトップ10を理解することができます。この10のセキュリティリスクを1つずつ説明し、XSS、SQLインジェクション、Webshellという3つの最も一般的な攻撃方法を選択してさらに掘り下げた議論を行い、最後にアリババクラウドのWAF製品を紹介して、オンラインアプリケーションのセキュリティ問題をきっぱりと解決することができます。
###ウェブホスティングサービスの問題をトラブルシューティングする方法
このビデオでは、データベース接続の問題を見つけて解決する方法を紹介します。
データベース接続の問題
ディーエヌエスレコード問題
無効な応答問題
アリババクラウドは日本に2つのデータセンターを有し、世界で60を超えるアベラビリティーゾーンを有するアジア太平洋地域No.1(2019ガートナー)のクラウドインフラ事業者です。
アリババクラウドの詳細は、こちらからご覧ください。
アリババクラウドジャパン公式ページ