n2p blog

キャンペーンやSNSの
“ためになる”情報を
執筆しています。

【初心者向け!】Ec2上でユーザー管理とMySQLサーバー、PHPのインストール【おまけ付き】

前回はFTPクライアントソフトの簡単な概要と使い方でした。
今回は前々回のEC2インスタンスにWebサーバーをインストールし、ブラウザ上に簡易的にHTMLページを作った続きからやっていこうと思います。
DBサーバーとして必要になりそうなモジュールやライブラリもインストールしてみよう!

 

権限とユーザーの話

SSH接続の直後はユーザーは「ec2-user」というユーザーだと思います。
この他に「root」ユーザーなるユーザーがいます。
rootは基本的にサーバー内の全ファイルに対して全権を持っており、サーバー内の各種設定やユーザー、パスワードなどの管理変更を行うためのユーザーです。
 
[fusion_builder_container hundred_percent=”yes” overflow=”visible”][fusion_builder_row][fusion_builder_column type=”1_1″ background_position=”left top” background_color=”” border_size=”” border_color=”” border_style=”solid” spacing=”yes” background_image=”” background_repeat=”no-repeat” padding=”” margin_top=”0px” margin_bottom=”0px” class=”” id=”” animation_type=”” animation_speed=”0.3″ animation_direction=”left” hide_on_mobile=”no” center_content=”no” min_height=”none”][html] $ sudo su –             //rootユーザーに切り替わります
# exit                       //ec2-userに戻ります
[/html]  
全権持ってるなんて素敵ですが、それだけにrootくんの扱いには注意が必要です。
ファイルやフォルダを扱う時に間違った指定をしてしまえば、なまじ全権を持っているので警告や確認もなく実行してくれます。
大事なファイルなども消してくれちゃったりなんて事もあるので気をつけましょう。
 
さらに、rootは初期状態ではパスワードの設定がされていません。
それだけでリスクは高めです。
もしこの状態で第三者にサーバー内に侵入されてしまえば実質乗っ取られたと同義です。
 
せっかく拙いながらも一生懸命作ったサイトも、たった一夜でエロにエロを被せたようなエロまみれなサイトにされてしまうかもしれません。
それはそれで悪くないかもしれませんが、悔しいのでやはりパスワードなどの設定も忘れずに行いましょう。
少なくとも、rootのパスワードとsudoやsuなどのコマンドに対するパスワードはかけておくべきでしょう。
 
[aws][amazon][ec2] Amazon ec2にSSHで接続する
こちらでパスワード設定や代わりに使う管理ユーザーの作り方が紹介されてます。
また、管理ユーザー以外に権限を制限している作業用ユーザーを作成すると良いです。
下記サイトも参考にするといいと思います。
ドットインストール『#11 作業ユーザーを作成する』
ナレコムAWSレシピ『EC2編~sudo権限~』
 
 

データベース、PHP、各種ライブラリのインストール

MySQL

まず、データベースサーバーであるMySQLをインストールしましょう。
顧客データや商品管理、またはWP(Word Press)でのブログ作成などしたい時にDB(データベース)が必要になります。
 
[html] $ sudo yum -y install mysql-server //MySQLサーバーのインストール
$ sudo yum -y install mysql //クライアント用コマンドやら共有ライブラリをインストール
$ mysql –version //MySQLのバージョン確認
$ sudo service mysqld start //MySQL起動
$ sudo chkconfig mysqld on //自動起動する設定
$ chkconfig //設定が通っているか確認↓
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off  //この状態ならばOK
[/html]  
 

PHP

次にPHP関連のインストールをしていきましょう。
PHPは簡単に言うと動的なWebページ作成に特化したサーバーサイドのプログラム言語で、Webサーバーは勿論DBサーバーとの相性も良いとされています。
また、比較的初心者にも習得しやすく規模に関係なく多くのWeb開発で用いられる言語です。(とはいっても難しい)
 
[php] $ sudo yum -y install php //サーバー内でPHPを使えるようにする
$ php -v //PHPのバージョン確認
[/php]  
続けてPHPで様々な操作が出来るようにライブラリをインストールしていきます。
[php] $ sudo yum -y install php-mysql
[/php]  
ここからは基本的に自分の作りたいサイトやサービスに必要なものを選んでインストールしていきます。
よく使われるものを幾つか。
[php] $ sudo yum -y install php-gd //PHPでjpg,png,gifなどの画像に関する処理が行える
$ sudo yum -y install freetype-devel   //フリータイプアプリケーションの開発に必要(実はよくわかってない)
$ sudo yum -y install php-mbstring //PHPでマルチバイト文字列用の関数を扱えるようにする。要は日本語環境を整える
$ sudo yum -y install php-xml //PHPでXMLを扱うためのもの
$ sudo yum -y install libcurl-devel //URLで表示されるデータを各プロトコルを用いて送受信してくれるCurlコマンド、プログラムに関するパッケージ
$ sudo yum -y install php-mcrypt //暗号化が必要な通信をPHPで実行する場合に必要。
$ sudo yum -y install php-pear          //一からコードを記述することなくPHPプログラムの開発が可能になる
[/php] このあたりは必要になることが多そうです。
yum update などの時に既にインストールされてインストール出来ないと言われるものもあるかもしれません。
インストールが一通り済んだらWebサーバーの再起動を忘れずに。
 
