最初は以下のように値段の安いVPSを利用しようと思ったけど、
コロナの影響かNTT系列は登録だけ先にさせといてサーバの購入段階で「売り切れ」と表示されるセコイ手段を講じていた。
- WebARENA (Indigo)
- ServersMan@VPS
仕方ないので、さくらのVPSを利用。
これまでApacheしか使って来なかったけど、
いい機会なのでNginXを利用してみた。
※結果としては10日間、20時間以上はかかってしまった。。。
参考サイトはコチラ
https://loumo.jp/archives/21068NginxでWordPressを使う時の設定をまとめてみた
https://worklog.be/archives/3222Nginxでphpを動かす(PHPのユーザをNginxのユーザに変更)
https://qiita.com/exp/items/1839bbd09d3481fd92afNginx環境へWordPressをインストールする手順と注意点 パーマリンクに気を付ける
https://www.rem-system.com/nginx-wp-inst/NginxでSSLを設定する方法を基本から学ぶ
https://qiita.com/katsunory/items/97f5a4738863776fbaf4
Ubuntu 20.04でLet’s Encryptを使用してNginxを保護する方法
https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-20-04-ja
以下はコマンドのメモ書き。(抜け漏れモリモリ)
あとで清書する…可能性はすごく低いけど、コメントや質問などあればキレイにしたい。
■■■■■■■■■■■■■■■■■■■■
SSH有効化
■■■■■■■■■■■■■■■■■■■■
#TeraTermでパスを使ってログイン
#デフォルトユーザをSU権限に変更
sudo su
#色々アップデート
apt update -y
#一般ユーザーを追加
adduser tarou
#追加ユーザに管理者権限を付与
usermod -aG sudo tarou
#Teratermを切断して追加ユーザで再接続して管理者権限を得る
sudo su
#追加ユーザのホームディレクトリに移動
cd ~/
#追加ユーザのホームディレクトリ配下に.sshディレクトリ作成
mkdir ~/.ssh
#ファイル作成して公開鍵を入力
sudo vi ~/.ssh/authorized_keys
#コピーしてi>右クリ
#権限変更
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
#ssh設定ファイルのディレクトリに移動
cd /etc/ssh
#設定ファイルをバックアップ
cp /etc/ssh/sshd_config /etc/ssh/old.sshd_config
#設定ファイル編集
sudo vim /etc/ssh/sshd_config
#カーソルモード(Escを押す)で行数表示
:set number
#sshdがリッスンするポート番号の変更(15行目あたり)※サクラのVPSコンソールからパケットフィルタをONにしているならカスタム開放必須
port <22以外の任意のポート番号→今回は「2211」とした>
#rootでのログインを禁止(34行目あたり)
PermitRootLogin no
#公開鍵認証を有効化(39行目あたり)
PubkeyAuthentication yes
#パスワード認証を無効化(58行目あたり)
PasswordAuthentication no
#保存して編集終了
Esc
:wq
#sshdを再起動
sudo systemctl restart sshd
#ufwの設定確認
sudo ufw status
#以下のようにinactive(非活性)になっているハズ
# Status: inactive
#ファイアウォールufw(Uncomplicated FireWall)の利用可能アプリ一覧を確認
sudo ufw app list
#以下のような表示になるハズ
# Nginx Full
# Nginx HTTP
# Nginx HTTPS
# OpenSSH
#ufwにSSHを許可
sudo ufw allow ‘OpenSSH’
sudo ufw allow 2211
#ufwを有効化
sudo ufw enable
#ufwの設定再確認
sudo ufw status
#以下のような表示になるハズ
# To Action From
# – —— —-
# OpenSSH ALLOW Anywhere
# 2211 ALLOW Anywhere
# OpenSSH (v6) ALLOW Anywhere (v6)
# 2211 (v6) ALLOW Anywhere (v6)
#httpとhttpsのパケットを通過許可
sudo ufw allow http
sudo ufw allow https
#以下のような表示になるハズ
# To Action From
# – —— —-
# OpenSSH ALLOW Anywhere
# 2211 ALLOW Anywhere
# 80/tcp ALLOW Anywhere
# 443/tcp ALLOW Anywhere
# OpenSSH (v6) ALLOW Anywhere (v6)
# 2211 (v6) ALLOW Anywhere (v6)
# 80/tcp (v6) ALLOW Anywhere (v6)
# 443/tcp (v6) ALLOW Anywhere (v6)
#Teratermを切断して追加ユーザで再接続して秘密鍵でログイン出来たらOK
#■■■■■■■■■■■■■■■■■■■■
#Nginxのインストール
#■■■■■■■■■■■■■■■■■■■■
#Nginx のインストール
sudo apt install nginx -y
#◇ブラウザでサーバのIPにアクセスして「Welcome to nginx!」が表示されたらOK]
# 例:http://890.123.45.67/
#ドメインのルートディレクトリを作成
mkdir -p /var/www/tarou-blog.org/html
#$USER環境変数を使用してディレクトリの所有権を割り当てます。
sudo chown -R $USER:$USER /var/www/tarou-blog.org/html
#所有者には読み取り・書き込み・実行可能権限を、グループには読み取り・実行可能権限のみをそれぞれ付与
sudo chmod -R 755 /var/www/tarou-blog.org
#ドメインのルートディレクトリ配下にindex.htmlを作成
sudo vi /var/www/tarou-blog.org/html/index.html
/var/www/tarou-blog.org/html/index.html
#ドメインの設定ファイルを作成
sudo vim /etc/nginx/sites-available/[hoge.com]
sudo vim /etc/nginx/sites-available/tarou-blog.org
server {
listen 80;
listen [::]:80;
root /var/www/tarou-blog.org/html;
index index.html ;
server_name tarou-blog.org www.tarou-blog.org;
location / {
try_files $uri $uri/ =404;
}
}
#ディレクトリ『sites-enabled』配下に「tarou-blog.org」のシンボリックファイル設定
sudo ln -s /etc/nginx/sites-available/tarou-blog.org /etc/nginx/sites-enabled/
#サーバー名を追加することで発生する可能性があるハッシュバケットメモリの問題を回避するために、/etc/nginx/nginx.confファイル内で値を1か所調整→「#server_names_hash_bucket_size 64;」のシャープを削除
sudo vi /etc/nginx/nginx.conf
#Nginxファイルに構文エラーがないことをテストして確認
sudo nginx -t
#問題が無ければNginX再起動
sudo systemctl restart nginx
■■■■■■■■■■■■■■■■■■■■
PHP8.0のインストール
■■■■■■■■■■■■■■■■■■■■
#PPA(Personal Package Archives) リポジトリを有効化
sudo add-apt-repository ppa:ondrej/php
#キャッシュの更新(aptリポジトリを有効にした後でシステムのキャッシュを更新)
sudo apt update
#PHPのインストール
sudo apt install php8.0
#PHP関連モジュールのインストール
sudo apt install php8.0-gd php8.0-xml php8.0-soap php8.0-mbstring php8.0-mysql php8.0-fpm.sock php8.0-curl
#デフォルトのPHPバージョンを切り替え
sudo update-alternatives –config php
#以下のメッセージが表示されたらOK
#There is only one alternative in link group php (providing /usr/bin/php): /usr/bin/php8.0
#もしも「There are 2 choices for the alternative php (providing /usr/bin/php)」のようなメッセージが表示されたら→を参照(https://tutorialcrawler.com/ubuntu-debian/ubuntu20-04%E3%81%ABphp8%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/)
#ドメインのルートディレクトリにサンプルファイル「phpinfo.php」を作成
sudo vi /var/www/tarou-blog.org/html/phpinfo.php
#i+右クリックして以下を貼り付け
#「php8.0-fpm.sock」の位置を確認する為、ファイル「www.conf」を開く
sudo vi /etc/php/8.0/fpm/pool.d/www.conf
#「listen = /run/php/php8.0-fpm.sock」になっていた
#ドメインの設定ファイルをPHP用に編集(最初に記述していたlocationの中身を変更し、新たなlocationを増設)
sudo vim /etc/nginx/sites-available/tarou-blog.org
server {
listen 80;
listen [::]:80;
root /var/www/tarou-blog.org/html;
index index.php index.html; #PHPインストール後に追記その1
server_name tarou-blog.org www.tarou-blog.org;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
} #PHPインストール後に追記その2
}
#Nginxファイルに構文エラーがないことをテストして確認
sudo nginx -t
#問題が無ければNginX再起動
sudo systemctl restart nginx
#◇ブラウザでhttp://ドメイン/phpinfo.phpにアクセスし、青紫のPHP設定画面が表示されたらOK
# 例:http://tarou-blog.org/phpinfo.php
http://tarou-blog.org
#WoerPressのテーマアップロードで詰まったら変更すべし
# sudo vi /etc/php/8.0/fpm/php.ini
# post_max_size = 20M
# upload_max_filesize = 20M
#php.iniの中身を変更したら再起動
#systemctl restart php8.0-fpm.service
■■■■■■■■■■■■■■■■■■■■
MySQLのインストール
■■■■■■■■■■■■■■■■■■■■
#MySQLをインストール
sudo apt install mysql-server
#MySQLの各種設定を開始(対話型)→https://www.anchorworks.co.jp/blog/mysql_secure_installation%E3%81%AE%E5%AE%9F%E8%A1%8C/
sudo mysql_secure_installation
#MySQLモードに変更
sudo mysql
#rootユーザのPASSを確認(空欄になっているハズ)
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
#MySQLのrootユーザのPASSを変更
mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘PASSWORD’;
#権限更新(これをやらないと正しいPASSを入力してもMySQLに入れない)
mysql> FLUSH PRIVILEGES;
#rootユーザのPASSを確認(ハッシュ値っぽいモノになっているハズ)
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
#SQLから抜ける
mysql> exit;
#rootでMySQLにログイン(PASSを求められるので↑で設定したモノを入力)
mysql -u root -p
#作成ユーザでMySQLにログイン(PASSを求められるので↑で設定したモノを入力)
mysql -u wordpress -p
#MySQL内ユーザ「wordpress」を追加して権限付与
mysql> CREATE DATABASE wordpress;
mysql> create user wordpress@localhost identified by ‘【炭かっこごと消してPASSWORDを入力】’;
mysql> GRANT ALL ON wordpress.* to wordpress@localhost;
mysql> FLUSH PRIVILEGES;
mysql> exit;
■■■■■■■■■■■■■■■■■■■■
WordPress
■■■■■■■■■■■■■■■■■■■■
#解凍ソフトをインストール
sudo apt install unzip
#ドメインのルートディレクトリ(作成したファイル「index.html」を格納しているディレクトリ)に移動
cd /var/www/tarou-blog.org/html
#WordPressの最新ファイルをドメインのルートディレクトリにダウンロード(今回は日本語版を利用)
#wget https://wordpress.org/latest.zip
wget https://ja.wordpress.org/latest-ja.zip
#WordPressの最新ファイルを解凍
unzip latest-ja.zip
#zipファイルを削除
rm latest-ja.zip
#ブラウザでhttp://tarou-blog.org/wordpress/にアクセス(http://tarou-blog.org/wordpress/wp-admin/setup-config.phpにリダイレクト)※ブラウザ画面はそのまま
#設定を入力してsetup-config.phpの中身を生成してwordpressディレクトリに移動
cd /var/www/tarou-blog.org/html/wordpress
#ファイル「setup-config.php」を作成して生成した中身を貼り付けて保存
sudo vi /var/www/tarou-blog.org/html/wordpress/setup-config.php
#ブラウザに戻って「インストール実行」をクリック。実行と設定が完了したら→にアクセス「http://tarou-blog.org/wordpress/wp-admin/」してログイン画面になったらOK
#WordPressにログインして、設定の「一般設定」からサイトアドレスを『http://tarou-blog.org/』などにを変更
#NginXのドメイン設定ファイルを編集
sudo vim /etc/nginx/sites-available/tarou-blog.org
server {
listen 80;
listen [::]:80;
root /var/www/tarou-blog.org/html;
index index.php index.html;
server_name tarou-blog.org www.tarou-blog.org;
client_max_body_size 20M;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
}
}
#Nginxファイルに構文エラーがないことをテストして確認
sudo nginx -t
#問題が無ければNginX再起動
sudo systemctl restart nginx
#ブラウザに戻って→にアクセス「http://tarou-blog.org/wp-admin/」してログイン画面になったらOK
■■■■■■■■■■■■■■■■■■■■
SSL(https)有効化
■■■■■■■■■■■■■■■■■■■■
#CertbotとNginxプラグインをインストール(certbotはPythonで稼働)
sudo apt install certbot python3-certbot-nginx
#Certbotにプラグインを介してSSL証明書を取得させる
sudo certbot –nginx -d tarou-blog.org -d www.tarou-blog.org
#対話開始「https://qiita.com/RubiLeah-com/items/c2252a6c42f60fc3677b」参照
#①「メアドを入力しろ」とメッセージが出るので入力
#②Let’s Encryptパートナーにメールアドレスを公開していいか聞かれるので”N”を入力
#③httpsにリダイレクトするか聞かれるので”2″を入力し、returnキーを押す。(リダイレクトしたくないなら”1″を入力する。)
#④以下のメッセージが表示されて通常コマンドに戻ればOKっぽい
# Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donate
# Donating to EFF: https://eff.org/donate-le
#確認として「https://」のドメインにアクセスして
表示されたらOK
#Let’s Encryptの証明書は90日間のみ有効なので、systemctlを使用して更新タイマーのステータスを確認
# 以下のようなメッセージが出たらOK→「:q」で抜ける
# sudo systemctl status certbot.timer
# ● certbot.timer – Run certbot twice daily
# Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled)
# Active: active (waiting) since Mon 2020-05-04 20:04:36 UTC; 2 weeks 1 days ago
# Trigger: Thu 2020-05-21 05:22:32 UTC; 9h left
# Triggers: ● certbot.service
#更新プロセスをテストするには、certbotでドライランを実行
sudo certbot renew –dry-run
#エラーが表示されなければ、設定は完了
以上!!
え?
「リンクタグくらい付けろ」って?
うーん、ダリ!
コメント