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サーバーとして使えるようにする設定のご紹介でした。


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