その他yumでインストールできるパッケージやライブラリの一覧は下記のページに記載してくださっています。
PHPをyumでインストールする
また、インストール済みのパッケージを知りたい時やパッケージの検索などの管理に関する手法は下記を参考にさせて頂いてます。
yumによるパッケージ管理

 

(おまけ)モジュール?ライブラリ?

ところで、ふとモジュールとかライブラリってなんなんだろうと思ったりしませんでしたか?
インストールして使うんだからサーバーの機能を拡張したり、補填したりするものなんだろうけど2つの違いは?
2つ以外に同じように機能拡張するデータでプラグインとかコンポーネントとか、あとはフレームワークとかも良く聞くけど、正直初心者には違いが分からない。
ということでちょこっと調べてみたのですが、
 
先に大雑把な結論から言うと。
どれも「機能を持ったデータ群」という意味では同じ。
勿論それぞれには定義が存在していて、ある程度決まった範囲でそれぞれ役割は別れてはいるものの意味合いが重複したり混同している部分も多く判然としない。
 
そのため、それぞれの言葉や役割としての使い分けもその時々(組織単位、プロジェクト単位、チーム単位など)によって若干、或いは大きく異なるそうです。
下記はそれぞれの定義の比較から違いを考察をしてくださっている記事です。参考にさせていただきました。
 
モジュールとコンポーネントとライブラリとプラグインの違いとは
ライブラリ、フレームワーク、プラグイン、アドオンなどの違いまとめ
 
コンポーネント、モジュール、ライブラリ、パッケージ、プラグイン、フレームワークの6つで調べたものを参考にしつつ、すごく簡単に自分なりにまとめてみると。
 
 

コンポーネント

部品。それ自体で既に機能を有しているものの、本体に組み込まれて使われることが前提なので単一では機能できない部品。
実際にソフト面よりハード面で使われる事が多い言葉みたいですね。
 
 

モジュール

こちらも部品でコンポーネントとほぼ同義らしいが、コンポーネントと異なる点は

「システムや他の部品への接合部の仕様が標準化され、容易に追加や交換ができるような構成要素」
※IT用語辞典 e-Words 『コンポーネント』の項目より抜粋

とある。
ちょっと分かりづらいけど、要するにWebサーバーの目的や構成によって必要に合わせてインストール、アンインスールすることを前提とした部品。
 
 

プラグイン

基軸となるアプリケーションなどのコンテンツの一部に対してその機能の追加や拡張するためのプログラム。
特定のアプリケーションの特定の機能の基本的な処理の流れは換えずに処理内容を変更するプログラムであり、かつ規格化され誰にでも差し替えの出来る形のプログラム。
 
 

フレームワーク

文字通りプログラム全体の基礎的な骨組み。
これに肉付け、つまり作り手が必要とするプログラムを付け足していけばいいという開発の手間を最小限に抑えるための標準化された枠組みのこと。

 

ライブラリ

wikiによれば

汎用性の高い複数のプログラムを、再利用可能な形でひとまとまりにしたものである。
※ウィキペディア フリー百科事典 『ライブラリ』の項目より抜粋

とある。
上記『php-gd』で言えば画像表示の際の処理(リサイズ等)をPHPでいつでも実行できるように実行に必要なプログラムをまとめたデータ群。
PHPで呼び出す形を取れば基本的にどのようなプラグラムからでも呼び出せるように複数のモジュールがパッケージングされたもの。
 
 

パッケージ

複数のデータ群をまとめたもの。
そういう意味ではライブラリもパッケージの一種と言えるのかも知れない。『PHP逆引きレシピ 第2版』 438項 8行でも

PEARではライブラリの一つ一つの事を「パッケージ」と読んでいます。

とあるので、本来はごく一部で用いられていた用語だったものがその言葉の使いやすさから広く使われるようになったのかもしれませんね。
 
と、実に個人的な視点からまとめてみました。
既に多くのサイトや記事で同じ取り組みをなさっている人もいましたが、自分なりの解釈を自分の言葉で書かないと覚えられないんです。
 
 

まとめ

  • rootに気をつける。作業ユーザーを作りそちらでの作業が望ましい。最低でもroot,ec2-userにはパスワードの設定をしっかり行っておこう。
  • インストールの基本的な手順は覚えておこう。練習時はよく使うと思います。
  • データのそれぞれの呼び方、捉え方は時々によって異なってくる事もあり、判然としない時もあるが基本的にはそれぞれ全く違うもの。

 
 
参考にさせていただいたサイトさんやら参考書やら
 
[aws][amazon][ec2] Amazon ec2にSSHで接続する
ドットインストール『#11 作業ユーザーを作成する』
ナレコムAWSレシピ『EC2編~sudo権限~』
PHPをyumでインストールする
yumによるパッケージ管理
モジュールとコンポーネントとライブラリとプラグインの違いとは
ライブラリ、フレームワーク、プラグイン、アドオンなどの違いまとめ
IT用語辞典 e-Words 『コンポーネント
ウィキペディア フリー百科事典 『ライブラリ
Amazon Web ServiceではじめるWebサーバー
触って学ぶクラウドインフラ Amazon Web Services 基礎からのネットワーク&サーバー構築
Webサイト制作者のためにPHP入門講座
PHP逆引きレシピ 第2版 (PROGRAMMER’S RECiPE)
 
前回『【File Zilla】初心者でも使えちゃう!FTPクライアントソフト【EC2.ver】
次回『【初心者向け】PHPがブラウザで正しく表示されない時の対処【EC2インスタンス】』[/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]