さくらのVPSでPHPが使えるまでの設定【手順2】

almalinux をさくらのVPS にインストールして、ターミナルでログインできる状態にした後の設定のメモ。

前回

参考ページ

ネコでもわかる!さくらのVPS講座 ~第三回「Apacheをインストールしよう」 | さくらのナレッジ
初心者がVPS(Virtual Private Server)をWebサーバーとして構築し、WordPressのサイトを運用できるようになるまでの「ネコでもわかる!」連載の第3回目です。 最初から読みたい方はこちらからど

1.apache をインストールする

インストールせずに情報を確認

dnf info httpd

apache をインストール

sudo dnf -y install httpd

インストールした apache のバージョンを確認

httpd -v

起動しているかの確認

systemctl status httpd

サーバー再起動時に自動起動の設定

systemctl enable httpd

この時点でブラウザでIPアドレスを使ってサーバーにアクセスしてみると繋がるか確認する。
繋がらない場合は、firewall をいじる。

現在のポートの状態を確認
sudo firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens3
sources:
services: cockpit dhcpv6-client ssh-ポート番号
ports:
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

services: の部分に http と https がないので追加する。

https と httpsプロトコルを許可
firewall-cmd --add-service=http --zone=public --permanent
firewall-cmd --add-service=https --zone=public --permanent
forewalld をリロード
systemctl restart firewalld
sudo firewall-cmd --reload (もしくは)
再びポートの状態を確認
sudo firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens3
sources:
services: cockpit dhcpv6-client http https ssh-ポート番号
ports:
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

http と https が追加されていればOK。

ここまでの設定で、IPアドレスでサーバーにアクセスすればApacheテストページが表示されるはずだが、表示されなかった。さくらのVPS のコントロールパネルにあるパケットフィルターを無効にしたら表示された。

2.サーバー上のhtmlフォルダにファイルを置いてみる

FTPソフトで適当なindex.htmlを送信する
権限がないとエラーが出たら、パーミッションを変更する

パーミッションを変更
---------------------------
# cd /var/www
# chown ユーザー名:ユーザー名 html
# chmod 775 html
---------------------------
wordpressを設置する予定の場合
# cd /var/www
# chown apache:ユーザー名 html
# chmod 775 html

3.独自ドメインの設定

3-1 ドメイン側のネームサーバ設定

前提:お名前ドットコムで独自ドメインを取得済み

お名前ドットコムにログインしてさくらインターネットが運営するネームサーバーを指定

ns1.dns.ne.jp
ns2.dns.ne.jp

ドメイン名とIPアドレスを紐付る情報を、どのDNSサーバーに登録するかを指定している

3-2 さくらのVPS側にドメインを登録

VPSのコントロールパネルにログインして、独自ドメインを登録する。

サブドメインの場合はこちらを参考にする

4.PHPをインストール

現時点でインストールできるPHPを確認
dnf module list php

最新のPHPがなかったが、リポジトリを追加して最新版を探す。

現在有効なリポジトリ
dnf repolist

主な外部リポジトリを追加する。remiリポジトリは公式サイトで調べてOSに合わせたものにする。

Remi's RPM repository
# epelリポジトリを追加
dnf -y install epel-release

# remiリポジトリを追加
# almalinux8 の場合
dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

# almalinux9 の場合
dnf -y install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
再びインストールできるPHPを確認
dnf module list php

現段階で最新だったphp8.2をインストール

# php8.2を有効にする
dnf -y module enable php:remi-8.2

[e]が付いて有効になった。

Remi's Modular repository for Enterprise Linux 9 - x86_64
Name Stream Profiles Summary
php remi-7.4      common [d], devel, minimal PHP scripting language
php remi-8.0      common [d], devel, minimal PHP scripting language
php remi-8.1      common [d], devel, minimal PHP scripting language
php remi-8.2 [e]  common [d], devel, minimal PHP scripting language

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
インストール
sudo dnf install php php-devel php-mbstring php-mysqlnd php-pdo php-gd
php-develなどはPHPのモジュール(必要に応じて)
最新バージョンでない場合もある

php の記述ミス時にエラーが出るように php.ini を書き直しておく。

display_errors = Off

display_errors = On

変更を有効

sudo systemctl restart php-fpm
sudo systemctl restart httpd

5.データベース(mysql)をインストール

dnf -y install mariadb-server
起動
systemctl enable mariadb //サーバー再起動時に自動的に起動
systemctl start mariadb

mariadbのパスワードの設定や、初期設定を行う

sudo mysql_secure_installation

