【Conoha】初めてVPSを契約してCentOS7 + Nginx + PHP7の環境を作成してみた

2017年5月27日

今まではレンタルサーバーを使用していたのですが、レンタルサーバーではPHPの使用できるモジュールに制限があったり、共有サーバーのため動作が重かったり不便な点が幾つかありました。
そこでConohaのVPS(512MB)を契約してみることにしました。

現在使用しているレンタルサーバーが「さくらレンタルサーバー」なので、初めは「さくらのVPS」を使用するつもりだったのですが、「Conoha」と「さくら」比べると「Conoha」が以下の3点で優れていたので、Conohaを使用することにしました。

  • 初期費用が無料
  • 途中でプラン変更が可能 (512MBプランは不可)
  • 少しだけ安い

VPSを触るのが初めてだったので、何度もエラーを起こしては初期化を繰り返し、なんとかPHPとNginxが動作するとこまで来ましたので、方法をメモして置こうと思います。

0.まずConohaでVPSを一つレンタルします。今回は512MBプランにしました。

※メールアドレス、電話番号、クレジットカードもしくはConohaカードが必要です。
※以下の紹介URLから登録すると最初から1000円分のクーポンが貰えます!
友達紹介コードをお持ちでない方はぜひ使ってみてください。
  • https://www.conoha.jp/referral/?token=YD8PBwETtam6jcraZG5zwE8Nzwid4ysD74hhd5pOuacjC6SJw8Q-FXW
  • ※必須ではないのですが、以下のサイトでサーバーのIPアドレスをチェックしておくことをおすすめします。一つでもNGがあった場合、サーバーから送信されるメールが拒否されたり、セキュリティソフトによってサイトへのアクセスがブロックされてしまう場合があります。
    Conohaの場合はVPSを作成する度にIPアドレスが変わるので、NGがあってもVPSを削除して新規作成すればIPアドレスを変更できます。(作り直す度に1時間分の料金が発生します)
    
  • http://www.dnsbl.info/dnsbl-database-check.php
  • http://whatismyipaddress.com/blacklist-check
  • 1. SSHクライアントとしてMobaXtermを使用します。
    公式サイトからインストーラーをダウンロードしてインストールします。 → http://mobaxterm.mobatek.net/
    (SFTPがサイドバーに表示されて便利そうだったのでこのクライアントにしました!)

    2.まずインストール済みのパッケージをアップデートします。

    yum update

    3.システムの言語設定を確認します。

    localectl status

    4.英語設定であった場合、以下のコマンドで日本語に変更します。

    localectl set-locale LANG=ja_JP.utf8
    ※以下のコマンドで利用可能なロケールを確認できます。
    localectl list-locales | grep -i ja

    5.Rootユーザーのままだと危険なので、新しく作業用ユーザーを作成します。

    useradd takumi9942

    6.作成したユーザーにパスワードを設定します。

    passwd takumi9942

    7.作成したユーザーが管理権限コマンド(sudo)を実行できるようにwheelグループに入れます。

    usermod -G wheel takumi9942

    8.一旦ログアウトし、先程作成したユーザー(takumi9942)でログインします

    logout

    ※以下の殆どのコマンドで権限が必要なので、はじめに以下のコマンドでsudo権限を付与する必要があります。※

    sudo -s

    9.公開鍵生成のため、PuTTYをダウンロードします。→ http://hp.vector.co.jp/authors/VA024651/PuTTYkj.html

    10.「putty-0.67-jp20160306.zip」を解凍し、「puttygen.exe」を起動します。

    11.Generateを選択し、ゲージがいっぱいになるまでゲージの下の空欄上でマウスカーソルを動かし続けます。

    12.「Key passphrase」と「Confirm passphrase」に任意のパスワードを入力し、「Save private key」を押して秘密鍵を保存します。

    13.「Public key for pasting into OpenSSH authorized_keys file:」の下の文字列をすべてコピーし、メモ帳に貼り付け「authorized_keys」という名前で保存します。

    14.MobaXtermに戻って、作成したユーザーでログインします。

    15.ホームフォルダに「.ssh」ディレクトリを作成します。

    mkdir .ssh

    16.作成した「.ssh」ディレクトリのパーミッションを変更します。

    chmod 700 .ssh

    17.画面左のSFTPを使用して、「.ssh」ディレクトリの中に先程作成した「authorized_keys」をコピーします。
    (「authorized_keys.txt」となっている場合は「authorized_keys」に名前を変更します)

    18.「authorized_keys」のパーミッションを変更します。

    chmod 600 .ssh/authorized_keys

    19.セキュリティ強化のため、SSHのポート番号を変更、Rootログイン禁止、パスワード認証禁止を行います。

    vim /etc/ssh/sshd_config

    Vimで開いた設定ファイルを以下のように変更します。
    Vimの使い方はこちらのサイトで確認してください → http://dotinstall.com/lessons/basic_vim

    /Portを任意の数字に
    /PasswordAuthをnoに
    /PermitRootをnoに

    20.sshdを再起動します。

    systemctl restart sshd

    21.ファイアウォールの設定で先程設定したポート番号を許可します。

    cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh.xml
    vim /etc/firewalld/services/ssh.xml
    

    22.ついでにファイアウォールで「http」と「https」を許可しておきます。

    firewall-cmd --add-service=http --zone=public --permanent
    firewall-cmd --add-service=https --zone=public --permanent
    

    23.ファイアウォールを再起動して設定を反映させます。

    firewall-cmd --reload
    ※ファイアウォールが正しく設定されているか以下のコマンドで確認できます
    firewall-cmd --list-all
    

    24.現在のSSHタブを残したまま、新しくタブを開き鍵認証でログインしてみましょう。MobaXtermの「Session Settings」→「Advances SSH settings」→「Use private key」で秘密鍵を設定し、ユーザー名を入れます。

    25.新しいタブでログインできれば、鍵認証は正しく設定されています。

    ※タイムアウトする場合はファイアウォールの設定を確認しましょう。
    ※key refusedと出る場合にはSSHあるいはauthorized_keysの設定が間違っています。

    26.Nginxをインストールします。

    yum install nginx
    nginx -v

    27.Nginxの設定を変更し、Nginxがサーバー起動時に自動的に実行されるように設定します。

    #nginxの設定を変更する場合は以下のコマンドで設定
    vim /etc/nginx/nginx.conf
    #nginxの設定が正しく行われているか確認
    nginx -t
    #nginxの公開ディレクトリの権限付与
    chown -R takumi9942:takumi9942 /usr/share/nginx/html/
    #nginxの自動起動を有効化。
    systemctl enable nginx
    #nginxを起動
    systemctl restart nginx

    28.PHP7.1をインストールするには外部レポジトリを入れる必要があるのですが、その前にレポジトリの優先順位を指定しておきます。

    #優先順位を決定するパッケージのインストール
    yum install yum-priorities
    #標準レポジトリの優先順位を設定
    vim /etc/yum.repos.d/CentOS-Base.repo
    
    #以下の内容を追記する
    [base]
    priority=1
    exclude=php*
     
    [updates]
    priority=1
    exclude=php*
     
    [extras]
    priority=1
    exclude=php*
    
    #epelレポジトリのインストール
    yum install epel-release
    #epelレポジトリの優先順位を設定
    vim /etc/yum.repos.d/epel.repo
    
    #以下の内容を追記する
    [epel]
    priority=2
    exclude=php*
    
    #remiレポジトリのインストール
    yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
    #remiレポジトリの優先順位を設定
    vim /etc/yum.repos.d/remi.repo
    
    #以下の内容を追記する
    [remi]
    priority=2
    
    #remiレポジトリの優先順位を設定
    vim /etc/yum.repos.d/remi-php71.repo
    
    #以下の内容を追記する
    [remi-php71]
    enabled=1
    
    #念のためyumのキャッシュを削除します
    yum clean all
    

    29.次にPHP7.1をインストールします。

    #PHP7.1といろいろなモジュールをインストール
    yum install php php-cli php-common php-devel php-fpm php-gd php-mbstring php-pdo php-pear php-pecl-apcu php-soap php-xml php-xmlrpc php-mcrypt
    #PHPの起動
    systemctl start php-fpm.service
    #PHPの自動起動有効化
    systemctl enable php-fpm
    #PHPのバージョン確認
    php -v
    #/etc/php-fpm.d/www.conf内のuserとgroupをnginxに変更
    vim /etc/php-fpm.d/www.conf

    これですべての作業は終了です。
    ブラウザでVPSのIPアドレスへアクセスしてみましょう。

    VPSってPHP動かすだけでも一苦労ですね・・・(;´д`)トホホ…

    Conoha

    Posted by takumi9942