Skip to content

Instantly share code, notes, and snippets.

@techfish-11
Last active September 7, 2025 18:54
Show Gist options
  • Select an option

  • Save techfish-11/3eb53c10752e79e06ed3f003e607923e to your computer and use it in GitHub Desktop.

Select an option

Save techfish-11/3eb53c10752e79e06ed3f003e607923e to your computer and use it in GitHub Desktop.
俺用WordPressインストールスクリプト
#!/bin/bash
# WordPress日本語版 + Nginx + MySQL/MariaDBをUbuntu Serverにプロダクションレディでセットアップするスクリプト
set -e
apt update && apt install curl
# --- 設定値(必要に応じて編集) ---
DB_NAME="wordpress"
DB_USER="wpuser"
DB_PASS="secure_password_123"
WP_DOMAIN="example.com"
WP_DIR="/var/www/${WP_DOMAIN}"
WP_LOCALE="ja"
WP_VERSION="$(curl -s https://api.wordpress.org/core/version-check/1.7/ | grep -oP '(?<="version":")[^"]+' | head -1)"
# ----------------------------------
echo "==== パッケージアップデート ===="
sudo apt update && sudo apt upgrade -y
echo "==== 必要なパッケージのインストール ===="
sudo apt install -y nginx mariadb-server php-fpm php-mysql php-xml php-gd php-curl php-mbstring php-zip php-intl php-xmlrpc unzip wget curl
echo "==== MySQL セキュリティ設定とDB作成 ===="
sudo systemctl enable mariadb
sudo systemctl start mariadb
# mysql_secure_installation 相当の自動化
sudo mysql -e "DELETE FROM mysql.user WHERE User='';"
sudo mysql -e "DROP DATABASE IF EXISTS test;"
sudo mysql -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';"
sudo mysql -e "FLUSH PRIVILEGES;"
# DB&ユーザー作成
sudo mysql -e "CREATE DATABASE IF NOT EXISTS ${DB_NAME} DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
sudo mysql -e "CREATE USER IF NOT EXISTS '${DB_USER}'@'localhost' IDENTIFIED BY '${DB_PASS}';"
sudo mysql -e "GRANT ALL PRIVILEGES ON ${DB_NAME}.* TO '${DB_USER}'@'localhost';"
sudo mysql -e "FLUSH PRIVILEGES;"
echo "==== WordPress日本語版のダウンロードと配置 ===="
sudo mkdir -p "${WP_DIR}"
sudo chown $USER:$USER "${WP_DIR}"
wget "https://ja.wordpress.org/latest-ja.zip" -O /tmp/wordpress-ja.zip
unzip -q /tmp/wordpress-ja.zip -d /tmp/
rsync -av /tmp/wordpress/ "${WP_DIR}/"
rm -rf /tmp/wordpress /tmp/wordpress-ja.zip
echo "==== wp-config.php の作成 ===="
cd "${WP_DIR}"
cp wp-config-sample.php wp-config.php
sed -i "s/database_name_here/${DB_NAME}/" wp-config.php
sed -i "s/username_here/${DB_USER}/" wp-config.php
sed -i "s/password_here/${DB_PASS}/" wp-config.php
# パーミッション設定
sudo chown -R www-data:www-data "${WP_DIR}"
sudo find "${WP_DIR}" -type d -exec chmod 750 {} \;
sudo find "${WP_DIR}" -type f -exec chmod 640 {} \;
echo "==== Nginxサーバーブロックの作成 ===="
NGINX_CONF="/etc/nginx/sites-available/${WP_DOMAIN}"
sudo tee "${NGINX_CONF}" > /dev/null <<EOF
server {
listen 80;
server_name ${WP_DOMAIN};
root ${WP_DIR};
index index.php index.html index.htm;
client_max_body_size 64M;
location / {
try_files \$uri \$uri/ /index.php?\$args;
}
location ~ \.php\$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php$(php -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')-fpm.sock;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|webp|ttf|woff|woff2|eot)\$ {
expires max;
log_not_found off;
}
location = /favicon.ico { log_not_found off; access_log off; }
location = /robots.txt { log_not_found off; access_log off; }
access_log /var/log/nginx/${WP_DOMAIN}_access.log;
error_log /var/log/nginx/${WP_DOMAIN}_error.log;
}
EOF
sudo ln -sf "${NGINX_CONF}" /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
echo "==== ファイアウォールの設定(UFW) ===="
sudo ufw allow 'Nginx Full'
echo "==== 完了 ===="
echo "WordPress日本語版のインストールが完了しました。"
echo "ブラウザで http://${WP_DOMAIN} にアクセスしてセットアップを続行してください。"
echo ""
echo "【備考】"
echo "- 管理者用のWordPressアカウントはWeb画面で作成してください。"
echo "- 本番運用時はSSL(Let's Encrypt等)の導入を推奨します。"
echo "- wp-config.phpやファイル権限は都度ご確認ください。"
@techfish-11
Copy link
Author

私の環境は

root@ubuntu:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 24.10
Release:        24.10
Codename:       oracular
root@ubuntu:~# 

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment