エックスサーバーで実行するphpのプログラムを作成するメモ1(サーバー設定とssh)

2024年4月13日

VPSではなくてレンタルサーバー(スタンダードプラン)で動かすphpの話。

ドメインを追加する

エックスサーバーのサーバーパネル→ドメイン設定→ドメイン設定追加から新規のドメインを追加する

デフォルトのオプションはそのままチェックをつけておく
・無料独自SSLを利用する(推奨)
・高速化・アクセス数拡張機能「Xアクセラレータ」を有効にする(推奨)

PHPのバージョンを最新にする

PHP8.1.22(推奨)→PHP8.2.9

Xアクセラレータを最新にする

Xアクセラレータ Ver.1→Xアクセラレータ Ver.2

サーバーキャッシュ設定はオフにする

OFFにする

ブラウザキャッシュ設定はそのまま

ON[全ての静的ファイル]

Webサイトの常時SSL化

.htaccess の先頭に以下の3行を追加する。

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

アクセス制限設定をオンにする

トップのディレクトリにベーシック認証を追加する

ユーザー、パスワードを追加する

JITは有効化しない

今後、検討する

error_reportingの設定

PHP 8のデフォルトの error reporting は E_ALL。よって、php.iniの5行目を編集してE_ALLにする。

error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
↓
error_reporting = E_ALL

display_startup_errors

php.iniの7行目のdisplay_startup_errors = Off →Onにする

error_logの設定

php.iniの8行目にerror_logの出力先を追加する

[PHP]
engine = On
default_charset = UTF-8

error_reporting = E_ALL
display_errors = On
display_startup_errors = On
error_log = /home/xxxxxuser/xxxxxx.com/log/error.log

ドメイン直下にすでに存在しているlogフォルダ/error.logにしてみた

こちらのログを確認していたところ、php.iniの警告が表示されていた。php8では使えない設定が残ったままなので、

[06-Apr-2024 22:17:42 Asia/Tokyo] PHP Deprecated:  PHP Request Startup: Use of mbstring.internal_encoding is deprecated in Unknown on line 0
[06-Apr-2024 22:17:42 Asia/Tokyo] PHP Deprecated:  PHP Request Startup: Use of mbstring.http_input is deprecated in Unknown on line 0
[06-Apr-2024 22:17:42 Asia/Tokyo] PHP Deprecated:  PHP Request Startup: Use of mbstring.http_output is deprecated in Unknown on line 0

3つの設定を無効にした。

[mbstring]
mbstring.language = Japanese
;mbstring.internal_encoding = UTF-8
;mbstring.http_input = pass
;mbstring.http_output = pass
mbstring.encoding_translation = Off
mbstring.detect_order = auto
mbstring.substitute_character = none


PHPは最新の機能で記述する

現時点のエックスサーバーはphp 8.2.9
そろそろ8.3になりそう

参考

【PHP8.3】PHP8.3がリリースされたので新機能全部やる

PHP7からのstrictモードを使った厳密な型宣言

各ファイルの先頭に記述

<?php
// strictモードの有効化
declare(strict_types=1);

エックスサーバーのSSH設定

マニュアルを参照

https://www.xserver.ne.jp/manual/man_server_ssh.php

エックスサーバーのSSHはパスワード方式は認めておらず、公開鍵認証しかできません。

サーバー上で公開鍵認証用鍵ペアの生成を行うと、秘密鍵がダウンロードされます。

macOS Sonoma 14.4.1でSSHクライアントの設定

SSH クライアントは UNIX コマンドとして既に MacOS に入っています。UNIXコマンドを実行するためのターミナルソフトも初めから入っていますので、新たにソフトウェアを導入する必要はありません。標準のTerminalでもよかったのですが、検索するとiTerm2というクライアントアプリケーションが人気でした。

iTearm2のインストール

公式サイトからダウンロードします。

ダウンロードしたiTerm2-3_4_23.zipを解凍すると、同じパス上にiTerm2.appができます。それをアプリケーションにドラッグ&ドロップして移動します。

iTerm2.appを起動します。

「pip3コマンドを実行するには、コマンドライン・ デベロッパツールが必要です。ツールを今すぐインストールしますか?」→pip3コマンドはなにで使うかは知らないが「インストール」

秘密鍵を設定する

homeディレクトリ直下に.sshディレクトリを作成します。

mkdir .ssh

エックスサーバーからダウンロードした秘密鍵を移動します。

mv Downloads/supi3.key .ssh/

パーミッションを変更する

chmod 700 .ssh
chmod 600 .ssh/supi3.key

エックスサーバーにSSH接続する

ssh -i ~/.ssh/supi3.key -p 10022 supi3@sv14103.xserver.jp
または
ssh -i ~/.ssh/supi3.key -p 10022 supi3@supi3.xsrv.jp

Yes→鍵のパスワードを入力して接続できます。

iTerm2の新規プロファイルを作成する

プロファイルを指定して新しいウィンドウを起動するとsshのコマンドを自動で入力します。

Windows11 23H2 のSSHクライアントの設定

昔はPoderosaを愛用していましたが、いまはもう使用者も少ないんですね。

TeraTerm5.2をインストールする予定でしたがWindows Terminalにしました。

Windows Terminalとは

「Windows Terminal」(ターミナル)は、Microsoftが主導でオープンソースとして開発しているターミナルアプリ(ライセンスは「MIT」)。2024/4現在、「Windows Terminal 1.20」がプレビューで、「Windows Terminal 1.19」が安定版。

Windows ターミナルでの SSH

ダウンロードした秘密鍵をユーザーフォルダ/.ssh/supi3.key にコピーしました。

スタートメニューの右クリック→ターミナルをクリック。

「Windows Terminal 1.19」が起動します。

ssh -i "C:\Users\user\.ssh\supi3.key" -p 10022 supi3@sv14103.xserver.jp
または
ssh -i "C:\Users\user\.ssh\supi3.key" -p 10022 supi3@supi3.xsrv.jp

Yes→鍵のパスワードを入力して接続できます。

新規プロファイルを作成する

Ctrl+, のショートカット、または+タブの隣をクリックしてターミナルの設定を開きます。

「新しいプロファイルを追加します」をクリックします。

「複製」をクリックします。

任意の名前と、コマンドラインにSSHコマンドを入力して保存します。

外観の設定でフォントや配色の設定が可能です。

既定のプロファイルに設定する

既定のプロファイルに設定するとターミナル起動時にSSH接続します。

長くなったのでここまで。
次はPHPのエディタの設定。

phpphp

Posted by zzz