ConoHaとCentOS7でWebサーバー構築

前回の「【第1回】ConoHa申し込み手順〜CentOS7でサーバー構築」の続きです。

今回はWebサーバー構築を行いたいと思います。

 

環境

OS バージョン
CentOS 7.2.1511

 

1.httpサーバーApacheをインストールする

サーバーに一般ユーザー(vpsuser)でログインしてrootにスイッチしてください。

[Apacheのバージョン確認]

既にインストールされていればServer version: Apache/バージョン (CentOS)と表示されます。

インストールされていなければ、下記のコマンドでインストール。

CentOSでは、httpdはApacheのことを指します。よってこのコマンドでApacheがインストールされることになります。

メッセージが表示されて、以下のような確認待ちになりますので、’y’を入力しエンターキーを押します。

表示メッセージの最後に’完了しました!’と表示されれば成功です。

 

Apache(httpd)の起動、再起動、停止コマンド

[起動]

[再起動]

[停止]

これでhttpdが起動できました。

試しにブラウザで
http://xxx.xxx.xxx.xxx (あなたのVPSのIPアドレス)

にアクセスしてみてください。

 

ページが表示されない

Apacheを起動したのにWEBページが表示されません。httpdのステータスを確認してみます。

Active: active (running)と表示されてます。httpdは問題なく起動しているようです。

 

ファイアウォールのポート開放

[http(80)]

[success]と表示される

[https(443)]

[success]と表示される

[ファイアウォール再起動]

[success]と表示される

http://xxx.xxx.xxx.xxx (あなたのVPSのIPアドレス)

にアクセスしてみてください。

今度はApacheの画面が表示されました。

 

httpdの自動起動設定

サーバ再起動時に自動的にhttpdも起動するようにしたいので、以下のコマンドを入力。

 

httpdの自動起動解除設定

 

httpdの自動起動一覧表示

httpdの自動起動設定が正しく設定されたかどうかは下記のコマンドで確認出来ます。

[httpd.service    enabled]と表示されている

「STATE」部分の表示で、現在の設定状況を確認することができます。

ステータスの意味
表示 設定状況
enable 自動起動設定有効
disable 自動起動設定無効
static 単体では自動起動できないサービス

以上でWebサーバーの構築は完了しました。

 

2. SFTPを使ってファイルをアップロードする

httpdが起動し、Webサーバーとして使えるようになりましたので、htmlファイルをアップロードして、ブラウザで正しく表示されるかどうか確認してみましょう。

ファイルのアップロードは、暗号化した通信で安全にファイルをアップロードできるSFTPを使用します。

SFTPに対応したクライアントツールは以下のようなものがあります。参考までに。

Windows RLogin、WinSCP、Filezilla
Mac Cyberduck、Filezilla、Transmit

[接続情報入力項目]

プロトコル SFTP
ポート番号 22 (前回記事でsshのポート番号を変更した人はその番号)
接続先 VPSのIPアドレス
ユーザ 一般ユーザ(◯◯◯) ※SFTPはsshと同様、rootでは接続できません
パスワード 一般ユーザのパスワード

※私の場合は、鍵で認証を行いたいと思います。

公開鍵と秘密鍵を生成する方法はページの下部にある【第1回】ConoHa申し込み〜CentOS7でサーバー構築のリンク内に書いてあります。

ログイン出来たら、下記の場所に接続出来ると思います。

接続できたら、これからindex.htmlを作ってファイルをアップロードするわけですが、サーバーのどこにファイルをアップロードすれば良いでしょう?

先ほどは、
http://xxx.xxx.xxx.xxx
にブラウザでアクセスした時に「Testing 123…」が表示されましたが、自作のindex.htmlが代わりに表示されるようにしてみます。

http://xxx.xxx.xxx.xxx にアクセスされたときに対応するディレクトリは、サーバーのドキュメントのトップの位置に相当するので、ドキュメントルートと言います。
これは、デフォルトでは
/var/www/html
です。

SFTPツールでログインした最初の位置は/home/ユーザー名ですので、ここから親ディレクトリへ2階層上がり、var → www → html とディレクトリを移動してください。

この場所に以下のindex.htmlを作成し、アップロードします。

いざアップロードしようとしてみるとどうでしょうか?
「Filezilla」場合はエラーが出なくてよくわからないけど…うまく行かなかったと思います。

「Filezilla」の例では、失敗した転送が(1)になります。

権限がなくてファイルがアップロード出来ないみたいです。

 

3. ドキュメントルートの権限を変更する

このままではファイルをアップロードできませんので、権限を変更して、ファイルをアップロードできるようにしてみましょう。
sshでVPSに接続し、rootユーザーで以下のコマンドを実行してください。

cdコマンドで /var/www ディレクトリに移動して、lsコマンドでファイルの一覧を表示します。
ls -lはファイルの詳細を表示するコマンドです。

コマンドをを実行すると以下の行が見つかると思います。

  1. 対象のディレクトリ(またはファイル)名はhtmlである
  2. ディレクトリ”html”の所有者名はrootである。
  3. ディレクトリ”html”の所有グループ名はrootである。
  4. 所有者rootの権限はrwxである。つまり、read(読み)、write(書き)、execute(実行)が可能。
  5. グループrootの権限はr-xである。つまり、readとexecuteが可能。writeはできない。
  6. rootでもなく、rootグループにも属さない他人(other)の権限はr-x。つまり、readとexecuteが可能 。

