前回記事「CentOS8 + Apache + Nginx + MariaDBでVPSサーバーに環境構築をする(#2:SSH・公開鍵認証の設定)」では基本的なセキュリティ設定が完了しましたので、いよいよ本格的な環境構築が始まります。まずはウェブサイト公開に欠かせないウェブサーバーとPHPをインストールしていきます。
今回はウェブサーバーに「Apache」を選択しています。その他にも「Nginx」などのウェブサーバーが使われます。それでは早速進めていきます。
1. HTTPサーバー(ウェブサーバー)のインストール
下記コマンドでHTTPサーバーと必要な関連パッケージを丸ごとインストールしていきます。
# dnf install -y httpd httpd-devel httpd-tools httpd-manual Installed: .............. Complete!
インストールが完了したらバージョンを確認しておきます。
# httpd -v Server version: Apache/2.4.37 (centos)
httpdを起動させます。その後問題がないかステータスを確認しておきます。
# systemctl start httpd # systemctl status httpd httpd.service - The Apache HTTP Server ............ Active: active (running)
システムの起動時にhttpdも自動で起動されるように有効化設定を行います。その後ステータスを確認します。httpdの項目で「enabled」となっていればOKです。
# systemctl enable httpd # systemctl list-unit-files -t service ............ httpd.service enabled
(補足)パーマリンク設定時のmod_rewriteの設定
WordPressでパーマリンクをカスタムした場合に、404エラーとなる場合にはApacheの設定でmod_rewriteを有効化させる必要があります。下記のコマンドで「httpd.conf」を設定していきます。(必要に応じてバックアップを取っておきます)
# cd /etc/httd/conf/ # vim httpd.conf
【httpd.conf】
// 変更前 <Directory "/var/www/html"> ............ #AllowOverride None ............ </Directory> ↓ // 変更後 <Directory "/var/www/html"> ............ #AllowOverride None AllowOverride FileInfo ............ </Directory> // 最終行に追加 LoadModule rewrite_module modules/mod_rewrite.so
下記コマンドでhttpdを再起動させて変更内容を反映していきます。
# systemctl restart httpd
これでひとまずはウェブサーバーのインストールと設定ができました。引き続きFirewallの設定を行なっていきます。
2. HTTPとHTTPSプロトコルのfirewall設定
下記のコマンドでHTTP(ポート80)とHTTPS(ポート443)のFirewallを解放します。これで外部からの通信が可能になります。「success」と表示されればOKです。
# firewall-cmd --add-service=http --zone=public --permanent # firewall-cmd --add-service=https --zone=public --permanent success
firewalldを再起動させて設定を反映します。
# systemctl restart firewalld
HTTP(ポート80)とHTTPS(ポート443)が解放されているかを下記のコマンドで確認します。リスト内で表示されていればOKです。
# firewall-cmd --list-all .............. services: cockpit dhcpv6-client http https ssh ..............
3. SFTPのアップロード設定
サーバー内にファイルをアップロードする場合にはSFTPで通信する形になります。通常はSFTPクライアントなどのGUIアプリケーションを使うことが多いので、その設定を済ませておきます。SFTPクライアントには下記のように接続設定をしていき、サーバーのドキュメントルート(/var/www/html)にアクセスしてみます。
プロトコル:SFTP
ポート番号:変更後のSSHポート番号
アドレス:ホストIPアドレス
ユーザー:一般ユーザー名
パスワード:一般ユーザーのパスワード
認証鍵:公開鍵認証用の秘密鍵
SFTPクライアントでサーバーに接続できたか確認します。問題なければこのようにドキュメントルートの中に入ることができます。
その後、SSHでサーバーにログインし、rootユーザーに切り替え、var/www/に移動、下記のコマンドでドキュメントルートのパーミッションを確認すると、rootユーザーに権限があることが確認できます。
# cd /var/www # ls -l .............. drwxr-xr-x 2 root root ****** html
このままではrootユーザーしかアクセスできないので下記のようにドキュメントルートになるhtmlディレクトリに対して、所有者とパーミッションを変更しておきます。
# chown apache:[USERNAME] html # chmod 775 html
ドキュメントルートの所有者とパーミッションが変わっているのを確認します。
# ls -l .............. drwxrwxr-x 2 apache [USERNAME] ****** html
サンプルとなるindex.htmlファイルを作成し、SFTPクライアントでドキュメントルートにアップロードし「http://IPアドレス」にアクセスするとアップロードしたファイルが表示されるのを確認します。
(補足)さくらVPSではデフォルトでパケットフィルタの設定がされている場合があるため、IPアドレスにアクセスしてもページが表示されない場合には、パケットフィルタ設定をオフになっているかを確認します。
4. PHPと関連パッケージのインストール
ウェブサーバーと合わせてサーバーサイドのプログラムであるPHPもインストールしていきます。ここでは現時点で最新のPHP7.4系をインストールしていきます。まずは下記コマンドでEPELリポジトリを追加していきます。
# dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm .............. Installed: epel-release-8-8.el8.noarch Complete!
その後、続けて下記コマンドでRemiリポジトリを追加します。
# dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm .............. Installed: remi-release-8.1-2.el8.remi.noarch Complete!
EPELリポジトリ・Remiリポジトリが追加されたかを下記コマンドで確認します。
# cd /etc/yum.repos.d/ # ls .............. epel-modular.repo epel-playground.repo epel.repo epel-testing-modular.repo epel-testing.repo remi-modular.repo remi.repo remi-safe.repo
PHP(PHP7.4)をRemiリポジトリ経由でインストールしていきます。
# dnf module install -y php:remi-7.4
PHPのインストールが完了したらバージョンを確認しておきます。
# php -v PHP 7.4.7 (cli)
また合わせてインストールされた関連パッケージを確認しておきます。
# dnf list installed | grep php php-cli.x86_64 php-common.x86_64 php-fpm.x86_64 php-json.x86_64 php-mbstring.x86_64 php-xml.x86_64
もし他に必要なパッケージがある場合には追加でインストールしていきます。
# dnf install -y php-mysqlnd php-gd php-pecl-zip php-pecl-imagick
インストール終了後に、下記コマンドでhttpdを再起動しておきます。
# systemctl restart httpd
5. php.iniの設定
PHPのインストールが終わると設定ファイルも編集しておきます。設定ファイルとなる「php.ini」をエディタで編集します。(念の為バックアップを取っておくといいですね)
# cd /etc # cp php.ini php.ini.copy # vim php.ini
【php.ini】
memory_limit = 128M post_max_size = 50M upload_max_filesize = 30M
上記は必要に応じて調整しますが、memory_limit > post_max_size > upload_max_filesizeの関係になるようにしておくことが重要です。そして、ドキュメントルートに下記のように「info.php」を作成して、ブラウザ上でPHPの情報が表示されるかを確認します。設定した内容が表示されていればOKです。
【info.php】
<?php phpinfo(); ?>
ここまでの作業でとりあえず静的なウェブページやPHPを使ったプログラムなどが使えるようになります。次からはデータベースや各種ツールなどもインストールしていき、ウェブウェブアプリケーションとして動くサイトが使えるような環境にしていきます。