GMO VPSのCentOS 7.0にLAMP環境を構築するまでの流れ

GMP VPSのプラン

CentOS7.2

gmo_vps_lamp2

ドメイン名を利用しないでIPアドレスで利用する。

ドメインはすでに持っているので。

gmo_vps_lamp3

サーバー起動

GMP VPSの設定が完了すると「GMOクラウド VPSサーバー設定完了のお知らせ」のメールが届きます。

まずはVPSポータルにログインしてサーバーを起動してください。

→ https://vpsportal.gmocloud.com/?utm_source=stm&utm_medium=email&utm_campaign=info_setting

メインドメインの横にある「ON」を選択します。緑色に変われば起動中です。

gmo_vps_lamp

サーバーに接続

sshコマンドが使えるUNIX系の画面を起動してください。(Macだったらターミナル、WindowsならCygwinをインストールするかWindows10ならBash on Ubuntu on Windows)

「GMOクラウド VPSサーバー設定完了のお知らせ」メール内にある

  • IPアドレス
  • 管理者ID
  • 管理者パスワード

を使用します。

管理者IDはおそらく「root」が割り当てられます。IPアドレスは例です。

ssh root@192.0.2.0

yum更新

yumというCentOSのリポジトリを最新に更新してあげましょう。

yum update

「y」で確定してあげる。

Is this ok [y/d/N]: y

作業用ユーザーの設定

rootをずっと使用するのはセキュリティ上あまりよろしくありません。作業用のユーザー作成するのが一般的です。

ユーザー作成

useradd [ユーザー名]

以降の設定はここで作成した[ユーザー名]を使用します。

ちなみにユーザー一覧は以下で確認できます。

cat /etc/passwd

パスワード設定

passwd [ユーザー名]
ユーザー 〇〇 のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:

一般ユーザーにsudo権限を

usermod -G wheel [ユーザー名]
visudo

wheelで検索

/wheel

以下のコメント(#)を外してあげる(元からなければそのままでOK)

%wheel  ALL=(ALL)       ALL

:wpで保存。

作業ユーザーでログイン確認

作業用ユーザーでログイン確認しましょう。

root用ではログインしたまま新しくターミナルを立ち上げます。

ssh [ユーザー名]@[IPアドレス]

ログインできれば作業用ユーザーの作成は完了です。

鍵認証

サーバー側に秘密鍵、自分のパソコンに公開鍵を設置します。

それぞれの処理を見ていきましょう。

サーバー側

mkdir ~/.ssh
chmod 700 ~/.ssh

自分のパソコン側

新しくターミナルを開いて作業します。

cd ~/
ssh-keygen -t rsa -v

色々聞かれますが、初めて鍵を作る場合は全部「Enter」でOKです。

以下コマンドで.sshの中に、「id_rsa」と「id_rsa.pub」が出来上がっているのが分かります。

ls -la ~/.ssh
chmod 600 ~/.ssh/id_rsa.pub

サーバーへ転送します。

scp ~/.ssh/id_rsa.pub [ユーザー名]@[IPアドレス]:~/.ssh/authorized_keys

サーバー側

.sshの中に「authorized_keys」が転送されているか確認。

ls -la ~/.ssh
-rw------- 1 [ユーザー名][ユーザー名] 399  1月  9 11:05 authorized_keys

鍵認証ログイン確認

では、鍵認証でログインできるか見ていきましょう。新しくターミナルを開きます。

ssh -i ~/.ssh/id_rsa [ユーザー名]@[IPアドレス]

「~/.ssh/id_rsa」に公開鍵を設置した場合はデフォルトで読みに行く設定になっているので、省略することが可能です。

ssh [ユーザー名]@[IPアドレス]

SSHの設定

すべてセキュリティを高めるための設定になります。

sshの設定ファイルを変更するのでバックアップをとっておきましょう。

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org

ポート

1024 ~ 65535 まで任意の値を設定できます。

sudo vi /etc/ssh/sshd_config
/Port
Port 22

※22は、1024 ~ 65535 まで任意の値に変更してください。

パスワードログインの禁止

/PasswordAuthentication
PasswordAuthentication no

「no」に変更する。

rootログインの禁止

/PermitRootLogin
PermitRootLogin no

コメント(#)を外して「no」に変更する。

ssh再起動

sudo systemctl restart sshd

ログイン確認

ssh root@[IPアドレス]
ssh -p [ポート番号] root@[IPアドレス]
ssh [ユーザー名]@[IPアドレス]

このあたりは弾かれるようになります。

ルート以外のユーザーでかつパスワード以外の認証方法(鍵認証)でないとログインできません。

ssh -i ~/.ssh/id_rsa -p [ポート番号] [ユーザー名]@[IPアドレス]

ファイアーウォールの設定

CentOS 7.0からは「iptables」ではなく「Firewalld」を使うみたいです。

設定ファイルのコピー

sudo cp /etc/firewalld/zones/public.xml /etc/firewalld/zones/public.xml.org
sudo vi /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"/>
 <port protocol="tcp" port="[変更したポート番号]"/>
 <service name="http"/>
 <service name="mysql"/>
</zone>

:wqで保存。
とりあえず、sshのポートを設定してあげると動くようになります。設定する前にfirewalldを起動するとサーバーに入れなくなるのでご注意を。。

ついでに「http」と「mysql」も追加しておきました。

sudo systemctl start firewalld
sudo systemctl enable firewalld

今のゾーンの設定を確認してみます。

sudo firewall-cmd --list-all
services: http mysql
ports: [ポート番号]/tcp

Webサーバー(Apache)をインストール

sudo yum install httpd
sudo systemctl enable httpd
sudo cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org
sudo vi /etc/httpd/conf/httpd.conf

以下を追加。

ServerTokens Prod
ServerSignature Off

以下 Indexesを削除。

httpd.conf
<Directory "/var/www/html"> # Options Indexes FollowSymLinks Options FollowSymLinks </Directory>

読み込み対象ファイルにindex.phpを追加。
これ書かないとWordPressとかindex.phpファイル読み込もうとすると

Forbidden

You don’t have permission to access / on this server.

のようなエラー出されます。。

httpd.conf
<IfModule dir_module> DirectoryIndex index.html index.php </IfModule>

phpを実行できるように設定。

httpd.conf
AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps

:wqで保存。

sudo systemctl start httpd

アクセスしてみる

ls -la /var/www/html

この中にindexファイルがないと403エラーが出されます。ない場合は作りましょう。

sudo vi /var/www/html/index.html

中身はなんでもいいので、

index.html
Hello CentOS 7.0!

:wqで保存。

ブラウザから

http://[IPアドレス]

にアクセスすると、「Hello CentOS 7.0!」の文字が表示されるはずです。

PHPのインストール

その前に「epel」と「remi」のレポジトリをインストールします。

epel

sudo yum install epel-release

remi

sudo yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

http://rpms.famillecollet.com/

PHP7をインストール

sudo yum install --enablerepo=remi,remi-php70 php php-devel php-mbstring php-pdo php-gd php-mysql php-xml
php -v
sudo cp /etc/php.ini /etc/php.ini.org
sudo vi /etc/php.ini

以下の箇所を修正していきます。(探してください)

php.ini
error_log = /var/log/php_errors.log mbstring.language = Japanese mbstring.internal_encoding = UTF-8 mbstring.http_input = auto mbstring.detect_order = auto expose_php = Off date.timezone = Asia/Tokyo default_charset = “UTF-8” session.hash_function = 1 session.cookie_httponly = 1 # display_errors = On
sudo systemctl restart httpd

MySQLのインストール

公式のyumリポジトリ→ http://dev.mysql.com/downloads/repo/yum/

sudo yum install http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
sudo yum install mysql-community-server
mysqld --version
sudo cp /etc/my.cnf /etc/my.cnf.org
sudo vi /etc/my.cnf

character_set_server=utf8default-storage-engine=InnoDBの設定を行っていきましょう。

詳しくは、ドットインストールさんが有料で公開してますので、テキストで欲しかったら課金してください。

→ http://dotinstall.com/lessons/basic_sakura_vps/8016

sudo systemctl start mysqld

ログインしようとするとエラー

mysql -u root
Access denied for user 'root'@'localhost' (using password: NO)

rootの初期パスワードを確認

次のログはさっきのエラーが出たら多分出てるはず。

sudo cat /var/log/mysqld.log | grep 'password is generated'
 [Note] A temporary password is generated for root@localhost: [パスワード部分]

再度ログイン。今度はパスワードを指定する。

mysql -u root -p

無事ログインできました。すかさずパスワードを変更。(※大小英数記号を組み合わせて8文字以上の要件を満たさないエラーになるのでご注意を。)

set password for root@localhost=password('[新パスワード]');
exit

自動起動の設定

sudo systemctl enable mysqld

LAMP環境構築

LAMP環境が構築できました。最後に振り返っておきましょう。

CentOS(Linux)

cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)

Apache

httpd -v
Server version: Apache/2.4.6 (CentOS)

MySQL

mysqld --version
mysqld  Ver 5.7.17 for Linux on x86_64 (MySQL Community Server (GPL))

PHP

php -v
PHP 7.0.14 (cli) (built: Dec  7 2016 10:15:15) ( NTS )

作業中にログインできなくなったら…

VSPコンソールからログインして問題の箇所を修正しましょう。

https://vpsportal.gmocloud.com/vpsconsole

gmo_vps_lamp4

真っ黒な画面ですが、何かしらキーボードで入力するとログイン画面を表示してくれるはずです。