概要
今回はOracle Cloudを使用して無料でWordPressサーバを構築します。
Oracle CloudのArmは4CPU, 24GBまで無料でインスタンスが作れますので、これを利用させていただいて作ろうと思います。無料ですがハッキリ言ってとても快適な環境ができあがります。
実際に本ブログサーバは3CPU, 18GBで構築しております。オーバースペック過ぎ・・・。(;´∀`)
では早速始めましょう。
インスタンスを作成する(OracleCloud)
- Oracle Cloudであらかじめアカウントを作成してください。
OracleCloudアカウント作成について参考になるURLを張らせていただきます。
- Oracle Cloudのコンソールに入ったらComputer→Instancesを選択し、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を張らせていただきます。
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
インストール実行をクリックします。
必要情報を入力します。
ログインをクリックします。
以上で終了です。お疲れさまでした。
コメント