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サーバーとして使えるようにする設定のご紹介でした。
長かったですが、最後まで読んでいただきありがとうございました。
関連記事はこちら
-
Ajax LaravelやPHPでファイル保存する時Base64とかでよく忘れちゃうこと
-
Dockerを使って、とりあえずLaravel~MySQLまで使えるようにしよう(構築 前編)
-
LaravelでNamespace declaration statement has to be
- 2021-07-05
- #Laravel
- #エラー
- #Namespace
- #凡ミス
-
Laravelでルートは合ってるのに、Not Foundが出る解決方法
-
Laravelで簡単にバックアップしてCronで別サーバーへFTP転送までを自動化してみた
-
Laravel クエリビルダ インクリメント処理
-
jQuery UIのAutocompleteを使ってみる
- 2016-05-20
- #jQuery
- #laravel
- #Autocomplete
- #Ajax