先ほどSFTPツールで、ファイルをアップロードするのに使ったユーザーは、一般ユーザーのユーザー名です。
このユーザーはrootユーザーでもないし、rootグループにも属していないので、”他人“扱いになります。したがって、htmlディレクトリの中を覗くこと(=read)はできますが、ファイルを置くといった”write”が出来ない権限になります。先ほどのファイルアップロード時のエラーはこの権限エラーが原因です。

したがって、
htmlディレクトリに、ユーザー名で書き込みできる権限(write権限)をつける
ことでアップロード時のエラーは解消できます。

しかし、もうひとつ問題があります。
WordPressなどのコンテンツ管理システム(CMS)をサイト上で動かす場合、SFTPツールやFTPツールを使わなくても、CMSの管理画面からファイルをアップロードしたり、プラグインをインストールしたりすることが可能です。
これらもサーバーへファイルを”write”する行為なので、サーバーへの書き込み権限が必要になります。
この場合、writeするユーザーは誰になるのでしょうか?
実は、CMSの管理画面経由でファイルを書き込むと、Apacheのユーザーである”apache”で書き込むことになります

このapacheユーザーはhttpdインストール時に自動的に作られます。WordPress管理画面経由でファイルをアップロードすると、httpdサーバーのユーザーであるapacheがあなたに代わってファイルをアップロードすることになり、サーバーに置かれたファイルはapacheユーザー権限のファイルになります。
ということは、apacheユーザーの権限でもファイルを書き込みできるようにしておく必要がありますね。
つまり、/var/www/htmlディレクトリ以下はユーザー名とapacheのどちらのユーザーでも書き込めるようにしておく必要があります

htmlディレクトリは以下の設定にできれば良いです。

つまり、
所有者   ・・・apache
所有グループ・・・vpsuser
にして、所有者だけでなくグループにも書き込み権限をつけます。
こうすることで、

  • apacheユーザーはhtmlディレクトリの所有者なので、書き込み可能
  • ユーザー名ユーザーはhtmlの所有グループなので、書き込み可能

ということになり、どちらのユーザーでもhtmlディレクトリの中にファイルを置くことができるようになります。

この設定を行うためには、具体的には以下のコマンドを実行します。

以下のように変更されました。

chownはファイルやディレクトリの所有者を変更するコマンドです。apache:vpsuser と指定することで、htmlディレクトリの所有者をapacheに、グループをvpsuserにしています。
chmodは権限を変更します。htmlディレクトリを775という権限にしています。
この’775’の意味は、rwxrwxr-x を3つのブロックに分け、r=4、w=2、x=1と数値化して計算した合計の値になっています。

再度SFTPツールでindex.htmlをアップロードしてみてください。
エラーなくアップロードすることができたでしょうか? http://xxx.xxx.xxx.xxx にアクセスすると「Hello World!」と表示されます。

 

4. phpをインストールする

それではphpをインストールします。php本体だけでなく、付随するパッケージも合わせて導入するのでコマンドが長くなっていますが、以下を実行してください。

‘y’を押してインストールを続けます。

[httpdを再起動]

そしてhttpdを再起動すると、phpが有効になります。
さきほどhttpdを起動した時は’start’でしたが、今回は再起動なので’restart’とします。

[ファイルのアップロード]

ファイルを作成

index.php

※phpinfo(); は、「インストールされているphpの情報を表示する関数」

/var/www/html

上記のディレクトリに「index.php」のファイルをアップロードする。

[ブラウザで確認]

http://xxx.xxx.xxx.xxx/index.php にブラウザでアクセスしてみてください。

下記みたいな表が表示されたら成功!

 

phpのインストール状態確認

phpがインストールされているか否かは以下のコマンドで確認できます。

実行結果の中に、

  • php
  • php-cli
  • php-common

があるか確認してみてください。

なければ、失敗しているかもしれません。

 

httpdの動作状態確認

httpdが正常に動作しているか否かは以下のコマンドで確認できます。

実行結果の中に赤字のメッセージがある場合、httpdで何かしらのエラーが起きているかもしれません。
下記コマンドでhttpdを再起動してみよう。赤字のメッセージがない場合は、何もしない。

statusから赤字が消えたらOKです。

 

phpの設定ファイルphp.iniを編集

cdコマンドで/etc ディレクトリに移動し、cpコマンドでphp.iniのバックアップをとっておき、vimコマンドでphp.iniを編集します。

編集する内容は下記

php.iniはたくさんの設定が記載されていますので、目的の設定場所を探すのに時間がかかります。
ここは、検索をうまく使ってすばやく目的の設定箇所を見つけましょう。
vimで ‘/’ をタイプしてください。検索モードになり、画面の一番下にフォーカスが移りますので、検索語句”◯◯◯“を入力してエンターを押します。

設定を変更したら、:wqでvimを終了します。

[httpdを再起動]

httpdサーバーを再起動します。
設定はhttpdサーバー再起動後に有効になります。

[設定が反映されたかブラウザで確認]

http://xxx.xxx.xxx.xxx/index.php にブラウザでアクセスしてみてください。

※phpinfo(); は、「インストールされているphpの情報を表示する関数」

変更した箇所を探して、変更前と変更後で変わっていたら、変更は反映されています。

 

【第1回】ConoHa申し込み手順〜CentOS7でサーバー構築

【第2回】ConoHaとCentOS7でWebサーバー構築

【第3回】ConoHaとCentOS7でDBサーバー構築

【第4回】ConoHaとCentOS7でGitLab構築

【第5回】ConoHaとCentOS7でCakePHPインストール方法

 

投稿者: samancha