GattsCOM

ブログ

BLOG

  1. Home
  2. Blog

CentOS Stream9 LAMP構築から色々含めて

こんにちわ!

今日は2月8日にリリースされたLaravel9を使おうと思ってついでに新しいOSも導入しようと思ったので

ここに書く内容をほぼほぼコピペで動くだろう!って感じで書いていこうと思います〜
本ブログでは、Composer、npm、certbot(let's encrypt)なども含めてご紹介します。

【構成】
CentOS Stream9 (さくらVPS)
Apache:2.4
PHP:8.0
MySQL:8.0
Laravel:9.1
Composer:2.2.6
npm:8.3
python:3.9 (Let's Encrypt Certbot用)

今回やりたいLarave9は必須条件がPHP8以上でしたので、どうせならと思いOSも最新の物にしようと考えました。

さくらVPSのコンパネから、OSをCentOS Stream9を選択してサクッとインスールします。
インストールが終わったら、sshで接続します。

この時、OSを入れる際に注意書きでrootユーザーではなくcentosってユーザーが自動で作られます。
rootユーザーでは直接接続ができなくなります。(あとで設定で変更できますが、それは別のお話しで)

あ、それからCentOS7などまで使われてたyumコマンドが変更されてdnfとなっているので、そこも見慣れないと思いますが
気にせず進めて行きましょう!

# EPELの追加
dnf config-manager --set-enabled crb
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm

# Remiの追加
dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
dnf config-manager --set-enabled remi

sshでログインの際に、変な文章出てくるので
cockpitは削除しておきましょう。

## 不要なサービスの停止・削除
# cockpitの削除
dnf remove -y cockpit

続けてFirewalldを起動させて、ポートを開放しましょう

## Firewallの設定
# Firewallをスタートさせる
systemctl start firewalld

# 使わないサービスのポートを閉じる(cockpitとdhcpv6-client)
firewall-cmd --remove-service=cockpit --permanent
firewall-cmd --remove-service=dhcpv6-client --permanent

# HTTP(80/tcp) と HTTPS(443/tcp) を許可しておきます
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --add-port=443/tcp --permanent

Firewalldを再起動して、設定が反映されているか確認しましょう

# firewall 再起動
firewall-cmd --reload

# Firewallの確認
firewall-cmd --list-all

続けてApacheのインストールです!

## Apacheインストール
dnf -y install httpd-devel
dnf -y install mod_ssl

インストールされたか確認しましょう。

# インストールされたかバージョン確認
httpd -v

バージョンが表示されてればOKです!\(^o^)

自動起動をONにしましょう!

# Apacheを自動起動設定
systemctl enable httpd

続いて、PHPをインストールしましょう!
 (8.0.13) 複数ライブラリもまとめてインストール

# PHPのインストール
dnf install php php-common php-opcache php-cli php-gd php-curl php-mysqlnd php-devel php-fpm php-mbstring php-pdo php-intl php-xml php-pear php-pecl-apcu php-soap php-zip

インストールされたかバージョン確認してみましょう!

# バージョン確認 (表示されればOK)
php -v

表示されてればOKですよ!おめでとうございます

続いては、MySQLのインストールです

# MySQLのインストール (8.0)
dnf -y install mysql
dnf -y install mysql-server

インストールされてるかバージョンの確認

# バージョン確認 (表示されればOK)
mysqld --version

バージョンが表示されてればOKです。
MySQLも自動起動をONにしときましょう!

# MySQLの自動起動設定
systemctl enable --now mysqld

初期状態では、rootユーザーがパスワードなしで MySQLに接続できるようになっていますのでパスワードを設定しましょう!

mysql_secure_installation --use-default

#実行したら、パスワードの入力を求められるのでパスワードを設定してください

設定したパスワードで入れるか確認

# MySQLへ接続できるか確認とMySQLのツール『Sequel Pro』を使えるように設定変更する。
mysql -uroot -p

# パスワード入力でmysqlに接続されればOK!

Sequel Proなどのツールを使っていると、接続できない!ってエラー出ると思います。
なので、もう少し設定していきましょう。

# MySQLのrootの「caching_sha2_password」 を 「mysql_native_password」に変更します
ALTER USER 'root'@"localhost" IDENTIFIED WITH mysql_native_password BY 'パスワード';

# ↑が終わったら設定を反映
FLUSH PRIVILEGES;

# MySQLからexitしてSequel Proで接続を確認する。
exit

これでSquel Proの接続してみて、接続されればOK!

続いて、Laraveをインストールする為に必要な「Composer」をインストールしていきましょう。

## Composerのインストール
# まず、wgetのインストール
dnf install -y wget

# ゲットできたら、インストーラーのダウンロード
wget https://getcomposer.org/installer -O composer-installer.php

# ダウンロードしたら、インストール
php composer-installer.php --filename=composer --install-dir=/usr/bin

# インストールが完了したら一応実行しとくといい。(バージョン確認用)
composer self-update

バージョン表示の確認できればOKです!

さてさて、やっと本題のLaravel9のインストールですね!!
サクッと行ってみましょう!!

## Laraveのインストール(Ver.9)
composer create-project "laravel/laravel=9.*" プロジェクト名

インストールが終わったらバージョン確認してみましょう。
プロジェクトへ移動して

php artisan -V

> Laravel Framework 9.1.0

バージョン表示されましたか?されてればOKですよ!!!

これで、ブラウザから確認してLaravel9の画面が出てればOKです。

おめでとうございます!!

ここからは、Laravelを使う上で必要になってくるnpmのインストールやSSL(https)をするためにpythonやcertbotのインストールになりますので、ここまでの方はお疲れ様でした〜!!!

という事で、どんどん行きましょう!
Pythonのインストール。Let's Encrypt(Certbot)を使えるようにする為

dnf -y install python39 python-pip augeas-libs

# python-pip39とすると私はエラーがでたので、python-pipとしてます。
# もしpython-pipのところでエラー出る人はpython-pip39にしてみると良いかもしれません。

↑ 終わったら下記実行してCertbot(Let's Encrypt)をインストールします。

sudo python3 -m venv /opt/certbot
sudo /opt/certbot/bin/pip install --upgrade pip
sudo /opt/certbot/bin/pip install certbot certbot-apache
sudo ln -s /opt/certbot/bin/certbot /usr/bin/certbot

インストールが終わったらバージョン確認してみましょう。

# バージョン確認 (表示されればOK) 
certbot --version

続いては、いつも通りhttpsをかける設定です。

# 登録・実行
certbot certonly --webroot -w /ディレクトリ/public/ -d ドメイン

↑はいつも通りのコマンドですね。
OSが変わったからと言って、ここのコードが変わるわけではないです!安心安心

ここで、apacheの再起動忘れずに

続いてnpmのインストールです。

# npmのインストール(root権限で)
dnf install nodejs

インストール終わったらバージョン確認

# バージョン確認
npm -v

バージョンが表示されてたらOKです。
お疲れさまでした!!


補足ですが。

CentOS Stream9から/etc/にあった「hosts.allow」や「hosts.deny」がなくなっています。

これはsshの接続を許可するIPを制限するための設定ファイルになるんですが、ものが無い。

ならどうすんだ!って思った方。

安心してください!履いてますよ!(古!

CentOS Stream9からは「sshd_config」で行います。

# SSHの接続制限(IP制限) 旧hosts.allow, hosts.deny
vi /etc/ssh/sshd_config

# sshd_configに下記追加します。
AllowUsers username@接続許可IPアドレス

usernameのところは、接続したいusernameです

@の後ろはIPアドレスになります。

ですが、この設定hosts.allowやdenyと違ってIPの制限はされますが

パスワードの入力までは見えてしまします。

そこで、もしssh自体を制限したい場合は、Firewalldで行う必要があります。
Firewalldは色んな設定の仕方がありますので、Firewalld sshなどでGoogle先生に聞いてもらったほうが色々書くより早いと思います。

Firewalldでsshの書かれてるところを消して、usernameなどを設定、またIPアドレスなどもそこで設定してれば問題なくhosts.allow, denyの設定のような感じになると思います。

どちらにしてもsshd_configの設定は必要ですので、お忘れなく。

最後にsshd_configを触ったら再起動しておきましょう。

# 設定の反映
systemctl restart sshd


まだまだ他にも細かい設定などはありますが、そこは省きました。
httpdの「ServerTokens」や「ServerSignature」など
php.iniの「expose_php」などなど。

今回はとりあえず、LAMP環境構築からLaravelをインストールして、npmやcertbot(Let's Encrypt)の一通りWEBサーバーとして使えるようにする設定のご紹介でした。

長かったですが、最後まで読んでいただきありがとうございました。