Ubuntu 22.04 を自分サーバで使う #2

インストールの続き

http(s) アクセスの統一、www の有り無し

Apache の rewrite モジュールで、http アクセスは https に、www なしのアクセスは www ありのアクセスにする。
http でのアクセス(https が off)の場合、https にリダイレクトさせるには、

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

www 有り無しの統一の場合、www ありに統一するなら、

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^foo\.jp$
    RewriteRule ^(.*)$ http://www.foo.jp/$1 [R=301,L]
</IfModule>

両方なら、

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^foo\.jp$
    RewriteRule ^(.*)$ https://www.foo.jp%{REQUEST_URI} [R=301,L]
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

意味としては…
1 行目::
 モジュール mod_rewrite.c が有効な場合
2 行目:
 状態が「ホスト名が foo.jp」の場合
3 行目:
 リクエスト文字列を「http://www.foo.jp/<リクエスト文字列>」とした URL に Moved Permanently したよと返答して終了
4 行目:(この行へは上記にあてはまらなかったら流れてくる)
 状態が「HTTPS が off」の場合
5 行目:
 「https://%{HTTP_HOST}%{REQUEST_URI}」(プロトコルを https にした URL)に Moved Permanently したよと返答して終了
という感じ。

PHP

PHP のインストール。必要そうな mbstring と pear を入れておく。

$ sudo apt install php8.1-cli php-pear php8.1-mbstring php-curl composer

タイムゾーンとか設定する。

[mbstring]
mbstring.language = Japanese
mbstring.substitute_character = none
mbstring.detect_order = UTF-8,SJIS-win,eucJP-win,ISO-2022-JP,ASCII
[Date]
date.timezone = “Asia/Tokyo”

$ sudo vi /etc/php/8.1/cli/php.ini

PHP FPM

最初から FPM で入れてみる。

$ sudo apt install php-fpm

/etc/php/8.1/fpm/php.ini に cli と同様の修正を入れておく。
サイトの設定ファイルの <VirtualHost> に、

<FilesMatch \.php$>
    SetHandler "proxy:unix:/var/run/php/php8.1-fpm.sock|fcgi://localhost/"
</FilesMatch>

と追記しておいて、

$ sudo a2enconf php8.1-fpm
$ sudo a2enmod proxy_fcgi
$ sudo systemctl restart apache2

適当な php ファイル(中身は <?php system('/usr/bin/id'); ?> みたいなの)を用意してアクセスしてみる。
収容ドメインは別ユーザで html 等を管理するので、php もそのユーザで動作するようにする。

$ sudo cp /etc/php/8.1/fpm/pool.d/{www.conf,webadm.conf}
$ sudo vi /etc/php/8.1/fpm/pool.d/webadm.conf
$ sudo vi /etc/apache2/sites-available/<additional_domain>-ssl.conf
$ sudo systemctl restart apache2
$ sudo systemctl restart php8.1-fpm

同様の php ファイルを収容ドメインに置いてアクセスしてみる。

MariaDB

MariaDB をインストール・設定する。
Set root password で No で答える。ホストで sudo mysql で root で接続。

$ sudo apt install mariadb-server mariadb-client
$ sudo mysql_secure_installation

コメント

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