未分類

【Ubuntu編】XserverVPSにPHPとMySQLをインストールする方法(覚え)

前準備
ロケール表示
# echo $LANG

使用可能なロケール一覧表示
# locale -a

デフォルトのロケールを英語に変更して反映させる
# echo export LANG=en_US.utf8 >> ~/.profile
# source ~/.profile
# echo $LANG

Ubuntu 22.04 の場合

ステップ 1 — root としてログインする

Tera Termでログインします。※Tera Termの設定についてはこちらを参照してください

ステップ2-ファイアウォールの設定

# ufw app list

Output
Available applications:
OpenSSH

次回サーバーにログインできるように、ファイアウォールで SSH 接続が
許可されていることを確認する必要があります。
次のように入力して、これらの接続を許可します。

# ufw allow OpenSSH

次のように入力して、ファイアウォールを有効にします。

# ufw enable
入力yして押してENTER続行します。次のように入力すると、SSH 接続がまだ許可されていることがわかります。

# ufw status
———————————————–
Output
Status: active

To Action From
— —— —-
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
——————————————————
ファイアウォールは現在、SSH 以外のすべての接続をブロックしています。
追加のサービスをインストールして構成する場合は、ファイアウォールの設定を調整して、
サーバーへの新しいトラフィックを許可する必要があります。

1.インストール設定 ※ローカルパッケージインデックスを更新します

# sudo apt update

2.apache2 パッケージをインストールします。

# sudo apt install apache2

3.ファイアウォールの調整

Apache をテストする前に、ファイアウォール設定を変更して、デフォルトの
Web ポートへの外部アクセスを許可する必要があります。
前提条件の指示に従っていると仮定すると、サーバーへのアクセスを制限するように
UFW ファイアウォールを構成する必要があります。

インストール中に、Apache はそれ自体を UFW に登録して、
ファイアウォールを介した Apache へのアクセスを有効または無効にするために
使用できるいくつかのアプリケーション プロファイルを提供します。

次のように入力して、ufw アプリケーション プロファイルを一覧表示します。

# sudo ufw app list

アプリケーション プロファイルのリストが表示されます。

Output
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
出力に示されているように、Apache で使用できるプロファイルは 3 つあります。

Apache: このプロファイルはポート 80 のみを開きます (通常の暗号化されていない Web トラフィック)
Apache Full: このプロファイルは、ポート 80 (通常の暗号化されていない Web トラフィック) と
ポート 443 (TLS/SSL 暗号化トラフィック) の両方を開きます
Apache Secure: このプロファイルはポート 443 (TLS/SSL 暗号化トラフィック) のみを開きます
構成したトラフィックを引き続き許可する、最も制限の厳しいプロファイルを有効にすることをお勧めします。
このガイドではサーバーの SSL をまだ構成していないため、ポート 80 でのトラフィックのみを許可する必要があります。

# sudo ufw allow ‘Apache’
次のように入力して、変更を確認できます。

# sudo ufw status
Status: active

To Action From
— —— —-
OpenSSH ALLOW Anywhere
Apache ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache (v6) ALLOW Anywhere (v6)
出力に示されているように、プロファイルがアクティブ化され、Apache Web サーバーへのアクセスが許可されています。

4.Web サーバーの確認
次のように入力して、systemd init システムでサービスが実行されていることを確認します。

# sudo systemctl status apache2
● apache2.service – The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2023-03-12 16:02:52 JST; 5min ago
Docs: https://httpd.apache.org/docs/2.4/
Main PID: 3431 (apache2)
Tasks: 55 (limit: 2317)
Memory: 5.2M
CPU: 40ms
CGroup: /system.slice/apache2.service
tq3431 /usr/sbin/apache2 -k start
tq3433 /usr/sbin/apache2 -k start
mq3434 /usr/sbin/apache2 -k start

Mar 12 16:02:52 x162-43-16-223 systemd[1]: Starting The Apache HTTP Server…
Mar 12 16:02:52 x162-43-16-223 systemd[1]: Started The Apache HTTP Server.

サーバーのコマンド プロンプトで次のように入力してみてください。
# hostname -I
スペースで区切られたいくつかのアドレスが返されます。
Web ブラウザーでそれぞれを試して、動作するかどうかを判断できます。

5.Apacheプロセスの管理
Web サーバーを起動して実行したので、systemctl を使用していくつかの基本的な管理コマンドを見てみましょう。

Web サーバーを停止するには、次のように入力します。

# sudo systemctl stop apache2

停止している Web サーバーを開始するには、次のように入力します。

# sudo systemctl start apache2

サービスを停止してから再開するには、次のように入力します。

# sudo systemctl restart apache2

単純に構成を変更する場合、Apache は多くの場合、接続をドロップせずにリロードできます。これを行うには、次のコマンドを使用します。

# sudo systemctl reload apache2

デフォルトでは、サーバーの起動時に Apache が自動的に起動するように設定されています。これが望ましくない場合は、次のように入力してこの動作を無効にします。

# sudo systemctl disable apache2

サービスが起動時に起動するように再度有効にするには、次のように入力します。

# sudo systemctl enable apache2

サーバーが再起動すると、Apache が自動的に起動するはずです。

6.仮想ホストのセットアップ(推奨)
次のように your_domain のディレクトリを作成します。

# sudo mkdir /var/www/your_domain

次に、$USER 環境変数を使用してディレクトリの所有権を割り当てます。

# sudo chown -R ubuntu:ubuntu /var/www/your_domain

デフォルトのファイル許可を設定する umask 値を変更していない場合、Web ルートの許可は正しいはずです。権限が正しいことを確認し、所有者がファイルの読み取り、書き込み、および実行を許可する一方で、グループやその他のユーザーには読み取りと実行の権限のみを付与するには、次のコマンドを入力します。

# sudo chmod -R 755 /var/www/your_domain

次に、nano またはお気に入りのエディターを使用して、サンプルの index.html ページを作成します。

# sudo nano /var/www/your_domain/index.html

内部に、次のサンプル HTML を追加します。

<html>
<head>
<title>Welcome to Your_domain!</title>
</head>
<body>
<h1>Success! The your_domain virtual host is working!</h1>
</body>
</html>
終了したら、ファイルを保存して閉じます。

Apache がこのコンテンツを提供するには、正しいディレクティブを使用して仮想ホスト ファイルを作成する必要があります。 /etc/apache2/sites-available/000-default.conf にあるデフォルトの構成ファイルを直接変更する代わりに、
/etc/apache2/sites-available/ に新しい構成ファイルを作成しましょう。 your_domain.conf:

# sudo nano /etc/apache2/sites-available/your_domain.conf

次の構成ブロックを貼り付けます。これはデフォルトに似ていますが、新しいディレクトリとドメイン名用に更新されています。

<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName your_domain
ServerAlias www.your_domain
DocumentRoot /var/www/your_domain
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<VirtualHost *:80>
ServerAdmin support@your_domain.com
ServerName your_domain.com
ServerAlias your_domain.com
DocumentRoot /var/www/your_domain.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

DocumentRoot を新しいディレクトリに更新し、ServerAdmin を your_domain サイト管理者がアクセスできる電子メールに更新したことに注意してください。また、2 つのディレクティブを追加しました。ServerName は、この仮想ホスト定義に一致する必要があるベース ドメインを確立します。ServerAlias は、あたかも一致する必要がある追加の名前を定義します。それらは基本名でした。

終了したら、ファイルを保存して閉じます。

a2ensite ツールでファイルを有効にしましょう:

# sudo a2ensite your_domain.conf

000-default.conf で定義されているデフォルト サイトを無効にします。

# sudo a2dissite 000-default.conf

次に、構成エラーをテストしましょう。

# sudo apache2ctl configtest

次の出力が表示されます。

Output
Syntax OK
Apache を再起動して変更を実装します。

# sudo systemctl restart apache2

Apache がドメイン名を提供するようになりました。これをテストするには、http://your_domain に移動すると、次のように表示されます。

PHPのインストール 8.1標準をインストール
$ sudo apt show php

$ sudo apt install -y php

$ php -v

$ apache2ctl -v
Server version: Apache/2.4.52 (Ubuntu)
Server built: 2022-09-30T04:09:50

次にIMAPの拡張モジュールをインストール
# sudo apt install php-imap
# sudo phpenmod imap
# service apache2 restart

# sudo ufw app list
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
ご覧のとおり、Apacheにはプロファイルが3つあります。

Apache: このプロファイルは、ポート80(通常の暗号化されていないWebトラフィック)のみを開きます。
Apache Full: このプロファイルは、ポート80(通常の暗号化されていないWebトラフィック)とポート443(TLS/SSL暗号化トラフィック)の両方を開きます。
Apache Secure: このプロファイルは、ポート443 (TLS/SSL暗号化トラフィック)のみを開きます。
設定したトラフィックを許可しながら、最も制限の厳しいプロファイルを有効にすることをお勧めします。現時点ではまだ、サーバーにSSLを設定していないため、ポート80のトラフィックのみを許可すればよいでしょう。

