OCI Ubuntu22.04 Nginx+MariaDB+MyDnsでWordPress構築する 完全無料

サーバ関連

概要

今回はOracle Cloudを使用して無料でWordPressサーバを構築します。

Oracle CloudのArmは4CPU, 24GBまで無料でインスタンスが作れますので、これを利用させていただいて作ろうと思います。無料ですがハッキリ言ってとても快適な環境ができあがります。

実際に本ブログサーバは3CPU, 18GBで構築しております。オーバースペック過ぎ・・・。(;´∀`)

では早速始めましょう。

インスタンスを作成する(OracleCloud)

  • Oracle Cloudであらかじめアカウントを作成してください。

OracleCloudアカウント作成について参考になるURLを張らせていただきます。

Oracle Cloudでarm64のインスタンスを作ってみた

  • Oracle Cloudのコンソールに入ったらComputerInstancesを選択し、Create compute instanceの画面へ進んでください。

Image:Canonical Ubuntu 22.04

Shape:A1.Flex 3core, 18GB

coreについては1core、memoryについては4GBでも十分運用可能です。

またcpu, memoryについては後で変更可能です。

秘密鍵、公開鍵を保存します。

作成するとInstancesに作成したinstanceが表示されます。

PublicIPが表示されるのでメモしておきます。

hostname変更、パッケージ更新

①SSHで接続します。

ssh ubuntu@xxx.xxx.xxx.xxx -i xxxx.key

※xxx.xxx.xxx.xxxは Public IP

※xxxx.keyは秘密鍵のファイル名

②hostnameを変更します。

sudo vim /etc/hostname

③hostsを変更します。

sudo /etc/hosts

④アップデートとcurl, wget, unzip インストールします。

sudo apt update
sudo apt upgrade
sudo apt install curl git wget unzip -y

Nginxインストール

①nginxをインストールします。

sudo apt install nginx

②80(HTTP), 443(HTTPS)のポートを開けます。

sudo vim /etc/iptables/rules.v4

以下を追記します。追加場所は22(SSH)の記述の下。

-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

変更したルールを適用します。

sudo iptables-restore < /etc/iptables/rules.v4

http://PublicIP にアクセスしnginxのデフォルトページが表示されることを確認します。

ドメインを設定(Mydns)

MyDNS.JPでアカウントを登録しドメインを取得してください。

参考になりそうなURLを張らせていただきます。

MyDNS.JPで使う独自ドメインを設定する。

http://ドメイン にアクセスしnginxのデフォルトページが表示されることを確認します。

Https化(Lets’Encript)

平文ではフォームに入力した内容が暗号化されないので危険です。

HTTPS化しましょう。

①certbotのインストール

sudo apt install certbot python3-certbot-nginx

②certbot実行

sudo certbot

以下のようにメールアドレス等が質問されるので、入力します。

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
 (Enter 'c' to cancel): メールアドレスを入力する

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
You must agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y  

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N
Account registered.

③ここまで無事完了したら、https://ドメイン にアクセスしnginxのデフォルトページが表示されることを確認します。

MariaDBインストール

①WordPressに必要なDB(MariaDB)をインストールします。

sudo apt install -y mariadb-server mariadb-client
sudo systemctl start mariadb
sudo systemctl enable mariadb

②WordPress用のDB、DBユーザを作成する

sudo mysql -u root -p

MariaDB [(none)]> CREATE DATABASE wordpress;
MariaDB [(none)]> CREATE USER 'wordpress' IDENTIFIED BY 'password';
GRANT ALL ON wordpress.* TO 'wordpress' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT
  • DATABASE:wordpress
  • USER:wordpress
  • PASSWORD:password

PHPインストール

WordPressのプログラムはPHPのため、PHPの実行環境を構築します。

①php関連ファイルインストール

sudo apt install -y  php-dom php-simplexml php-ssh2 php-xml php-xmlreader php-curl php-exif php-ftp php-gd php-iconv php-imagick php-json php-mbstring php-posix php-sockets php-tokenizer php-fpm php-mysql php-gmp php-intl php-cli

②PHP.iniの修正

sudo vim /etc/php/\*/fpm/php.ini
upload_max_filesize = 100M←変更
memory_limit = 256M←変更
max_execution_time = 360 ←変更
date.timezone = Asia/Tokyo←変更

③phpサービス 再起動

sudo systemctl restart php*-fpm.service

④Nginx 設定ファイルでPHPを動作可能にします。

sudo vim /etc/nginx/sites-available/default
server {
        listen 80 default_server;
        listen [::]:80 default_server;
        root /var/www/html;
        index index.html index.htm index.nginx-debian.html;
        server_name _;
        location / {
                try_files $uri $uri/ =404;
        }
}

server {
    server_name techlog.mydns.jp; # managed by Certbot
    root /var/www/html/wordpress;
    index  index.php index.html index.htm;
    access_log /var/log/nginx/wpress_access.log;
    error_log /var/log/nginx/wpress_error.log;
    client_max_body_size 100M;
    location ~ \.php$ {
         include snippets/fastcgi-php.conf;
         fastcgi_pass unix:/var/run/php/php-fpm.sock;
         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
         include fastcgi_params;
    }
    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/techlog.mydns.jp/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/techlog.mydns.jp/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
    if ($host = techlog.mydns.jp) {
        return 301 https://$host$request_uri;
    } # managed by Certbot
        listen 80 ;
        listen [::]:80 ;
    server_name techlog.mydns.jp;
    return 404; # managed by Certbot
}

↑↑↑↑ 

追加したドメインが記述されているserverディレクティブの

  • root, index, access_log, error_log, client_max_body_size, location

の箇所を変更します。

WordPressインストール

wordpressモジュールを取得し、展開します。

cd /var/www/html
sudo wget https://ja.wordpress.org/latest-ja.zip
sudo unzip latest-ja.zip
sudo chown -R www-data:www-data /var/www/html/wordpress/
sudo chmod -R 755 /var/www/html/wordpress/

データベース名、ユーザ名、パスワードを指定し、送信をクリックします。

  • DATABASE:wordpress
  • USER:wordpress
  • PASSWORD:password

インストール実行をクリックします。

必要情報を入力します。

ログインをクリックします。

以上で終了です。お疲れさまでした。

コメント