CentOS9S+Nginx+PHP+Certbot(cloudflare)の環境を作る。

スポンサーリンク

先日、IPアドレスを1個用意したので、それに合わせてそれ用のサーバも設定してます。今回はその一環でやります。備忘録的な感じでやるので、色々間違えているかも。本当はまとめる気なかったけど、9 Stream対象の記事が少なかった気がしたので、やります

情報はすべて2022/05/07時点です。

今回は様々なサイトを参考にさせていただきました。この場をお借りしてお礼申し上げます。

目標

CentOS Stream 9でnginx+php-fpm+certbot(cloudflare用のプラグインも導入)の環境を作ります。

SELinux無効化(必要であれば)

grubby --update-kernel ALL --args selinux=0
shutdown -r now

アップデート

dnf update -y

一般ユーザ追加

useradd ユーザ名
passwd ユーザ名

一般ユーザのsudoコマンド有効化

usermod -G wheel ユーザ名

SSHを公開鍵認証+rootログイン禁止に

鍵ペア作成(Windows)

ssh-keygen -t ed25519 -b 4096

公開鍵のUL(Windows)

scp C:\Users\ユーザ名/.ssh/id_ed25519.pub ユーザー名@ホスト名:/tmp

コンフィグ変更

vi /etc/ssh/sshd_config

# 以下変更箇所のみ記載
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no
#ここまで

:wq

公開鍵追加(一般ユーザでログイン)

mkdir ~/.ssh
chmod 700 ~/.ssh/

cat /tmp/id_ed25519.pub >> ~/.ssh/authorized_keys

chmod 600 ~/.ssh/authorized_keys

rm /tmp/id_ed25519.pub

sudo systemctl restart sshd

基本的なパッケージのインストール

sudo dnf -y groupinstall base
sudo dnf -y groupinstall development

firewalld設定

sudo firewall-cmd --add-port=80/tcp --permanent
sudo firewall-cmd --add-port=443/tcp --permanent
sudo firewall-cmd --reload

nginx関連

インストール

sudo dnf install nginx
sudo systemctl start nginx
sudo systemctl enable nginx

コンフィグ

sudo vi /etc/nginx/nginx.conf

httpディレクティブ内
error_log /var/log/nginx/error.log;

serverディレクティブ内をすべてコメントアウト。

:wq

PHP関連

インストール

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

コンフィグ

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

user = nginx
group = nginx

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

:wq

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

証明書関連

snapインストール

sudo dnf -y install epel-release
sudo dnf install snapd
sudo systemctl start snapd
sudo ln -s /var/lib/snapd/snap /snap
sudo systemctl enable snapd

certbotインストール

sudo snap install core
sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo snap set certbot trust-plugin-with-root=ok
sudo snap install certbot-dns-cloudflare
sudo systemctl enable snap.certbot.renew.timer

設定

cd ~
sudo mkdir -p .secrets/certbot
sudo chmod 700 .secrets
sudo chmod 700 .secrets/certbot
sudo vi .secrets/certbot/cloudflare.ini
sudo chmod 600 .secrets/certbot/cloudflare.ini

dns_cloudflare_email = cloudflareに登録したeメールアドレス
dns_cloudflare_api_key = cloudflareのGlobal API Key

:wq

sudo certbot certonly \
-d example.com \
-d *.example.com \
--server https://acme-v02.api.letsencrypt.org/directory \
--dns-cloudflare --dns-cloudflare-credentials .secrets/certbot/cloudflare.ini \
--preferred-challenges dns-01

sudo vi /etc/letsencrypt/renewal-hooks/deploy/reload.sh

systemctl reload nginx

:wq

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

sudo systemctl restart nginx

参考:
https://manual.sakura.ad.jp/vps/support/security/firstsecurity.html
https://qiita.com/uhooi/items/137de4578534c8e7e7f2
https://zenn.dev/dokokade/articles/9055137590778b
https://twinturbo-power.com/2021/12/centos-stream-9%E3%81%AEvps%E3%82%92%E7%AB%8B%E3%81%A1%E4%B8%8A%E3%81%92%E3%81%A6%E3%81%BF%E3%81%9F.html
https://blog.apar.jp/linux/15791/
https://ideal-reality.com/computer/server/centos8-nginx-wordpress/
https://qees.tistory.com/132
https://qiita.com/woonotch/items/b1208dd792be00e6c447

多分これで完了。
一応備忘録なので、ここからは自分のしたいようにカスタマイズした内容を載せます。ブラウザバックをどうぞw

nginxのコンフィグ設定

vi /etc/nginx/conf.d/<IPアドレス>.conf

server {
    listen       80;
    server_name  <IPアドレス>;
    access_log /var/log/nginx/<IPアドレス>-access.log;
    error_log /var/log/nginx/<IPアドレス>-error.log;

    location / {
        root /var/www/<IPアドレス>;
    }
}

:wq

mkdir /var/www/<IPアドレス>

コメント

タイトルとURLをコピーしました