VPSを使ったLEMP開発環境の構築を超高速・超簡単に行う方法を紹介します。どん兵衛を作る暇すら与えずに、かつ失敗なく作れるので、カお試しあれ。
今年もアドカレの季節ですね。ConoHa Advent Calendar 2021 5日目です。
昨日は@Tapo0825さんが**このはちゃん系のお話**をなさっているので是非ご覧下さい!
割と技術系全振りで、真面目な内容なので面白さには期待しないでください…(笑)
LEMPとは
LEMP(レンプ)とは、OSのLinux・WebサーバであるNginX・データベースであるMySQL・スクリプト言語であるPerl・PHP・Python等からなるシステム群の総称です。
LAMPのNginXバージョンみたいなものです。
LAMPではApache HTTP ServerをWebサーバーに利用していますが、今年遂にNginxがApacheのシェアを抜いて1位になりました。やはりApacheよりもより多くのアクセスを捌ける速度の優位性という点がポイントですね。
そんな近年の風潮もありますのでこのはちゃんでLEMP環境を作ってみましょう。Dockerでも良いけど…w
※あ、ちなみにLEMPの他の「L」「M」「P」は変わりないです。なんでLNMPじゃないかって?言いにくいからだよ!!!(Maybe...)
ConoHa VPSについて
ConoHa VPSはGMOインターネットが運営するVPSを提供するIaaSです。
ConoHaの良い所
私が2年ほど使っていて感じたConoHa VPSの良いところをざっと紹介します。
- コンビニ決済ができる=クレカを持たない学生でも利用可
- 価格の割にストレージの容量が多い(SSD)
- イメージテンプレートがあり任意のOS・システムが設定不要で構築できる
Ubuntu等の有名Linuxディストリビューションだけでなく、超高速WP実行環境のKUSANAGIなどが非常にスムーズに作ることができます。
特に凄いのはLEMPが最初から入ってるUbuntu環境をセットアップできる点です。
普通にUbuntuをインストールした後にNginXとPHPとMySQL入れればええやん…と思うかも知れませんがNginXとPHPのセットアップがちょっと面倒なんですよね。
nginxは高速な代わりに機能は豊富ではないので、PHPを動作させるにはphp-fpmというFastCGIのインターフェースを経由しないといけないためその設定が必要です。ですがこのはちゃんには予めLEMPを構成済みのイメージが用意されてるのでこれを使うだけで完了です。
また、他社のVPSプラント比べてSSDの容量が多いことも良い点です。
某さくらVPSだとSSD25GBで¥650/月ですが、ConoHaメモリ1GBプランはSSD 100GBで¥880/月ですのでWordPressなどの容量を食うシステムをホスティングする場合、相当コスパがいいですよ!
環境構築を実践
早速サーバーを構築していきます。
ドメイン登録+DNS設定
ドメイン関連のお話は今回の本題ではないので割愛。適宜コンパネのDNS設定でをいじって@のaレコードを次で作成するサーバーのIPアドレスに向けてください…
LEMPを起ち上げ&OpenResty設定
では3分で作りましょう。のその前に…
LEMPを導入する前に注意しておきたいポイントは普通にNginxを積んでいるわけでなく、OpenRestyがインストールされるという点です。
NginxにLua処理系の統合等の拡張を施したOpenRestyを使用するLinux+Nginx(OpenResty)+MariaDB+PHP構成。
Luaとか久しぶり聞いたな…と思いつつ注意しましょう。まぁ中身はまんまnginxです。余談ですがちょうど先週にLEMPテンプレートが更新されてUbuntuに切り替わりました。
ConoHa VPSのコントロールパネルにアクセス→[サーバー]→[サーバー追加]
お好きなSSDやメモリ・コア数を選んでアプリケーションタブのLEMP(PHP)を選択してサーバーを作成します。512MBプランでは東京リージョンのみ利用可能です。
あとはタイトル通り3分ほど構築待ちをするだけで完了です。
早速サーバーにSSH接続すると、NginXのルートディレクトリとMariaDBの初期rootパスワードが表示されますのでメモっておきましょう。
※上記インスタンスは削除済みなのでIPとかPwdは隠しません。
既にデフォルトでphpinfo();
のファイルが置いてありFastCGI系の動作やモジュールの確認ができます。
VirtualHost設定
続いてNginxでドメインやルートディレクトリなどのVirtualHostの項目を設定します。プレーン環境からインストールした場合とディレクトリや起動方法が異なりますのでご注意くださいい。
LEMPイメージインストールの場合のNginxの重要な事項
■再起動方法
service openresty restart
■nginxのファイル
/usr/local/openresty/nginx
■nginxの設定ファイル群
/usr/local/openresty/nginx/conf
そして、Virtualhostはデフォルトの設定ファイルnginx.conf
が用意されてあり、PHP設定も記載済みなのでこれを改変します。バックアップを忘れずに!!!
以下全文を紹介。基本は#
のコメントアウトを外すだけですので記述量はほぼ無いです。
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
#server_name localhost;
#ドメイン名を入力
server_name twnow.tokyo;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
#ルートディレクトリを指定!
root /var/www;
index index.php index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
# ここはコメントアウトしなくても別にいいよ
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
# PHPを動作させる設定。ConoHaの場合以下の設定じゃないと使えないよ!
location ~ \.php$ {
#ルートディレクトリを指定
root /var/www;
#以下コメントアウトするだけ!
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
}
保存したらservice openresty restart
で再起動。
適当にルートディレクトリ配下に<?php echo $_SERVER['SERVER_NAME']; ?>
的なプログラムを配置して、ドメイン名が表示されていたらOK
SSL設定の準備としてファイヤーウォールの433ポートを開放しましょう
sudo ufw allow 'Nginx HTTP'
sudo ufw reload
SSL設定
最後にドメインのSSL設定をLet's Encryptで行います。以下を順に入力
sudo apt install certbot
certbot certonly
ウィザード形式で勝手に作ってくれます。最初の選択は2(webroot)を指定、あとは文章を読もう。
How would you like to authenticate with the ACME CA?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Spin up a temporary webserver (standalone)
2: Place files in webroot directory (webroot)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
最後にfullchain.pemとprivate.pemの保存場所を教えてくれるのでメモっておきましょう
最後にさっきVirtualhostで設定したnginx.conf
のhttp {}内に以下server {}文字を追記して保存してください。内容は適宜変更。
# HTTPS server
#
server {
listen 443 ssl;
server_name twnow.tokyo;
root /var/www;
ssl_certificate /etc/letsencrypt/live/twnow.tokyo/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/twnow.tokyo/privkey.pem;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root /var/www;
index index.php index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www;
}
location ~ \.php$ {
root /var/www;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
}
}
これでLEMP環境+ドメインホスト設定が完了です!nginx系には.htaccessみたいな概念もないのでWPホストする等の際は各自お調べください。
以上割と真面目にLEMP環境の構築方法を紹介しました。テンプレートが豊富なので是非お試しあれ。あとConoHa VPSコンパネの背景が変わりました~