【CentOS 8】ConoHaVPSでLAMP環境構築 【Pt.2 LAMP構築〜ドメイン取得/SSLまで】

VPSの契約から初期設定までは

Embedded content: https://blog.collapse-natsu.com/post/centos8-conoha-lamp-p1

Apacheインストール

dnfを使ってインストールします。 (CentOS8からはyumからdnfに変わっています。内部的にはyumが使われているので使えます)

dnfとは、パッケージ管理システムの事です。 リポジトリと呼ばれるパッケージ置き場からパッケージをダウンロードし、インストール、アンインストール、更新をする事ができます。 その際、各パッケージの依存関係(Aのパッケージを使うにはBが必要で、Bを使うには...等)を自動的に解決し、関連するパッケージがどれなのか教えてくれたり、必要な場合は、関連パッケージをダウンロードしてそのまま更新してくれたりしてくれます。また、システム全体を更新する事も可能です。

VPS
[ユーザー名@IPアドレス ~]$ sudo dnf -y install httpd

完了しました!とでたらインストール終了です。

インストール後に自動で起動されないので、起動します。

起動成功しても何も表示されないので動いていることも併せて確認しましょう。 また、サーバー自体を再起動した際に自動で立ち上がるようにもします。

VPS
#起動
[ユーザー名@IPアドレス ~]$ sudo systemctl start httpd 
#確認
[ユーザー名@IPアドレス ~]$ sudo systemctl status httpd
#サーバー起動時に自動起動
[ユーザー名@IPアドレス ~]$ sudo systemctl enable httpd

これでAppachのインストールはOKですが

ちゃんとブラウザからサイトが表示できるか確認していきます。

そのために、HTMLファイルを置きます。

ドキュメントルートという、 外部に公開するファイルなどを置くディレクトリがAppachにより設定されています。

デフォルトではドキュメントルートは

/var/www/html/

になっています。

VPS
[ユーザー名@IPアドレス ~]$ sudo vi /var/www/html/index.html

iキーを押し、適当に入力して、escを押した後wqで保存して終了します。

ブラウザのURLにhttp://<VPSのIPアドレス>/index.htmlを入力してアクセスします。

入力した文字が表示されたら成功ですが、表示できないはずです。

それはfirewallが通信をブロックしているからです。

http、httpsの通信を許可したいので、ポートの開放を行いましょう。

