1. 記事一覧 >
  2. ブログ記事
category logo

Ubuntu 20.04.2.0にapache2,php,postgresqlをインストール

(更新) (公開)

はじめに

Ubuntu 20.04.2.0(Desktop)

・Apache 2.4.41
・PHP 8.0.3
・PostgreSQL 12.6
インストールを行います。
作業時期は、2021年4月ですので、
時期によっては、バージョンが異なっていたり、
うまくいかなかったりするかもしれません。


apache2インストール

# apt update

unattended-upgrades が既に80番ポートを使っているため、killしました。
unattended-upgrades は、Ubuntuの無人アップグレード機能です。

# ps ax | grep unattended
    778 ?        Ssl    0:00 /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal
   1780 pts/0    S+     0:00 grep --color=auto unattended
# kill 778

# apt install apache2
Do you want to continue? [Y/n] Y(or エンター)

※以降基本的にYのため、-yを付けます。
 -y は、? [Y/n] のようなときに自動的に Y とするオプションです。


【パッケージ管理コマンド aptとapt-getの違い】

Debian管理者ハンドブックによると「aptはapt-getの持っていた設計上のミスを克服しています」と記載されています。

Ubuntuにおいては、バージョン14.04よりaptコマンドの使用が推奨されています。

よって、aptを使うのが正解になります。

参考記事


OS 起動時の apt update と unattended-upgrade を抑制

不要と思ってやっただけで、必須ではありません。

# systemctl edit apt-daily.timer
# systemctl edit apt-daily-upgrade.timer

どちらも次の内容で保存

[Timer]
Persistent=false

→CTRL+0, エンター, CTRL+X

# systemctl daemon-reload

※恒久的に削除する場合

# apt remove unattended-upgrades

postgresqlインストール

# apt -y install postgresql postgresql-contrib

postgresql-contribは、pgbenchなどの便利ツール群です。


# mkdir /var/lib/postgresql/data
# chown postgres:postgres /var/lib/postgresql/data
# su - postgres
$ /usr/lib/postgresql/12/bin/initdb --encoding='UTF-8' -D /var/lib/postgresql/data
$ exit

phpインストール

# apt -y install software-properties-common

software-properties-commonについて調べると、

「このソフトウェアは、使用されているaptリポジトリの抽象化を提供します。これにより、ディストリビューションと独立したソフトウェアベンダーのソフトウェアソースを簡単に管理できます。」

とあり、いまいち良く分かりませんでしたが・・・要するに、software-properties-common→いろいろインストールされる→この後必要な add-apt-repository が使えるようになるから必要な手順になります。

サードパーティ製の Ubuntu 非公式のリポジトリの情報を Ubuntu に教えたい場合には、add-apt-repository コマンドを使ってリポジトリ情報を追加することができます。


ppa:ondrej/phpリポジトリを追加します。

# add-apt-repository ppa:ondrej/php
Press [ENTER] to continue or Ctrl-c to cancel adding it.

ppaとは、Personal Package Archives の略で、個人が作成したパッケージとそれを保管する場所の意味です。

ondrejは、オンドレイ(アンドレア?)さんです。


# apt update
# apt -y install php8.0 php8.0-gd php8.0-mbstring php8.0-common

php-pgsql対応

# apt -y install php8.0-pgsql

php-curl対応

# apt -y install curl
# apt -y install php8.0-curl

バージョン確認

# php -v
PHP 8.0.3 (cli) (built: Mar  5 2021 07:54:13) ( NTS )

# apache2 -v
Server version: Apache/2.4.41 (Ubuntu)

# su - postgres -c "/usr/lib/postgresql/12/bin/postmaster -V"
postgres (PostgreSQL) 12.6 (Ubuntu 12.6-0ubuntu0.20.04.1)

# curl -V
curl 7.68.0 (x86_64-pc-linux-gnu) libcurl/7.68.0 OpenSSL/1.1.1f zlib/1.2.11 brotli/1.0.7 libidn2/2.2.0 libpsl/0.21.0 (+libidn2/2.2.0) libssh/0.9.3/openssl/zlib nghttp2/1.40.0 librtmp/2.3

インストールできました!


phpが動作して、postgresqlの機能が組み込まれていることを確認します。


info.php作成

# vi /var/www/html/info.php
<?php
  phpinfo();
?>

初期設定では、<?php か <?= から始めないとphpプログラムと認識されません。

php.ini が short_open_tag = On の場合、<? から始めてもOKになります。

なお、phpのコードだけの場合、最後の ?> は有っても無くても構いません。


phpのエラーを非表示から表示するに変更

# vi /etc/php/8.0/apache2/php.ini
display_errors = On
display_startup_errors = On

apache再起動

# service apache2 restart

http://192.168.xxx.xxx/info.php
でアクセスします。
あるいは、UbuntuのGUIから
http://localhost/info.php
です。

info.php


PostgreSQLが組み込まれています。
成功です!


【phpのエラー】

phpのエラーは、何も設定変更していない現在の場合、

/var/log/apache2/error.log

[php:error]・・・

で出力されました。


ちなみに応答ヘッダを見てみますと・・・

# curl --head http://localhost/info.php
HTTP/1.1 200 OK
Date: Tue, 13 Apr 2021 13:53:44 GMT
Server: Apache/2.4.41 (Ubuntu)
Content-Type: text/html; charset=UTF-8

Server: ヘッダからPHPの存在が分からず、
X-Powered-By ヘッダは付きません。

loading...