Oracle CloudにWordPressを構築してみた

はじめに

これまでブログをBloggerに書いていたのですが、WordPressに移行しました。
ドメイン以外は無料で運用したかったので、Oracle Cloudの無料のVPS上に構築しました。

VPSの作成

Oracle CloudにVPS立てるまでの手順はここを参考にしました。

パッケージの更新

sudo dnf -y update

Nginxのインストール

sudo dnf -y install nginx
sudo systemctl enable nginx
sudo systemctl start nginx

ポートの開放

sudo firewall-cmd --add-service=http --zone=public
sudo firewall-cmd --add-service=https --zone=public
sudo firewall-cmd --runtime-to-permanent
sudo firewall-cmd --reload

SELinuxの無効化

sudo vi /etc/selinux/config
SELINUX=disabled

再起動

sudo reboot

/etc/nginx/nginx.conf の編集

以下をコメントアウトします。

server {
    listen       80 default_server;
    listen       [::]:80 default_server;
    server_name  _;
    root         /usr/share/nginx/html;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location / {
    }

    error_page 404 /404.html;
        location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }
}

Let’s Encryptの設定

certbotのインストール

sudo dnf -y install epel-release
sudo dnf -y install certbot

Unable to find a match: epel-release が表示された場合は、以下を実行します。

sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y

confの作成

sudo mkdir -p /var/www/certbot
sudo vi /etc/nginx/conf.d/wordpress.conf

/etc/nginx/conf.d/wordpress.conf に以下を設定します。

server {
	listen 80;
	server_name _;

	location / {
		return 444;
	}

	location ^~/.well-known {
		alias /var/www/certbot/.well-known;
	}
}

Nginxの再起動

sudo systemctl restart nginx

証明書の発行

sudo certbot certonly --webroot --webroot-path /var/www/wordpress --domain ababa.cloud --email some@example.com --non-interactive --agree-tos --no-eff-email

自動更新の設定

sudo systemctl enable --now certbot-renew.timer
sudo vi /etc/letsencrypt/renewal-hooks/deploy/reload.sh

/etc/letsencrypt/renewal-hooks/deploy/reload.sh に以下を設定します。

#!/bin/bash

systemctl reload nginx

実行権限の付与

sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload.sh

PHP

インストール

sudo dnf install php php-fpm php-mysqlnd php-json php-mbstring php-gd

実行ユーザーの変更

sudo vi /etc/php-fpm.d/www.conf

/etc/php-fpm.d/www.conf を編集します。

user = apache
group = apache
↓
user = nginx
group = nginx

;listen.owner = nobody
;listen.group = nobody
;listen.mode = 0660
↓
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

セッションを保存しておくディレクトリの所有者変更

sudo chown -R nginx:nginx /var/lib/php/session
sudo systemctl restart php-fpm

Maria DB

インストール

sudo dnf -y install mariadb mariadb-server
sudo systemctl start mariadb
sudo systemctl enable mariadb

rootユーザーパスワード設定

sudo mysql -u root
update mysql.user set password=password('my-db-password') where user = 'my-user';
flush privileges;
exit;

ユーザーの作成

mysql -u my-user -p

データベースの作成

create database wp_database;
grant all privileges on wp_database.* to wp_user@localhost identified by 'my-wordpress-password';
exit;

WordPressのインストール

curl -O https://ja.wordpress.org/latest-ja.tar.gz
sudo tar -xzvf latest-ja.tar.gz -C /var/www
sudo chown -R nginx:nginx /var/www/wordpress

/etc/nginx/conf.d/wordpress.conf に以下を設定します。

server {
    listen 443 ssl;
    server_name ababa.cloud;
    ssl on;

    index index.php index.html;
    root /var/www/wordpress;

    ssl_certificate /etc/letsencrypt/live/ababa.cloud/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/ababa.cloud/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/ababa.cloud/fullchain.pem;

    location ~* /wp-config.php {
        deny all;
    }

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        include fastcgi.conf;
        fastcgi_pass   unix:/run/php-fpm/www.sock;
    }
}
sudo systemctl restart nginx

未分類

Posted by ababa