ミスがありましたらご指摘お願いいたします。
この記事はCentOS8では一部挙動が異なるようですので
8版をリライトしました(おとなしく7を使うと良いと思いますが)
前提
ConoHaVPSでLAMP環境構築するまでの手順
当方の環境はMac
LAMP構築
初期設定
conoHaでVPSの申し込みをしてください
申し込みをしてない方はこちら
サーバーを作成
今回はCentOSでやっていきます。
rootパスワードとネームタグは自由に。
作成後、ネームタグをクリックすると下記のような画面に行きます。
ssh接続
ssh接続というのは
sshという規格を用いてサーバーに接続するんだな程度の認識で良いです
それでは接続していきましょう。
ターミナルから下記を入力します
※先頭の$ についてはコマンドですよという記載上の表現なので、コマンドとして入力はしないでください
$ ssh root@IPアドレス
Are you sure you want to continue connecting (yes/no)?と接続しても大丈夫?的なこと聞かれたらyesと打つ。
パスワードを求められるので、サーバー作成時に設定したrootパスワードを入力する。
[root@IPアドレス ~]#
上記のようになれば接続成功。
ユーザー作成
Rootユーザはサーバーでの操作にログが残らず、さらにサーバーに対してあらゆる事ができてしまい危険です。
ですので、ログを残すためや操作に制限を与えるためユーザーを作成します。
[root@IPアドレス ~]# adduser ユーザー名
[root@IPアドレス ~]# passwd ユーザー名
ユーザー ユーザー名 のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。
adduser ユーザー名でユーザー追加します。
passwd ユーザー名でユーザーにパスワードを設定します。
新しいパスワードを求められるので入力します。
画面には入力情報出ませんので注意。
次にWheelグループに追加します。
Wheelグループはsudoというコマンドを用いて、rootユーザーと同等のレベルでコマンドが実行できるグループです。
rootユーザと同等なら、rootユーザ使えば良いと思いますが下記のような利点があります
- 作成したユーザのパスワードを使うのでrootユーザのパスワードを知る必要がない
- sudoをできるかどうかはrootユーザが決める(多人数で操作する際に利点)
- sudoでのコマンド結果は、すべてログに残る
[root@IPアドレス ~]# gpasswd -a ユーザー名 wheel
ユーザ ユーザー名 をグループ wheel に追加
gpasswdはユーザーが所属するグループの情報を管理します。-aオプションをつけることで指定ユーザーをグループに追加できます。
ちゃんとユーザーができているか確認します。
パスワードを求められたら、ユーザーに設定したパスワードを入力します。
[root@IPアドレス ~]# su ユーザー名
# こうなったら成功
[ユーザー名@IPアドレス root]$
suはユーザー変更するコマンドです。
ユーザー名を与えないと、rootユーザーになることを意味します。
作成したユーザーにsshで接続しましょう。
exitを入力して、rootに戻ります。
もう一度exitをして、接続を切ります。
ちなみにexitはログアウトのコマンドです。
下記のコマンドを叩くとパスワードを求められるので入力します。
$ ssh ユーザー名@IPアドレス
ユーザー名@IPアドレス's password:
# こうなったら成功
[ユーザー名@IPアドレス ~]$
以降から作成したユーザーで接続します。
作成したユーザーで接続できるようになったので、安全性を高めるためにrootユーザーにsshで接続できないようにします。
[ユーザー名@IPアドレス ~]$ sudo vim /etc/ssh/sshd_config
/PermitRootLoginと入力します。
PermitRootLogin yes
Shift+Aを押し、INSERTモード(入力できる状態)になり、yesをnoに変えます。
変更後escを押し、wqで保存して終了します。
変更を反映させます。
[ユーザー名@IPアドレス ~]$ sudo systemctl restart sshd
これでこのようにログインすることはできなくなりました。
$ ssh root@IPアドレス
公開鍵認証でVPS接続
鍵をローカルで生成します。
$ cd ~/.ssh
$ ssh-keygen -t rsa -b 2048
cd ~/.sshで鍵置き場に移動します。
もしなかったら、mkdir ~/.sshで作成し、chmod 700 ~/.sshとしましょう。
chmodは各ユーザーがそのファイルやフォルダにどんなことができるかを制限するコマンドです。
移動したら鍵を生成します。
ssh-keygenで生成します。
-tでタイプを指定します。rsaは主流な暗号の種類です。
-bで鍵の長さ(byte)を指定します。
入力すると保存する鍵名を聞かれるので、適当にconohaにしました。空にするとid_rsaという名前で作られます。
Generating public/private rsa key pair.
Enter file in which to save the key (/.ssh/id_rsa): conoha(好き名前で)
Enterを押すと、次にパスフレーズが求められます。
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
パスフレーズは、鍵を使うのに必要なパスワードです。
念には念をってやつですね。
二回入力すると、生成が開始されます。
こんな感じのがでたらOKです。
+---[RSA 2048]----+
〜 省略 〜
+----[SHA256]-----+
ls ~/.sshとして、確認してみると、設定した名前で二つのファイルが出来上がっています。
$ ls ~/.ssh
conoha conoha.pub
.pubの方が公開鍵になります。
公開鍵に対して秘密鍵で認証するので、conoha.pubのほうをサーバーにアップロードします。
サーバー側にまだ、鍵を置く場所がないので作成します。
ユーザーでログインし、下記のコマンドを叩きます。
[ユーザー名@IPアドレス ~]$ mkdir ~/.ssh
[ユーザー名@IPアドレス ~]$ chmod 700 ~/.ssh
つぎにアップロードします。
conoha.pubの部分は適宜読み替えてください。
$ scp ~/.ssh/conoha.pub ユーザー名@IPアドレス:~/.ssh/authorized_keys
これでサーバーに作った.ssh配下にauthorized_keysという名前でアップロードされました。
scpはファイル転送を行うコマンドです。
authorized_keysってなんだ?状態なので、VPS側で下記のコマンドを入力します。
[ユーザー名@IPアドレス ~]$ sudo vim /etc/ssh/sshd_config
開いたら
/AuthorizedKeysFileと入力し、Enterを押します。
するとこのような記述があります。
AuthorizedKeysFile .ssh/authorized_keys
これは、ssh接続で使う公開鍵の場所と名前を示しています。
先ほどアップロードしたものを指しています。
次に公開鍵認証で接続できるように設定します。
/PubkeyAuthenticationを入力し、Enterを押します。
# PubkeyAuthentication yes
となっているのが表示されるかと思います。
CentOS7.4におけるsshdは、デフォルトで公開鍵認証で接続できるようになっているのでこのままで問題ありません。
念の為#を外しておいてもいいかもしれません。
ここまでで、公開鍵認証での接続ができるようになっているので試してみましょう。
conohaの部分は適宜ローカルで作成した鍵の名前に読み替えてください。
$ ssh -i ~/.ssh/conoha ユーザー名@IPアドレス
鍵生成時に設定したパスフレーズ(鍵生成の際に入力したもの)が求められるので、入力してあげます。
ログインできたら公開鍵でのログイン成功です。
もうパスワードでのログインはしなくていいので無効化しましょう。
[ユーザー名@IPアドレス ~]$ sudo vim /etc/ssh/sshd_config
# パスワードでの認証しない
PasswordAuthentication no
これで保存し、再度 sudo systemctl restart sshd.serviceで変更を反映します。
蛇足
$ ssh -i ~/.ssh/conoha ユーザー名@IPアドレス
毎回こんなの打ちたくないので、先に定義してもっと簡単に接続できるようにしましょう。
$ cd ~/.ssh
$ vi config
configファイルを作成し、以下を入力します。
Host conoha
HostName IPアドレス
User ユーザー名
Port 22
IdentityFile ~/.ssh/鍵名
HOST conohaの箇所をssh conohaのように使用するので、適当に決めてください。
保存すると、
$ ssh conoha
で接続できます。
ポート番号変更
sshのポートは22がデフォルトなので、変えてやらないと攻撃を受けるリスクが高まるので変えましょう。
[ユーザー名@IPアドレス ~]$ sudo vim /etc/ssh/sshd_config
を実行し、Port 22と書かれている部分をコメントアウトして、新しく指定しましょう。
# Port 22
Port 10022
sshdの再起動をして変更を反映させます。
[ユーザー名@IPアドレス ~]$ sudo systemctl restart sshd.service
次にfirewallのsshのポート番号が22になっているので変えてあげます。
[ユーザー名@IPアドレス ~]$ sudo vim /etc/firewalld/zones/public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Public</short>
<description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
<service name="dhcpv6-client"/>
<service name="ssh"/>
#追加
<port protocol="tcp" port="10022"/>
</zone>
変更を反映させるために再起動します。
[ユーザー名@IPアドレス ~]$ sudo systemctl restart firewalld.service
再起動したら、ポートが変わっているか確認します。
[ユーザー名@IPアドレス ~]$ sudo firewall-cmd --list-all
# これが出ればOK
ports: 10022/tcp
確認できたら、忘れずローカルのconfigも変えてあげましょう
Host conoha
HostName IPアドレス
User ユーザー名
Port 10022 #ココ
IdentityFile ~/.ssh/鍵名
もしも締め出されてsshできなくなったら
ConoHaのサイトからサーバーを選択し、コンソールを押してください。
よく見るターミナルがweb上で開かれるので、ユーザー名とパスワードを入力してログインできるはずなので、やらかした設定を見直しましょう
Apache
ココを参考にやっていきます。
rootユーザーに切り替えて、yumを使ってインストールします。
yumとは、RedHat系ディストリビューションのパッケージ管理システムの事です。
リポジトリと呼ばれるパッケージ置き場からのパッケージをダウンロードし、インストール、アンインストール、更新をする事ができます。その際、各パッケージの依存関係を自動的に解決し、関連するパッケージがどれなのか教えてくれたり、必要な場合は、関連パッケージをダウンロードしてそのまま更新してくれたりしてくれます。また、システム全体を更新する事も可能です。
[ユーザー名@IPアドレス ~]$ su
[root@IPアドレス ~]# yum -y install httpd
これでApacheがインストールできたので起動します。
起動成功しても何も表示されないので動いていることも確認しましょう。
# 起動
[root@IPアドレス ~]# systemctl start httpd
# 確認
[root@IPアドレス ~]# systemctl status httpd
# サーバー起動時に自動起動
[root@IPアドレス ~]# systemctl enable httpd
つぎにちゃんとサイトが表示できるか確認するために、HTMLファイルを置きます。
デフォルトではドキュメントルートは/var/www/html/になっています。
ドキュメントルートとは、Webサーバ(HTTPサーバ)やFTPサーバが外部に公開するファイルなどが置かれたフォルダ/ディレクトリ。
[root@IPアドレス ~]# vi /var/www/html/index.html
iキーを押し、適当に入力して、escを押した後wqで保存して終了します。
ブラウザのURLにhttp://<VPSのIPアドレス>/index.htmlを入力してアクセスします。
入力した文字が表示されたら成功ですが、表示できなかった場合、それはfirewallが接続をブロックしているからかもしれません。
http、httpsの接続を許可したいので、ポートの開放を行いましょう。
[root@IPアドレス ~]# sudo firewall-cmd --permanent --add-service=http
[root@IPアドレス ~]# sudo firewall-cmd --permanent --add-service=https
# リロード
[root@IPアドレス ~]# sudo firewall-cmd --reload
これでアクセスしてみましょう。
MariaDB(MySQL)
ココを参考にやっていきます。
MariaDBは、MySQL派生として開発されている、オープンソースの関係データベース管理システム
rootで、Apacheの時と同様にyumを使います。
# インストール
[root@IPアドレス ~]# yum -y install mariadb-server
# 起動
[root@IPアドレス ~]# systemctl start mariadb
# 確認
[root@IPアドレス ~]# systemctl status mariadb
# サーバー起動時に自動起動
[root@IPアドレス ~]# systemctl enable mariadb
起動したら初期設定をしていきます。
MariaDBのrootユーザーのパスワードを設定します。
もし質問があった場合、基本yを押していきます。
[root@IPアドレス ~]# mysql_secure_installation
・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]で反映させます。
初期設定が終わったので、試しにログインしてみます。
先ほど設定したパスワードを入力します。
[root@IPアドレス ~]# mysql -u root -p
# ログインできたら終了する
MariaDB [(none)]> exit
PHP
ここを参考にやっていきます。
PHP 7.2は「remi」というリポジトリにあるため、これを追加する必要があります。「remi」の追加には別のリポジトリとなる「epel」の追加が必要ですが、ConoHaで提供しているCentOS7.4のテンプレートでは
デフォルトで追加されており利用可能な状態になっています。
yum -y install epel-releaseでepelを追加できます
ConoHaはこのまま
# Remi のリポジトリ情報をインストール
[root@IPアドレス ~]# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
# PHPインストール
[root@IPアドレス ~]# yum -y install --enablerepo=remi,remi-php72 php php-devel php-mbstring php-mysqlnd php-pdo php-gd
# PHP反映
[root@IPアドレス ~]# systemctl restart httpd
これでPHPの環境ができました。
HTMLファイルを作成した時のように、PHPファイルを作成しましょう。
作成したら同様にアクセスして確認してみましょう。
phpMyAdminを入れたい方
こちらを参考に
おつかれさまでした。
これでLAMP環境構築できました。
テンプレートからLAMPは構築済みのが使えますが、勉強の意味でも自分でやってみました。
ミスなどの指摘歓迎です。
参考にさせていただいたサイト

