先日、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
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
設定
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アドレス>
コメント