【AWS】知識ゼロから理解するRDS超入門
AWSのデータベースサービス「Amazon RDS」を初心者にもわかるように解説します。未経験には難しいMultiAZ構成やレプリケーションは、マスター/スレ...
2018-05-01 14:03 2020-06-17 17:05
みやびです(@miyabi_lab)。
連載『知識ゼロからAWS VPCネットワークを構築してセキュアな環境にEC2 Webサーバーを設置・運営する』の第4回です!
前回(第3回)の記事ではEC2インスタンスの作成方法からSSH接続までの流れを詳細に解説してきました。
今回は作成したEC2インスタンスにApache2.4を導入してWebサーバーとしての機能を持たせ、実際にインターネットブラウザ経由での接続(HTTP接続)を確立すると共に、PHP7およびMySQLについてインストールから初期設定まで解説していきます。
前回の「EC2を作成してSSH接続する」では、以下の様な状態まで作成することができました。
今回(第4回)の記事では、EC2に最新版のApache 2.4をインストールしてWebサーバーとしての機能を実装し、80番ポートを通じてHTTPアクセスできるようにするまでの流れを解説していきます。
また、MySQLやPHP7などのインストール方法についてもご紹介します。
完成イメージは以下の通りです。
それでは早速Apacheをインストールしていきましょう。
まずは前回新しく作成したsudoユーザーでSSHログインします。ログインには公開鍵認証を利用します。
# miyabiでログイン
$ ssh -i 【秘密鍵を保存した場所/***.pem】 miyabi@【パブリックIPアドレス】
ログインしたら、前回アップデートしたyumでhttpdをインストールします。
以下のコマンドを実行すると、メインのhttpdに加えて依存性関係でいくつかインストールするものが出てでてきます。
# yumでhttpd(apache)をインストール
$ sudo yum install httpd
==================================================================================================================================================================
Package アーキテクチャー バージョン リポジトリー 容量
==================================================================================================================================================================
インストール中:
httpd x86_64 2.4.6-67.amzn2.6.1 amzn2-core 1.2 M
依存性関連でのインストールをします:
apr x86_64 1.4.8-3.amzn2.1 amzn2-core 104 k
apr-util x86_64 1.5.2-6.amzn2 amzn2-core 92 k
httpd-tools x86_64 2.4.6-67.amzn2.6.1 amzn2-core 86 k
mailcap noarch 2.1.41-2.amzn2 amzn2-core 31 k
トランザクションの要約
==================================================================================================================================================================
インストール 1 パッケージ (+4 個の依存関係のパッケージ)
総ダウンロード容量: 1.5 M
インストール容量: 4.3 M
Is this ok [y/d/N]: y
yを入力してEnterを押します。これでhttpdがインストールされました。簡単ですね!
余談ですが、リポジトリーとはデータの保管場所(どこからインストールするか)を示しており、amzn2-coreはAmazon Linux 2にデフォルトで実装されている専用リポジトリーです。
これ以外にもいくつか種類があり、後述するMySQLのインストールには別のリポジトリーを利用します。
話が逸れてしまいましたが、実際にhttpdを起動して、正しくインストールできているかチェックしておきましょう。
# httpdを起動
$ sudo systemctl start httpd
# 確認(active:runningになればOK)
$ sudo systemctl status httpd
# システム起動時に毎回起動するように設定
$ sudo systemctl enable httpd
# 確認
$ sudo systemctl is-enabled httpd
httpdの操作にはsystemctlコマンドを利用します。stopやrestartなどの操作も同じです。詳しくはこちらにまとまっています。
# CentOS7以降の書き方(Amazon Linux 2を含む)
$ sudo systemctl start httpd.service
# CentOS6以前の書き方
$ sudo service httpd start
# CentOS7以降でも使えるがリダイレクトされる
$ sudo service httpd start
-> Redirecting to /bin/systemctl start httpd.service
# .serviceは省略可能です
たったこれだけです。色々説明を書いていますが、やったのはインストールして起動しただけです。
AWSコンソールのインスタンス項目から、EC2のパブリックIPアドレスを探してブラウザに直接入力し、アクセスできるか確認してみます。
このページが出れば成功です。今のところ何もコンテンツとなるファイルをサーバーに置いていないので、Apacheのデフォルトページが表示されています。
次は、初期設定をしたのち、実際に簡単なindexファイルを作成して再びアクセスしてみます。
Apacheのインストールが完了したら、次はconfigファイルにあたるhttpd.confを編集していきます。
今回はcdコマンドで移動してviで編集します。
# 移動
$ cd /etc/httpd/conf
# 編集
$ sudo vi /httpd.conf
編集箇所は以下の通りです。
マイナスの行は#でコメントアウトし、プラスの行は追記してください。
## ServerAdminの変更
- ServerAdmin root@localhost
+ ServerAdmin <<YOUR E-MAIL ADDRESS>>
## ServerNameの変更
- ServerName www.example.com:80
+ ServerName YourServerName:80
## .htaccessの有効化
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
- AllowOverride None
+ AllowOverride All
また、ファイルの真ん中あたりに以下の記述があります。
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/var/www/html"
ユーザーが作成したEC2 Webサーバーにアクセスすると、デフォルトではこのドキュメントルートに指定した場所へと案内されます。
つまり、「/var/www/html/index.html」のようにファイルを作成してHello World!の文字を書いておけば、ブラウザ上にそれが表示されるはずです。
実際にやってみましょう。
# ドキュメントルートに移動
$ cd /var/www/html
# 新規ファイルを作成
# sudoで作成すると所有者はrootになります
$ sudo touch index.html
# ファイルを編集(保存はescキーを押してから:wq)
$ sudo vi index.html
<h1>Hello World!</h1>
保存できたら、先ほどのIPアドレスに直接アクセスしてみます。
Hello World!の文字が表示されれば成功です!
PHPについては最新のPHP7.2をインストールします。
リポジトリはamzn2-coreで、、と言いたいところなのですが、実はこれではダメなんです。amzn2-coreのPHPバージョンを確認してみましょう。
$ sudo yum list | grep php
graphviz-php.x86_64 2.30.1-19.amzn2 amzn2-core
php.x86_64 5.4.16-43.amzn2.0.1 amzn2-core
php-bcmath.x86_64 5.4.16-43.amzn2.0.1 amzn2-core
php-cli.x86_64 5.4.16-43.amzn2.0.1 amzn2-core
php-common.x86_64 5.4.16-43.amzn2.0.1 amzn2-core
php-dba.x86_64 5.4.16-43.amzn2.0.1 amzn2-core
php-devel.x86_64 5.4.16-43.amzn2.0.1 amzn2-core
php-embedded.x86_64 5.4.16-43.amzn2.0.1 amzn2-core
php-enchant.x86_64 5.4.16-43.amzn2.0.1 amzn2-core
php-fpm.x86_64 5.4.16-43.amzn2.0.1 amzn2-core
php-gd.x86_64 5.4.16-43.amzn2.0.1 amzn2-core
php-intl.x86_64 5.4.16-43.amzn2.0.1 amzn2-core
php-ldap.x86_64 5.4.16-43.amzn2.0.1 amzn2-core
php-mbstring.x86_64 5.4.16-43.amzn2.0.1 amzn2-core
php-mysql.x86_64 5.4.16-43.amzn2 amzn2-core
php-mysqlnd.x86_64 5.4.16-43.amzn2.0.1 amzn2-core
php-odbc.x86_64 5.4.16-43.amzn2.0.1 amzn2-core
php-pdo.x86_64 5.4.16-43.amzn2.0.1 amzn2-core
php-pear.noarch 1:1.10.5-7.amzn2.0.1 amzn2-core
php-pecl-memcache.x86_64 3.0.8-4.amzn2 amzn2-core
php-pgsql.x86_64 5.4.16-43.amzn2.0.1 amzn2-core
php-process.x86_64 5.4.16-43.amzn2.0.1 amzn2-core
php-pspell.x86_64 5.4.16-43.amzn2.0.1 amzn2-core
php-recode.x86_64 5.4.16-43.amzn2.0.1 amzn2-core
php-snmp.x86_64 5.4.16-43.amzn2.0.1 amzn2-core
php-soap.x86_64 5.4.16-43.amzn2.0.1 amzn2-core
php-xml.x86_64 5.4.16-43.amzn2.0.1 amzn2-core
php-xmlrpc.x86_64 5.4.16-43.amzn2.0.1 amzn2-core
rrdtool-php.x86_64 1.4.8-9.amzn2 amzn2-core
uuid-php.x86_64 1.6.2-26.amzn2 amzn2-core
なんということでしょう!このリポジトリではPHP5.4が最新バージョンです。
PHP5.4は2015年9月にセキュリティーサポートの期限がきれていますので、さすがにこれをインストールする気にはなれません。
ちなみにRubyも2.0なので少々古いですね。
実はPHPやRuby、Pythonなどの主要なパッケージについては、Amazon-Linux-Extrasという特別なリポジトリを使用するとこでより新しいバージョンをインストールすることができます。
これは以下のコマンド(そのまんま)で実行できます。
$ amazon-linux-extras
0 ansible2 disabled [ =2.4.2 ]
1 emacs disabled [ =25.3 ]
2 memcached1.5 disabled [ =1.5.1 ]
3 nginx1.12 disabled [ =1.12.2 ]
4 postgresql9.6 disabled [ =9.6.6 ]
5 python3 disabled [ =3.6.2 ]
6 redis4.0 disabled [ =4.0.5 ]
7 R3.4 disabled [ =3.4.3 ]
8 rust1 disabled [ =1.22.1 ]
9 vim disabled [ =8.0 ]
10 golang1.9 disabled [ =1.9.2 ]
11 ruby2.4 disabled [ =2.4.2 ]
12 nano disabled [ =2.9.1 ]
13 php7.2 disabled [ =7.2.0 ]
14 lamp-mariadb10.2-php7.2 disabled [ =10.2.10_7.2.0 ]
全部で15種類出てきました。
今回のお目当てはPHP7.2なので、こちらを利用しましょう。
念のため詳細も確認しておきます。
$ amazon-linux-extras info php7.2
php7.2 recommends php-cli # yum install php-cli
php7.2 recommends php-pdo # yum install php-pdo
php7.2 recommends php-fpm # yum install php-fpm
php7.2 recommends php-json # yum install php-json
php7.2 recommends php-mysqlnd # yum install php-mysqlnd
OKですね。それでは同じコマンドを使ってインストールを開始します。
$ sudo amazon-linux-extras install php7.2
インストールが完了すると、先ほどの表記がenabledに変わっています。
念のため完了チェックも込みでバージョン確認しておきましょう。
$ amazon-linux-extras
~~
13 php7.2 enabled [ =7.2.0 ]
~~
$ php --version
PHP 7.2.0 (cli) (built: Dec 13 2017 00:38:30) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2017 Zend Technologies
いやはや。とことん簡単ですね!
この流れで必要なモジュールをインストールしてしまいましょう。
PHPには便利なモジュールがたくさん用意されていますが、最近では入ってないと話にならないようなものもいくつか存在します。
PHPインストール時点ではほとんどが付属されていないため、手動で入れていく必要があります。
Amazon Linux ExtrasでPHP7.2をインストールした場合は、amzn2extra-php7.2 リポジトリーが利用できるようになるので、これを利用して(指定しなくても勝手に利用されますが)インストールします。
まずは以下のコマンドで、どのような拡張モジュールが存在するのか確認してみましょう。
$ sudo yum list php* | grep amzn2extra-php7.2
php-cli.x86_64 7.2.0-3.amzn2.1 @amzn2extra-php7.2
php-common.x86_64 7.2.0-3.amzn2.1 @amzn2extra-php7.2
php-fpm.x86_64 7.2.0-3.amzn2.1 @amzn2extra-php7.2
php-json.x86_64 7.2.0-3.amzn2.1 @amzn2extra-php7.2
php-mysqlnd.x86_64 7.2.0-3.amzn2.1 @amzn2extra-php7.2
php-pdo.x86_64 7.2.0-3.amzn2.1 @amzn2extra-php7.2
php.x86_64 7.2.0-3.amzn2.1 amzn2extra-php7.2
php-bcmath.x86_64 7.2.0-3.amzn2.1 amzn2extra-php7.2
php-dba.x86_64 7.2.0-3.amzn2.1 amzn2extra-php7.2
php-dbg.x86_64 7.2.0-3.amzn2.1 amzn2extra-php7.2
php-devel.x86_64 7.2.0-3.amzn2.1 amzn2extra-php7.2
php-embedded.x86_64 7.2.0-3.amzn2.1 amzn2extra-php7.2
php-enchant.x86_64 7.2.0-3.amzn2.1 amzn2extra-php7.2
php-gd.x86_64 7.2.0-3.amzn2.1 amzn2extra-php7.2
php-gmp.x86_64 7.2.0-3.amzn2.1 amzn2extra-php7.2
php-intl.x86_64 7.2.0-3.amzn2.1 amzn2extra-php7.2
php-ldap.x86_64 7.2.0-3.amzn2.1 amzn2extra-php7.2
php-mbstring.x86_64 7.2.0-3.amzn2.1 amzn2extra-php7.2
php-odbc.x86_64 7.2.0-3.amzn2.1 amzn2extra-php7.2
php-opcache.x86_64 7.2.0-3.amzn2.1 amzn2extra-php7.2
php-pgsql.x86_64 7.2.0-3.amzn2.1 amzn2extra-php7.2
php-process.x86_64 7.2.0-3.amzn2.1 amzn2extra-php7.2
php-pspell.x86_64 7.2.0-3.amzn2.1 amzn2extra-php7.2
php-recode.x86_64 7.2.0-3.amzn2.1 amzn2extra-php7.2
php-snmp.x86_64 7.2.0-3.amzn2.1 amzn2extra-php7.2
php-soap.x86_64 7.2.0-3.amzn2.1 amzn2extra-php7.2
php-xml.x86_64 7.2.0-3.amzn2.1 amzn2extra-php7.2
php-xmlrpc.x86_64 7.2.0-3.amzn2.1 amzn2extra-php7.2
必要なものを選んでyumでインストールしてください。右の列に「@」がついているものは、すでにインストールされているモジュールです。
$ sudo yum install php-cli php-common php-devel php-fpm php-gd php-mysql php-mysqlnd php-mbstring php-pdo php-xml
よく分からない場合は、php-common, php-gd, php-mysqlnd, php-mbstring, php-pdo, php-xmlあたりをとりあえず入れておいて、PHP7を使っていてエラーが出たら(インストール要請があったら)適宜導入する感じで全然構いません。
次はphpのiniファイルを設定していきましょう。
最初に変更しておくといい設定は以下の通りです。これだけやっておけば特に問題なくPHP7を利用できます。
今回に限らず、デフォルトのファイルを編集する前には必ずバックアップを取っておきます。
また、編集する箇所についても上書きせず、コメントアウトして次の行に新しく書くようにしましょう。
php.iniファイルの上から順に記載しています。
# 失敗した時のためにバックアップを取っておく
$ sudo cp /etc/php.ini /etc/php.ini.default
# viでファイルを開いて編集(保存は同じく:wq)
$ sudo vi /etc/php.ini
# HTTPヘッダにPHPのバージョンを記載しない
- expose_php = On
+ expose_php = Off
# メモリ上限を引き上げる
- memory_limit = 128M
+ memory_limit = 512M
# エラーログのパスを変更
- error_log = php_errors.log
+ error_log = /var/log/php_errors.log
# POST送信の許容サイズを引き上げる
- post_max_size = 8M
+ post_max_size = 16M
# アップロードファイルの許容サイズを引き上げる
- upload_max_filesize = 2M
+ upload_max_filesize = 8M
# timezoneの設定
- date.timezone =
+ date.timezone = Asia/Tokyo
# デフォルト言語を日本語に設定
- mbstring.language = Japanese
+ mbstring.language = Japanese
# 文字コード検出のデフォルト値を定義
- mbstring.detect_order = auto
+ mbstring.detect_order = auto
WordPressなどを利用する場合は、upload_max_filesizeが2Mであることによりアイキャッチをアップロードできないなどの問題に直面することが多々あります。
設定を変更する場合は、upload_max_filesize < post_max_size < memory_limit のサイズ順位を守りましょう。
PHP拡張モジュールとしてインストールしたphp-fpmについて、適切な設定を行なっていなかったことにより以下のようなエラーが発生することが判明しました。
# メモリー不足でFatal errorが発生する!(たった20KBで...!?)
[13-Feb-2019 04:27:28 UTC] PHP Fatal error: Out of memory (allocated 4194304) (tried to allocate 20480 bytes) in /var/www/example.com/wp-includes/wp-db.php on line 1924
[13-Feb-2019 04:27:38 UTC] PHP Fatal error: Out of memory (allocated 4194304) (tried to allocate 36864 bytes) in /var/www/example.com/wp-includes/wp-db.php on line 1924
[13-Feb-2019 04:27:49 UTC] PHP Fatal error: Out of memory (allocated 10485760) (tried to allocate 40960 bytes) in /var/www/example.com/wp-includes/wp-db.php on line 1889
...
プロセスを確認したところ以下のような状態になっていました。
$ ps aux | grep php
apache 857 0.0 2.9 457452 58464 ? S 2月08 4:23 php-fpm: pool www
apache 858 0.0 3.2 461816 65148 ? S 2月08 5:06 php-fpm: pool www
apache 859 0.0 3.1 518992 63556 ? S 2月08 4:04 php-fpm: pool www
...(あと30行くらい)
左から5つ目と6つ目の数値が、それぞれ「実メモリでの占有率」と「仮想分も含めた使用サイズ」になります。
こちら、単位がbytesかと思いきやKBなので、php-fpm 1プロセスあたりのメモリ使用量は40-60MBということになります。
EC2を無料枠で利用できるt2 microのような低スペックで運用していると、php-fpmのデフォルト設定ではメモリが追いつかなくて激重状態になったり、最悪の場合EC2が落ちる(もしくはフリーズ)してしまうような状況になりかねません。
これを回避するために、「/etc/php-fpm.d/www.conf」ファイルにて以下のような設定変更を行います。
簡単に言うと、php-fpmが利用するプロセス数を制御することでメモリーのオーバーフローを防ぐということです。
$ sudo vi /etc/php-fpm.d/www.conf
# dynamic:以下の設定の範囲内で子プロセスの数を動的に制御します(デフォルトのまま)
pm = dynamic
# 子プロセスの最大数を変更します
- pm.max_children = 50
+ pm.max_children = 10
# php-fpm起動時の初期プロセス数を変更します
- pm.start_servers = 5
+ pm.start_servers = 2
# 待機中の最小プロセス数を変更します
- pm.min_spare_servers = 5
+ pm.min_spare_servers = 2
# 待機中の最大プロセス数を変更します
- pm.max_spare_servers = 35
+ pm.max_spare_servers = 5
上のソース内でも説明した通り、pm.max_children, pm.start_servers, pm.min_spare_server, pm.max_spare_serverの設定を変更することで子プロセス数を制御することができます。
EC2 t2.microのメモリは1Gibなので最大10プロセスなら収まる予定です。
最後にphp-fpmとhttpdを再起動して設定を反映させます。
# php-fpmの再起動
$ sudo systemctl restart php-fpm.service
# 記述ミスがないかどうかは、configtestで確認できます
# systemctlでは使えないので、以前のserviceを使います
$ sudo service httpd configtest (もしくは $ httpd -t)
Syntax OK
# エラーが出たらファイルの記述内容を確認しましょう。
# 再起動(どちらでも大丈夫です)
$ sudo systemctl restart httpd.service
$ sudo service httpd restart
以上でphp.iniの設定は完了です!素敵なPHPライフをご堪能ください!
もしこの時点で.phpファイルが表示できないようであれば、サーバーの再起動(AWSコンソールからEC2再起動もしくはrebootコマンド)を行えば、設定が正しければ見れるようになるはずです。
ComposerはPHPライブラリ・パッケージ管理ツールで、Laravelなどのフレームワークを利用する場合には必須となります。
それ以外でも利用頻度が非常に高いので、あらかじめインストールしておきましょう。
# tmpディレクトリに移動
$ cd /tmp
# curlでComposerをダウンロード
$ sudo curl -sS https://getcomposer.org/installer | php
All settings correct for using Composer
Downloading...
Composer (version 1.10.7) successfully installed to: /tmp/composer.phar
Use it: php composer.phar
# パスを通しておく(移動)
# /usr/local/bin/composer でもいいがrootユーザーはパスが通っていないので追加する必要がある
$ sudo mv composer.phar /usr/bin/composer
# 確認
$ composer
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 1.10.7 2020-06-03 10:03:56
以上でCompoer本体のインストールが完了しました。
これでようやく「composer create-project --prefer-dist laravel/laravel」のようなコマンドを利用することができるようになります。
Web開発を行う上でnode.jsおよびnpmの利用は欠かせません。こちらもこの段階でサクッと入れておきましょう。
ここではNode.js(12.x)のインストール方法をご紹介します。npmはセットで利用できるようになります。
基本的な作業はNodesource公式にある説明の通りです。
# ビルドツール(gcc-c++)を入れておく
$ yum install gcc-c++ make
# リポジトリ取得
$ curl -sL https://rpm.nodesource.com/setup_12.x | bash -
# インストール
$ yum install nodejs
# Node.js確認
$ node -v
v12.18.0
# npm確認
$ npm -v
6.14.4
これだけです。rootユーザーで作業していない場合は、適宜sudoをつけてください。
以上でNode.jsとnpmが利用できるようになりました。
最後にMySQLデータベースについてですが、今回はEDSなどは利用せず、Linuxに直接インストールします。
冒頭でご紹介したように、Amazon Linux 2のデフォルトリポジトリであるamzn2-coreでは、yum install mysql を実行しても、mariaDBになってしまいます!
$ sudo yum install mysql
=======================================================================================================================================================================================================
Package Arch Version Repository Size
=======================================================================================================================================================================================================
Installing:
mariadb x86_64 1:5.5.56-2.amzn2 amzn2-core 8.9 M
Transaction Summary
=======================================================================================================================================================================================================
Install 1 Package
お前じゃない。。
そもそもamzn2-coreリポジトリではMySQLをインストールできないので、公式のMySQLリポジトリをインストールして、そこからMySQLをインストールします。
Amazon Linux 2もCentOSなどと同様にRedHat系のディストリビューションなのでバグる可能性は少ないとは思いますが、以下のリポジトリはCentOS7用であるため若干の不安は残ります。
なので私が人柱になります(笑)ガンガンいこうぜ!
早速リポジトリをインストールします。2018年4月時点での最新版はmysql5.7でした。
(※余談ですが、CentOS7用でいけると思った理由は、Amazon Linux 2でのserviceコマンドがsystemctlコマンドにリダイレクトされるからです。これが起こるのはCentOS7以降なので。)
$ sudo yum install http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
これを使ってMySQLをインポートします。
$ sudo yum install --enablerepo=mysql57-community mysql-community-server
=======================================================================================================================================================================================================
Package Arch Version Repository Size
=======================================================================================================================================================================================================
Installing:
mysql-community-libs x86_64 5.7.21-1.el7 mysql57-community 2.1 M
replacing mariadb-libs.x86_64 1:5.5.56-2.amzn2
mysql-community-libs-compat x86_64 5.7.21-1.el7 mysql57-community 2.0 M
replacing mariadb-libs.x86_64 1:5.5.56-2.amzn2
mysql-community-server x86_64 5.7.21-1.el7 mysql57-community 164 M
Installing for dependencies:
mysql-community-client x86_64 5.7.21-1.el7 mysql57-community 24 M
mysql-community-common x86_64 5.7.21-1.el7 mysql57-community 272 k
numactl-libs x86_64 2.0.9-6.amzn2 amzn2-core 29 k
Transaction Summary
=======================================================================================================================================================================================================
Install 3 Packages (+3 Dependent packages)
先ほどとは違いますね。--enablerepo を指定しているので、先ほど公式からインストールしたリポジトリが優先されます。
無事にインストールできたか確認して、実際に起動してみましょう。
// バージョン確認 兼 インストール確認
$ mysql --version
// サーバー起動時の自動起動をONにする
$ sudo chkconfig mysqld on
// MySQLを起動
$ sudo service mysqld start
Active: active (running) となっていればOKです。
最後にルートパスワードを設定しておきます。
今回インストールしたMySQL5.7からはデフォルトパスワードが設定されているので、まずはそちらを確認してコピーします(MySQL5.6以前はパスワード無しです)。
$ sudo cat /var/log/mysqld.log | grep "temporary password"
... [Note] A temporary password is generated for root@localhost: **********)
このパスワードを利用してログインします。
以下のコマンドを叩いてデフォルトパスワードをコピペしてください。セキュリティのためペーストしても表示されませんので、貼り付けた(と思ったら)そのままEnter。
$ mysql -u root -p
Enter password:
最後にパスワードを変更します。
僕はこちらのパスワードジェネレーターを利用しました。どうせ手打ちなんてしないので複雑にしておきましょう。
mysql> set password for root@localhost=password(‘**********');
Query OK, 0 rows affected, 1 warning (0.00 sec)
お疲れ様でした!出るときはquitかexitですので覚えておきましょう。
mysql> quit
Bye
お疲れ様でした!ここまでの作業で、EC2にApache2.4を導入して設定を行い、Webサーバーとして稼働させHTTP経由でアクセスすることができました。
また、PHP7やMySQLを導入したことで、今後はデータベースを介した動的なコンテンツの製作も可能になります。
ここまでの流れで、WordPressでのブログ作成やCakePHP・Laravelなどのフレームワークを用いたWeb製作に取り掛かる準備が完了しました。
ただし、この状態だと稼働しているEC2インスタンスが直接インターネットと接続していることに加え、SSL接続(HTTPS)を設定していないため、高いセキュリティ下で運営されているとは言えません。
次回(第5回)以降は、
について解説していきます。
引き続きどうぞよろしくお願いいたします!
Webエンジニア PHPエンジニア HTML CSS JS jQuery PHP Laravel Python SQL WordPress AWS Linux Apache
【名前】 "みやび"
【関連】 株式会社PLAN / MIYABI Lab / JAPAN MENSA /
【MIYABI Lab】平日オフィスを勉強用に解放中!みんなで楽しくプログラミングを学べる環境を作る!詳しくはコチラ(https://miyabi-lab.space)◆HTML, CSS, JS, PHP, Python, SQL, AWS◆生物学系修士→製薬会社→Webエンジニア(株式会社PLAN)・MENSA会員
【AWS】知識ゼロから理解するRDS超入門
AWSのデータベースサービス「Amazon RDS」を初心者にもわかるように解説します。未経験には難しいMultiAZ構成やレプリケーションは、マスター/スレ...
【AWS】Auto Scalingする前に知っておくべき7つのこと
Amazon EC2 Auto Scaling(オートスケール)を使用すると、CPU使用率等に応じてEC2の台数を自動的に増減できます。ここでは、初心者の持つ疑問を通し...
WordPressの基本構造を理解してオリジナルテーマを作ろう(後半)
WordPressのテーマを自作するために必要なテンプレートファイル(functions.phpやstyle.css)の役割やファイル構造を理解して、どのようにオリジナ...
WordPressの基本構造を理解してオリジナルテーマを作ろう(前半)
WordPressのテーマを自作するために必要なテンプレートファイル(functions.phpやfront-page.php)の役割やファイル構造を理解して、どのようにオ...
【Heroku入門】無料枠サーバーを24時間スリープさせない方法
フリープランのHerokuサーバーでは、30分以上アクセスがないと自動的にスリープしてしまいます。ここでは、Herokuサーバーを寝かせない方法につい...
【入門編】Laravelのディレクトリ構造とMVCの処理の流れを理解する
Laravel初心者が学習する際にわかりにくいLaravelのディレクトリ構造を具体的な例を交えて解説します。MVCの基本であるビュー、モデル、コントロー...
【初心者向け】PythonによるHeroku環境で簡単LINEBot開発
誰でも簡単にLINEBotをpythonを使ってHeroku環境で開発できる方法を解説します。ここでは、LINE Messaging APIを用いることでおうむ返しをするBot...
AWSでWebサーバー構築!踏み台サーバーでセキュアなネットワークを構築する(第5回)
連載の第5回です。メインEC2に対して直接SSH接続できる状態というのは、セキュリティの観点からあまり望ましくありません。MySQLやEBSが紐づいたメ...
AnacondaでのTensorFlow環境構築と基礎的な使い方
Anaconda(アナコンダ)のインストールからJupyter notebook(ジュピターノートブック)とTensorFlow(テンサーフロー)の基本的な使い方を初心者...
脱初心者!MNIST beginnerに隠れ層を加えたニューラルネット解説
TensorFlowのチュートリアルであるMNIST beginnerの応用して、隠れ層と活性化関数を加えたニューラルネットワークで手書き文字識別を解説します。...
AWSでWebサーバー構築!Apache2.4, PHP7, MySQLの導入と初期設定(第4回)
連載の第4回です。今回は作成したEC2インスタンスにWebサーバーとしての機能を持たせるため、Apache2.4のインストールおよびhttpd.conf等の各種設...
AWSでWebサーバー構築!EC2を作成してSSH接続する(第3回)
連載の第3回です。前回作成したVPC・サブネットにおいて、セキュリティーグループに保護されたEC2インスタンスの作成・設定およびSSH接続の確立ま...
初心者必読!MNIST実行環境の準備から手書き文字識別までを徹底解説!
Pythonによる機械学習をプログラミング初心者にもわかりやすいように、TensorFlowチュートリアルのMNIST beginnerを使って、手書き文字(MNIST)識別...
AWSでWebサーバー構築!専門用語の解説とVPC環境を構築する手順(第2回)
連載の第2回です。AWSにてVPCネットワークを構築してWebサーバーを設置・運用するためには、AWS内で利用される重要単語について正しく理解しておく...
知識ゼロで機械学習・AIを理解するために必要なニューラルネットワークの基礎知識
機械学習・AIを理解するために必要なニューラルネットワークの基礎について、これから機械学習を勉強したい人、プログラミング未経験の人にもわか...
Canvaで簡単におしゃれなアイキャッチ画像を作ろう!使い方を徹底解説!
PhotoshopやIllustratorを使えなくてもCanvaなら誰でも簡単におしゃれなアイキャッチ画像が作れます。豊富なデザインテンプレートを組み合わせるだ...
プレビュー機能付きの記事編集画面の作り方(Laravel5)
記事編集フォームにはプレビュー機能の実装が必須です。記事を保存する処理とプレビューを表示する処理を共存させるにあたり、ボタンをクリックし...
AWSでWebサーバー構築!VPC設計に必要なIPアドレスとサブネットの基礎知識(第1回)
連載の第1回です。AWSのVPCネットワークを設計して実際に構築するためには、IPアドレスの基礎を理解することが非常に大切です。EC2 Webサーバーを...
MIYABI Labホームページを製作しました
様々な理由でプログラミングの勉強を困難だと感じてしまっている方のお役に立てれば嬉しいです。これからも小さなWebサービスを作り続けていき、技...
ゆざ、株式会社PLANを卒業します。
2年間インターンとしてお世話になった株式会社PLANを卒業します。AWS,Laravel,Pythonなどの技術的なことだけではなく、エンジニアとして、社会人と...