Ubuntu 18.04LTSでのLEMPスタック構築:Nginx、MariaDB、PHP 7.1完全ガイド
Ubuntu 18.04LTSでのLEMPスタック構築:Nginx、MariaDB、PHP 7.1完全ガイド
🎯 概要
Ubuntu 18.04LTSでLEMPスタックを素早くインストールする方法
ワンクリックインストールスクリプト
#!/bin/bash
# LEMPスタック自動インストールスクリプト
# Nginxインストール
sudo apt update
sudo apt install -y nginx
sudo systemctl start nginx.service
sudo systemctl enable nginx.service
# MariaDBインストール
sudo apt-get install -y mariadb-server mariadb-client
sudo systemctl start mysql.service
sudo systemctl enable mysql.service
# PHP 7.1インストール
sudo apt-get install -y software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install -y php7.1 php7.1-fpm php7.1-mysql php7.1-common php7.1-curl php7.1-xml php7.1-zip php7.1-gd php7.1-mbstring
# PHP-FPM開始
sudo systemctl start php7.1-fpm
sudo systemctl enable php7.1-fpm
コア設定ファイル
# /etc/nginx/sites-available/default
server {
listen 80;
listen [::]:80;
root /var/www/html;
index index.php index.html index.htm;
server_name _;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
}
}
即座テスト方法
# インストール確認
sudo nginx -t
sudo systemctl status nginx
sudo systemctl status mysql
sudo systemctl status php7.1-fpm
# PHP情報ページ作成
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
📚 詳細説明
背景と必要性
LEMPスタックとは?
- Linux:オペレーティングシステム(Ubuntu 18.04LTS)
- Enginx:ウェブサーバー(Apacheの代わりに使用)
- MariaDB:データベース(MySQL互換)
- PHP:サーバーサイドスクリプト言語
なぜこの組み合わせを選ぶのか?
- パフォーマンス:NginxはApacheよりメモリ使用量が少なく、同時接続処理能力に優れている
- 安定性:MariaDBはMySQLの完全な代替として、より良いパフォーマンスとセキュリティを提供
- 互換性:PHP 7.1は多くのCMSやフレームワークで安定してサポートされている
ステップバイステップのインストール過程
1. システム準備
# パッケージリスト更新
sudo apt update
sudo apt upgrade -y
# 必須パッケージインストール
sudo apt install -y curl wget software-properties-common
2. Nginxインストールと設定
# Nginxインストール
sudo apt install -y nginx
# サービス管理
sudo systemctl start nginx.service
sudo systemctl enable nginx.service
# ファイアウォール設定
sudo ufw allow 'Nginx Full'
Nginx基本設定最適化:
# /etc/nginx/nginx.conf 主要設定
worker_processes auto;
worker_connections 1024;
# Gzip圧縮有効化
gzip on;
gzip_types text/plain application/json application/javascript text/css;
# セキュリティヘッダー追加
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
3. MariaDBインストールとセキュリティ設定
# MariaDBインストール
sudo apt-get install -y mariadb-server mariadb-client
# サービス開始
sudo systemctl start mysql.service
sudo systemctl enable mysql.service
# セキュリティ設定(対話式)
sudo mysql_secure_installation
自動化されたMariaDBセキュリティ設定:
# 非対話式セキュリティ設定
sudo mysql -e "UPDATE mysql.user SET Password = PASSWORD('your_password') WHERE User = 'root'"
sudo mysql -e "DROP DATABASE IF EXISTS test"
sudo mysql -e "DELETE FROM mysql.user WHERE User=''"
sudo mysql -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1')"
sudo mysql -e "FLUSH PRIVILEGES"
4. PHP 7.1インストールと最適化
# Ondrej PPA追加(PHP 7.1サポート)
sudo add-apt-repository ppa:ondrej/php
sudo apt update
# PHP 7.1と必須エクステンションインストール
sudo apt install -y php7.1 php7.1-fpm php7.1-mysql php7.1-common \
php7.1-curl php7.1-xml php7.1-zip php7.1-gd php7.1-mbstring \
php7.1-json php7.1-bz2 php7.1-intl php7.1-readline
PHP設定最適化:
# /etc/php/7.1/fpm/php.ini 主要設定
memory_limit = 256M
upload_max_filesize = 100M
post_max_size = 100M
max_execution_time = 360
max_input_vars = 3000
allow_url_fopen = On
# セキュリティ設定
expose_php = Off
display_errors = Off
log_errors = On
実用的な活用事例
マルチサイトホスティング設定
# /etc/nginx/sites-available/multisite
server {
listen 80;
server_name site1.com www.site1.com;
root /var/www/site1;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
}
}
server {
listen 80;
server_name site2.com www.site2.com;
root /var/www/site2;
# 同じPHP設定適用
include /etc/nginx/snippets/php-handler.conf;
}
データベースユーザーと権限設定
-- 各サイト別DBユーザー作成
CREATE DATABASE site1_db;
CREATE USER 'site1_user'@'localhost' IDENTIFIED BY 'secure_password';
GRANT ALL PRIVILEGES ON site1_db.* TO 'site1_user'@'localhost';
CREATE DATABASE site2_db;
CREATE USER 'site2_user'@'localhost' IDENTIFIED BY 'secure_password';
GRANT ALL PRIVILEGES ON site2_db.* TO 'site2_user'@'localhost';
FLUSH PRIVILEGES;
自動化スクリプト完成版
#!/bin/bash
# complete-lemp-setup.sh
# カラー定義
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
echo -e "${GREEN}LEMPスタックインストールを開始します...${NC}"
# システム更新
echo -e "${YELLOW}システム更新中...${NC}"
sudo apt update && sudo apt upgrade -y
# Nginxインストール
echo -e "${YELLOW}Nginxインストール中...${NC}"
sudo apt install -y nginx
sudo systemctl start nginx.service
sudo systemctl enable nginx.service
# MariaDBインストール
echo -e "${YELLOW}MariaDBインストール中...${NC}"
sudo apt-get install -y mariadb-server mariadb-client
sudo systemctl start mysql.service
sudo systemctl enable mysql.service
# PHP 7.1インストール
echo -e "${YELLOW}PHP 7.1インストール中...${NC}"
sudo apt-get install -y software-properties-common
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
sudo apt install -y php7.1 php7.1-fpm php7.1-mysql php7.1-common \
php7.1-curl php7.1-xml php7.1-zip php7.1-gd php7.1-mbstring
# PHP-FPM開始
sudo systemctl start php7.1-fpm
sudo systemctl enable php7.1-fpm
# Nginx設定
sudo tee /etc/nginx/sites-available/default > /dev/null <<EOF
server {
listen 80;
listen [::]:80;
root /var/www/html;
index index.php index.html index.htm;
server_name _;
location / {
try_files \$uri \$uri/ =404;
}
location ~ \.php\$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
}
}
EOF
# サービス再起動
sudo systemctl restart nginx.service
sudo systemctl restart php7.1-fpm
# テストファイル作成
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
echo -e "${GREEN}LEMPスタックインストールが完了しました!${NC}"
echo -e "${GREEN}ブラウザでhttp://your-server-ip/info.phpにアクセスして確認してください。${NC}"
トラブルシューティングと最適化
一般的なエラー解決
# Nginx設定テスト
sudo nginx -t
# PHP-FPMソケット確認
sudo ls -la /var/run/php/
# ログ確認
sudo tail -f /var/log/nginx/error.log
sudo tail -f /var/log/php7.1-fpm.log
パフォーマンス最適化
# PHP-FPMプール設定最適化
sudo nano /etc/php/7.1/fpm/pool.d/www.conf
# 主要設定値
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 35
結論
Ubuntu 18.04LTSでのLEMPスタックインストールは、ウェブ開発環境構築の基盤となる重要なプロセスです。このガイドを通じて、Nginxの高いパフォーマンス、MariaDBの安定性、PHP 7.1の互換性をすべて活用できる堅牢なウェブサーバー環境を構築できます。
次のステップとして:
- SSL/TLS証明書設定(Let’s Encrypt)
- 自動バックアップシステム構築
- モニタリングツールインストール(Netdata、Grafana)
- キャッシングシステム導入(Redis、Memcached)
この基盤の上で、WordPress、Laravel、またはカスタムPHPアプリケーションを安定して運用できます。