# sudo ufw allow ‘Apache’
# sudo ufw status

Status: active

To Action From
— —— —-
OpenSSH ALLOW Anywhere
Apache ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache (v6) ALLOW Anywhere (v6)

# sudo systemctl status apache2

● apache2.service – The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2023-03-12 16:48:38 JST; 3min 40s ago
Docs: https://httpd.apache.org/docs/2.4/
Process: 11950 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
Main PID: 11954 (apache2)
Tasks: 6 (limit: 2317)
Memory: 10.6M
CPU: 42ms
CGroup: /system.slice/apache2.service
tq11954 /usr/sbin/apache2 -k start
tq11955 /usr/sbin/apache2 -k start
tq11956 /usr/sbin/apache2 -k start
tq11957 /usr/sbin/apache2 -k start
tq11958 /usr/sbin/apache2 -k start
mq11959 /usr/sbin/apache2 -k start

Mar 12 16:48:38 x162-43-16-223 systemd[1]: Starting The Apache HTTP Server…
Mar 12 16:48:38 x162-43-16-223 systemd[1]: Started The Apache HTTP Server.

MySqlサーバーをインストール

# sudo apt install mysql-server
# mysql –version

phpMyAdminのインストール
# sudo apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl

★下記をインストールしないとphpmyadminは動作しない★

最後に SQLite/UbuntuにSQLite3をインストール
以下の通り、SQLite3(sqlite3)で始まるパッケージをapt-cacheコマンドで検索します。
# apt-cache search sqlite3 | grep ^sqlite3
sqlite3 – Command line interface for SQLite 3
sqlite3-doc – SQLite 3 documentation
sqlite3-pcre – Perl-compatible regular expression support for SQLite
sqlite3-tools – Command line interface for SQLite 3 (tools)

上記の操作によりsqlite3のパッケージ名が確認できました。
以下のコマンドでsqlite3のインストールができます。

# sudo apt-get install -y sqlite3

以下のコマンドにより、sqlite3コマンドが/usr/binにインストールされていることが確認できます。
# which sqlite3
/usr/bin/sqlite3
# sudo systemctl restart apache2
バックグラウンド ジョブの設定

バックグラウンド ジョブの設定
システムの crontab に次の行を挿入します。
以下の cron ジョブを実行するタイミングは推奨されるものであり、必要に応じて変更できます。

 

* * * * * /usr/bin/php -q /home/ubuntu/okmail/artisan schedule:run 2>&1

# systemctl restart cron

ユーザーのパスワード変更
# sudo passwd ubuntu

PHPアドミンのアクセス制限をする

/etc/phpmyadmin のapache.conf を

下記を追加する
———————————————————
order deny,allow
deny from all
allow from ***.***.***.***
————————————————————-
***.***.***.*** ← この部分は固定IPアドレスを設定

—- 以下がapache.conf の内容

# phpMyAdmin default Apache configuration

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
Options SymLinksIfOwnerMatch
DirectoryIndex index.php

order deny,allow
deny from all
allow from ***.***.***.***

# limit libapache2-mod-php to files and directories necessary by pma
<IfModule mod_php7.c>
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/usr/share/doc/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/:/usr/share/javascript/
</IfModule>

</Directory>

# Disallow web access to directories that don’t need it
<Directory /usr/share/phpmyadmin/templates>
Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
Require all denied
</Directory>

———————— ここまで apache.conf 内容

http://okmail.jp/phpmyadmin/

# sudo mysql

mysql>ALTER USER ‘root’@’localhost’ IDENTIFIED WITH caching_sha2_password BY ‘password’;

mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘password’;

これで phpMyAdmin にログイン出来ます。
http://okmail.jp/phpmyadmin/

コマンドでSQLにログインする場合は下記になる

# mysql -uroot -p

文字コードをUTF8にする
mysql> CHARSET utf8;

データーベースを見る
mysql> show databases;

+——————–+
| Database |
+——————–+
| information_schema |
| mysql |
| performance_schema |
| phpmyadmin |
| sys |
+——————–+
5 rows in set (0.00 sec)

mysql>

SSLサーバー証明書の設定

ステップ1— Cerbotのインストール

# sudo apt install certbot python3-certbot-apache

# sudo nano /etc/apache2/sites-available/your_domain.com.conf

下記を記入

<VirtualHost *:80>
ServerAdmin support@your_domain.com
ServerName your_domain.com
ServerAlias your_domain.com
DocumentRoot /var/www/your_domain.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

ここまで

関連記事

TOP