VPS
[ユーザー名@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=httphttpに対してアクセスを許可しています。 --permanentなしで設定すると、一時的(firewallが再起動されるまで)なアクセス許可になるので、--permanentオプションをつけます

これでアクセスしてみましょう。 無事表示されればWebサーバーのインストールは終了です。

MySQLインストール

Apacheの時と同様にdnfを使います。

それではインストールしていきます。 デフォルトのバージョンだと8になります。

VPS
#インストール
[ユーザー名@IPアドレス ~]$ sudo dnf -y install mysql-server
#起動
[ユーザー名@IPアドレス ~]$ sudo systemctl start mysqld
#確認
[ユーザー名@IPアドレス ~]$ sudo systemctl status mysqld
#サーバー起動時に自動起動
[ユーザー名@IPアドレス ~]$ sudo systemctl enable mysqld

起動したら初期設定をし MySQLのrootユーザーのパスワードを設定します。

VPS
[ユーザー名@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]で反映させます。

初期設定が終わったので、試しにログインしてみます。 先ほど設定したパスワードを入力します。

VPS
[ユーザー名@IPアドレス ~]$ sudo mysql -u root -p
#ログインできたら exit を入力し終了する
mysql> exit

これでMySQLのインストールは完了です。


ちなみに、MySQL5.7をインストールしたい場合は[こちら][1]が参考になるかと思います。 dnf コマンドは内部的にはyumを呼んでいるので、yumで入力しても問題ありません


PHP

PHPをインストールしていきます。 インストールできるPHPのバージョンを確認します。

VPS
[ユーザー名@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どちらかで良い場合

VPS
# 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をインストールしたい場合

VPS
#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など)のユーザーに提供します

それでは、インストールしていきます

VPS
[ユーザー名@IPアドレス ~]$ sudo dnf -y module install php:remi-7.4
#PHP反映
[ユーザー名@IPアドレス ~]$ systemctl restart httpd

PHPの動作確認

ちゃんと指定のバージョンがインストールされているか確認し HTMLファイルを作成した時のように、PHPファイルを作成しましょう。 作成したら同様にアクセスして確認してみましょう。

VPS
[ユーザー名@IPアドレス ~]$ php -v

これでPHPの環境ができました。

ドメイン取得

今回はお名前ドットコムを使っていきます。 こちらから取りたいドメインを入力します。

しかし、一部UIが分かりづらかったりメールがむちゃくちゃ来る等イライラポイントがあるので、その場合はConoHaからもドメインとれます

.com.site等安いのから高いのまであるので好きなのを選びましょう。

勉強なので、1円もかけたくないという場合もあるかと思います。 その場合は無料ドメインを提供しているサービスがあるので、こちらを利用しましょう。 とりあえず、ドメインが取れればどこでも良いです

そのまま、登録年数/プラン/オプションなどを選び、会員登録をしましょう

ちなみにオプションについては下記で良いと思います

  • Whois情報公開代行メール転送オプション -> 不要
  • ドメインプロテクション -> PV数が多い、法人の場合登録したほうが良い

お名前ドットコムはうざいくらい、メールが来るので、 メールの配信をなくす設定したほうが良いです

ドメインの設定

ConoHaコントロールパネルからDNAを選択し、ドメインの追加を選択します ドメイン名を入力したら保存します

スクリーンショット 2020-07-20 0.37.27.png

保存したら、ドメイン名をクリックするとドロップダウンから編集が見えるので 編集ボタンを押します。

そうすると、+ボタンが出てくるので、画像を参考に新しいレコードを追加し、保存します。 タイプNSの値は後で入力に使います

スクリーンショット 2020-07-20 0.43.28.png

お名前ドットコムのネームサーバーの設定から、その他を選択し ドメインを選択します

先程、ConoHaのDNSででてきたNSの値を入力し、保存します

スクリーンショット 2020-07-20 0.55.45.png

しばらくする(0.5h~くらい)と紐付いているので、登録したドメインでアクセスできるようになったら完了です

SSL対応

SSLはブラウザとサーバー間の通信を暗号化し、セキュアな通信を行います ApacheでSSLを利用するには、mod_sslが必要になります

インストールし、Apacheを再起動します

VPS
[ユーザー名@IPアドレス ~]$ sudo dnf install -y mod_ssl
[ユーザー名@IPアドレス ~]$ sudo systemctl restart httpd

無料でSSLできるLet's Encryptというサービスを利用します。

それではやっていきましょう

まず、Apache のメイン設定ファイル `/etc/httpd/conf/httpd.conf を編集します。「Listen 80」ディレクティブを見つけてその後ろに次の行を追加します。

/etc/httpd/conf/httpd.conf
<VirtualHost *:80>
    DocumentRoot "/var/www/html"
    ServerName "example.com"
</VirtualHost>

Certbotプログラムをダウンロードし実行します

VPS
[ユーザー名@IPアドレス ~]$ sudo dnf install -y mod_ssl
[ユーザー名@IPアドレス ~]$ sudo systemctl restart httpd

ファイルを保存して、Apache を再起動します。

VPS
[ユーザー名@IPアドレス ~]$ sudo systemctl restart httpd

Certbotをインストールしていきます CertbotはLet's EncryptでSSL導入をするソフトウェアになります

VPS
[ユーザー名@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

About

現役フリーランスエンジニアの勉強・備忘録。
バックエンドがメイン。フロントからインフラまで興味があり、色々やっています