almalinux をさくらのVPS にインストールして、ターミナルでログインできる状態にした後の設定のメモ。
前回
参考ページ
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に合わせたものにする。
# 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をインストール
リポジトリにあるか。たぶん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 の参考ページ
//<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>
つづきはこちら