【CentOS 8】ConoHaVPSでLAMP環境構築 【Pt.2 LAMP構築〜ドメイン取得/SSLまで】
Apacheインストール
dnf
を使ってインストールします。
(CentOS8からはyum
からdnf
に変わっています。内部的にはyum
が使われているので使えます)
dnfとは、パッケージ管理システムの事です。 リポジトリと呼ばれるパッケージ置き場からパッケージをダウンロードし、インストール、アンインストール、更新をする事ができます。 その際、各パッケージの依存関係(Aのパッケージを使うにはBが必要で、Bを使うには...等)を自動的に解決し、関連するパッケージがどれなのか教えてくれたり、必要な場合は、関連パッケージをダウンロードしてそのまま更新してくれたりしてくれます。また、システム全体を更新する事も可能です。
[ユーザー名@IPアドレス ~]$ sudo dnf -y install httpd
完了しました!
とでたらインストール終了です。
インストール後に自動で起動されないので、起動します。
起動成功しても何も表示されないので動いていることも併せて確認しましょう。 また、サーバー自体を再起動した際に自動で立ち上がるようにもします。
#起動
[ユーザー名@IPアドレス ~]$ sudo systemctl start httpd
#確認
[ユーザー名@IPアドレス ~]$ sudo systemctl status httpd
#サーバー起動時に自動起動
[ユーザー名@IPアドレス ~]$ sudo systemctl enable httpd
これでAppach
のインストールはOKですが
ちゃんとブラウザからサイトが表示できるか確認していきます。
そのために、HTMLファイルを置きます。
ドキュメントルートという、
外部に公開するファイルなどを置くディレクトリがAppach
により設定されています。
デフォルトではドキュメントルートは
/var/www/html/
になっています。
[ユーザー名@IPアドレス ~]$ sudo vi /var/www/html/index.html
i
キーを押し、適当に入力して、esc
を押した後wq
で保存して終了します。
ブラウザのURLにhttp://<VPSのIPアドレス>/index.html
を入力してアクセスします。
入力した文字が表示されたら成功ですが、表示できないはずです。
それはfirewall
が通信をブロックしているからです。
http、httpsの通信を許可したいので、ポートの開放を行いましょう。
[ユーザー名@IPアドレス ~]$ sudo firewall-cmd --permanent --add-service=http
[ユーザー名@IPアドレス ~]$ sudo firewall-cmd --permanent --add-service=https
#リロードして設定反映
[ユーザー名@IPアドレス ~]$ sudo firewall-cmd --reload
それぞれで、success
と出たらOKです。
firewall-cmd
でfirewallの操作を行います。
--add-service=http
でhttp
に対してアクセスを許可しています。
--permanent
なしで設定すると、一時的(firewallが再起動されるまで)なアクセス許可になるので、--permanent
オプションをつけます
これでアクセスしてみましょう。 無事表示されればWebサーバーのインストールは終了です。
MySQLインストール
Apacheの時と同様にdnf
を使います。
それではインストールしていきます。 デフォルトのバージョンだと8になります。
#インストール
[ユーザー名@IPアドレス ~]$ sudo dnf -y install mysql-server
#起動
[ユーザー名@IPアドレス ~]$ sudo systemctl start mysqld
#確認
[ユーザー名@IPアドレス ~]$ sudo systemctl status mysqld
#サーバー起動時に自動起動
[ユーザー名@IPアドレス ~]$ sudo systemctl enable mysqld
起動したら初期設定をし MySQLのrootユーザーのパスワードを設定します。
[ユーザー名@IPアドレス ~]$ sudo mysql_secure_installation
下記のような質問がありますので、答えていきます
・Would you like to setup VALIDATE PASSWORD component? パスワードの強度を設定できます。[y]で強度を選択します ・Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG パスワードの強度を選択します。0~2から選択します ・New password: ・Re-enter new password: rootユーザーのパスワードを設定します ・Remove anonymous users? [y/n] [n]にすると誰でもログインが出来るようになるので[y]にします ・Disallow root login remotely? [y/n] [n]にするとリモートでrootログインが出来るようになり、セキュリティのため[Y]にします。 ・Remove test database and access to it? [y/n] テストのデータベースを削除するかどうかです。必要ないので[y]にします。 ・Reload privilege tables now? [y/n] ここまでの設定をすぐに反映するかどうかです。[y]で反映させます。
初期設定が終わったので、試しにログインしてみます。 先ほど設定したパスワードを入力します。
[ユーザー名@IPアドレス ~]$ sudo mysql -u root -p
#ログインできたら exit を入力し終了する
mysql> exit
これでMySQLのインストールは完了です。
ちなみに、MySQL5.7をインストールしたい場合は[こちら][1]が参考になるかと思います。 dnf コマンドは内部的にはyumを呼んでいるので、yumで入力しても問題ありません
PHP
PHPをインストールしていきます。 インストールできるPHPのバージョンを確認します。
[ユーザー名@IPアドレス ~]$ sudo dnf module list php
#表示結果↓
CentOS-8 - AppStream
Name Stream Profiles Summary
php 7.2 [d] common [d], devel, minimal PHP scripting language
php 7.3 common [d], devel, minimal PHP scripting language
7.2と7.3のどちらかがデフォルトで選択できます しかし現在(2020-7-19)の最新が7.4なので7.4をインストールしたい
デフォルトで良い場合と最新にする方法を載せておきますので、適当に選んでください
7.2と7.3どちらかで良い場合
# 7.2の場合
[ユーザー名@IPアドレス ~]$ sudo dnf -y module install php:7.2
# 7.3の場合
[ユーザー名@IPアドレス ~]$ sudo dnf -y module install php:7.3
#PHP反映
[ユーザー名@IPアドレス ~]$ sudo systemctl restart httpd
現在(2020-7-19)の最新が7.4なので7.4をインストールしたい場合
#Remiリポジトリをインストール
[ユーザー名@IPアドレス ~]$ sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm
#PHPのバージョンチェック(remi-7.4が表示されていればOK)
[ユーザー名@IPアドレス ~]$ sudo dnf module list php
Remiリポジトリとは
PHPスタックの最新バージョン、フル機能、およびその他のソフトウェアを、FedoraおよびEnterprise Linux(RHEL、CentOS、Oracle、Scientific Linuxなど)のユーザーに提供します
それでは、インストールしていきます
[ユーザー名@IPアドレス ~]$ sudo dnf -y module install php:remi-7.4
#PHP反映
[ユーザー名@IPアドレス ~]$ systemctl restart httpd
PHPの動作確認
ちゃんと指定のバージョンがインストールされているか確認し HTMLファイルを作成した時のように、PHPファイルを作成しましょう。 作成したら同様にアクセスして確認してみましょう。
[ユーザー名@IPアドレス ~]$ php -v
これでPHPの環境ができました。
ドメイン取得
今回はお名前ドットコムを使っていきます。 こちらから取りたいドメインを入力します。
しかし、一部UIが分かりづらかったりメールがむちゃくちゃ来る等イライラポイントがあるので、その場合はConoHaからもドメインとれます
.com
や.site
等安いのから高いのまであるので好きなのを選びましょう。
勉強なので、1円もかけたくないという場合もあるかと思います。 その場合は無料ドメインを提供しているサービスがあるので、こちらを利用しましょう。 とりあえず、ドメインが取れればどこでも良いです
そのまま、登録年数/プラン/オプションなどを選び、会員登録をしましょう
ちなみにオプションについては下記で良いと思います
- Whois情報公開代行メール転送オプション -> 不要
- ドメインプロテクション -> PV数が多い、法人の場合登録したほうが良い
お名前ドットコムはうざいくらい、メールが来るので、 メールの配信をなくす設定したほうが良いです
ドメインの設定
ConoHaコントロールパネルからDNAを選択し、ドメインの追加を選択します ドメイン名を入力したら保存します
保存したら、ドメイン名をクリックするとドロップダウンから編集が見えるので 編集ボタンを押します。
そうすると、+ボタンが出てくるので、画像を参考に新しいレコードを追加し、保存します。 タイプNSの値は後で入力に使います
お名前ドットコムのネームサーバーの設定から、その他を選択し ドメインを選択します
先程、ConoHaのDNSででてきたNSの値を入力し、保存します
しばらくする(0.5h~くらい)と紐付いているので、登録したドメインでアクセスできるようになったら完了です
SSL対応
SSLはブラウザとサーバー間の通信を暗号化し、セキュアな通信を行います
ApacheでSSLを利用するには、mod_ssl
が必要になります
インストールし、Apacheを再起動します
[ユーザー名@IPアドレス ~]$ sudo dnf install -y mod_ssl
[ユーザー名@IPアドレス ~]$ sudo systemctl restart httpd
無料でSSLできるLet's Encryptというサービスを利用します。
それではやっていきましょう
まず、Apache のメイン設定ファイル `/etc/httpd/conf/httpd.conf を編集します。「Listen 80」ディレクティブを見つけてその後ろに次の行を追加します。
<VirtualHost *:80>
DocumentRoot "/var/www/html"
ServerName "example.com"
</VirtualHost>
Certbotプログラムをダウンロードし実行します
[ユーザー名@IPアドレス ~]$ sudo dnf install -y mod_ssl
[ユーザー名@IPアドレス ~]$ sudo systemctl restart httpd
ファイルを保存して、Apache を再起動します。
[ユーザー名@IPアドレス ~]$ sudo systemctl restart httpd
Certbotをインストールしていきます CertbotはLet's EncryptでSSL導入をするソフトウェアになります
[ユーザー名@IPアドレス ~]$ sudo dnf install certbot python3-certbot-apache
[ユーザー名@IPアドレス ~]$ sudo certbot --apache
"Enter email address (used for urgent renewal and security notices)" というプロンプトが表示されたら、メアドを入力し、Enter キーを押します。
Let's Encrypt のサービス利用規約に同意を求められるので同意しましょう
自動更新の設定をします
[ユーザー名@IPアドレス ~]$ sudo echo "0 0,12 * * * root python3 -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew -q" | sudo tee -a /etc/crontab > /dev/null
サイトをチェックし、https://
でアクセス出来たらOK