実行すると出るメッセージ

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):

最終行の root は Mariadb の root を指す。初期設定ではパスワードは設定されていないのでそのままエンター

パスワードを作ったあとは全部 Y(es) でいい。

OK, successfully used password, moving on…

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n]

Y(es).

Enabled successfully!
Reloading privilege tables..
 ... Success!


You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n]

ルートパスワードを変更したいので Y

これ以降すべて Y でいい。

All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.

もし間違えて rootパスワードの設定をし損ねたら mysql にログインして次のコマンド。

ALTER USER 'root'@'localhost' IDENTIFIED BY '希望のパスワード';

設定完了。ログインしてみる。

mysql -u root -p
# 動作確認
show databases;

6.phpMyAdminをインストール

coskx
phpMyAdminの設定
ブラウザから簡単にデータベースを操作することができるphpMyAdminのインストールと設定をします。 環境 CentOS 6.10 Apache 2.2.15 CentOS 7はこちら 1.phpMyAdminのインストール root

リポジトリにあるか。たぶんepelにある

$ dnf list phpMyAdmin

ある場合はインストール

sudo dnf install phpMyAdmin

リポジトリにない場合、公式サイトから最新版をダウンロードして入れる

wget https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.tar.gz

wget コマンドがない!

wget: command not found

確認すると、やっぱり何も表示されない(インストールされていない)

dnf list installed | grep wget

wget をインストール

yum -y install wget

改めてダウンロード

wget https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.tar.gz

カレントディレクトリにダウンロードされる

解凍
tar zxvf phpMyAdmin-5.2.1-all-languages.tar.gz
リネーム
sudo mv phpMyAdmin-5.2.1-all-languages phpmyadmin
phpmyadmin フォルダを /usr/share(※) に移動
sudo mv phpmyadmin /usr/share/phpmyadmin

※yum(dnf)でインストールすると /usr/share にインストールされるので、その動作に合わせる。

フォルダのパーミッションを変更。

sudo chmod -R 0755 phpmyadmin

alias の参考ページ

【Apache】Aliasを使ってみよう - Qiita
はじめに過去記事【Apache】DocumentRootを変更しようではDocumentRootを変更してみましたが、Alias(エイリアス)を使用することで、DocumentRootを変更す…
//<IFModule alias_module>~</IFModule> 内に書く
Alias /phpmyadmin "/usr/share/phpmyadmin/"
<Directory "/usr/share/phpmyadmin/">
Order allow,deny #Apache 2.2以前の書き方
Allow from all #Apache 2.2以前の書き方
Require all granted
</Directory>

構文チェックと再起動

httpd.conf の構文チェック
apachectl configtest

apache の再起動
systemctl restart httpd

ブラウザを使って http://xxx.xxx.xxx.xxx(IPアドレス)/phpmyadmin でアクセスできるか確認。

アクセスできるが、ログインするとエラーが出ている。

エラー内容
$cfg['TempDir'] (/usr/share/phpmyadmin/tmp/) にアクセスできません。phpMyAdmin はテンプレートをキャッシュすることができないため、低速になります。
やってだめだったやつ
mkdir tmp
chmod 755 tmp

これでOK
https://you-1.tokyo/phpmyadmin-is-slow-because-it-cant-cache-templates/

以下を /usr/share/phpmyadmin/config.inc.php に記述

$cfg ['TempDir'] = '/tmp';

phpMyAdminのセキュリティ対策

httpd.conf の記述を書き直して、phpmyadmin のページを推測されにくい URL にする。

Alias /phpmyadmin "/usr/share/phpmyadmin/"
<Directory "/usr/share/phpmyadmin/">
Order allow,deny
Allow from all
Require all granted
</Directory>

↓

Alias /xxxxxx "/usr/share/phpmyadmin/"
<Directory "/usr/share/phpmyadmin/">
Order allow,deny
Allow from all
Require all granted
</Directory>

SSLによる暗号化通信

SSLによる暗号化通信時のみ phpmyadmin へのアクセスを許可するため、httpd.conf に追記する。

ただし、mod_sslを入れていないと構文エラーになる。

Alias /xxxxx "/usr/share/phpmyadmin/"
<Directory "/usr/share/phpmyadmin/">
Order allow,deny
Allow from all
Require all granted
</Directory>

↓

Alias /xxxxx "/usr/share/phpmyadmin/"
<Directory "/usr/share/phpmyadmin/">
SSLRequireSSL ← これを追記
Order allow,deny
Allow from all
Require all granted
</Directory>

つづきはこちら

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