Armbian の LAMP化 まとめ

投稿者: | 2018年2月16日

昨日、“NanoPi NEO”をLAMPサーバとして運用している記事を書いたので、関連してLAMPサーバの構築手順をまとめました。

LAMPサーバ

LAMPは「OS・Webサーバ・データベース・言語」の頭文字から成る造語です。
サーバという名が示すとおり、サービスを提供する側のコンピュータになります。

頭文字 今回使用したパッケージなど
L Linux
A Apache
M MariaDB
P PHP

準備

今回はOSにArmbianを使うことにしたので、公式サイトからアーカイブされたイメージファイルをダウンロードします。

Armbian Downloadサイトには、”Ubuntu Server”と”Debian Server”がありますが、どちらもステータスがTestingとなっています。
安定版は、その下にある「other download options and archive」リンクから、official download archiveに移動した先から取得できます。
※ファイル名に”next”の無いものが安定板(stable)です

ファイルをダウンロードして解凍後にmicroSDに書き込みます。
そのmicroSDを”NanoPi NEO”に挿入後、通電するとDHCPサーバからIPを取得して起動します。

設定

IP設定

今回はサーバ用途なので、最初にIPアドレスを固定化します。

アップデート

# apt update
# apt upgrade

導入

PHP 7

検索(apt-cache search php)すると、先頭に”php7.0-“が付くものもヒットしますが、”php-“で問題ありません。
現状、どちらを選んでもPHPのバージョンは”7.0″になりました。

導入例

$ sudo apt-get install php php-bcmath php-bz2 php-cgi php-cli php-common php-crypt-blowfish php-crypt-cbc php-crypt-chap php-crypt-gpg php-cssmin php-curl php-date php-db php-dev php-email-validator php-fpdf php-gd php-http-request2 php-intl php-json php-log php-markdown php-mbstring php-mcrypt php-mime-type php-mysql php-odbc php-pager php-pdfparser php-pear php-pgsql php-phpdbg php-sqlite3 php-xml php-zip pkg-php-tools adminer cacti cacti-spine composer

The following NEW packages will be installed:
adminer cacti cacti-spine composer dbconfig-common dbconfig-mysql debhelper dh-strip-nondeterminism fontconfig fontconfig-config
fonts-dejavu-core gettext gettext-base gnupg-agent gnupg2 intltool-debian jsonlint libaio1 libarchive-zip-perl libasprintf0v5 libassuan0
libcairo2 libcroco3 libcurl3 libdatrie1 libdbi1 libfile-stripnondeterminism-perl libfontconfig1 libfreetype6 libgd3 libgraphite2-3
libharfbuzz0b libjbig0 libjpeg-turbo8 libjpeg8 libjs-jquery libjs-jquery-cookie libjs-jquery-ui libjs-jquery-ui-theme-ui-lightness
libksba8 libltdl7 libmcrypt4 libnpth0 libodbc1 libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpcre16-3 libpcre3-dev libpcre32-3
libpcrecpp0v5 libphp-adodb libpixman-1-0 libpq5 librrd4 libsnmp-base libsnmp30 libthai-data libthai0 libtiff5 libtimedate-perl libtool
libunistring0 libvpx3 libx11-6 libx11-data libxau6 libxcb-render0 libxcb-shm0 libxcb1 libxdmcp6 libxext6 libxpm4 libxrender1 libxslt1.1
libzip4 mysql-client mysql-client-5.7 mysql-client-core-5.7 php php-bcmath php-bz2 php-cgi php-cli php-cli-prompt php-composer-semver
php-composer-spdx-licenses php-console-commandline php-crypt-blowfish php-crypt-cbc php-crypt-chap php-crypt-gpg php-cssmin php-curl
php-date php-db php-dev php-doctrine-lexer php-email-validator php-fpdf php-gd php-http-request2 php-intl php-json php-json-schema
php-log php-markdown php-mbstring php-mcrypt php-mime-type php-mysql php-net-url2 php-odbc php-pager php-pdfparser php-pear php-pgsql
php-phpdbg php-snmp php-sqlite3 php-symfony-console php-symfony-filesystem php-symfony-finder php-symfony-process php-tcpdf php-xml
php-zip php7.0 php7.0-bcmath php7.0-bz2 php7.0-cgi php7.0-curl php7.0-dev php7.0-gd php7.0-intl php7.0-mbstring php7.0-mcrypt
php7.0-mysql php7.0-odbc php7.0-pgsql php7.0-phpdbg php7.0-snmp php7.0-sqlite3 php7.0-xml php7.0-zip pinentry-curses pkg-php-tools
po-debconf rrdtool shtool snmp

※php-cgiなど当面使う予定のないものも入れているのでお好みで

Apache 2

導入例

$ sudo apt-get install apache2 libapache2-mod-php

The following NEW packages will be installed:
apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php libapache2-mod-php7.0 libapr1 libaprutil1 libaprutil1-dbd-sqlite3
libaprutil1-ldap liblua5.1-0 php-common php7.0-cli php7.0-common php7.0-json php7.0-opcache php7.0-readline

base on http://php.net/manual/ja/install.unix.debian.php

Apache 2 と統合する場合は libapache2-mod-php、PEAR を使う場合は php-pear などの関連パッケージが必要となることを知っておきましょう。

設定

初回は、設定ファイルの内容を読み込ませます。

Apache 階層構造

apache2ディレクトリ以下は以下のようになっています。

$ ls /etc/apache2/
apache2.conf    conf-enabled  magic           mods-enabled  sites-available
conf-available  envvars       mods-available  ports.conf    sites-enabled

apache2.conf ファイルの説明要約

base on /etc/apache2/apache2.conf

This is because Debian’s default Apache2 installation attempts to make adding and removing modules, virtual hosts, and extra configuration directives as flexible as possible, in order to make automating the changes and administering the server as easy as possible.

It is split into several files forming the configuration hierarchy outlined below, all located in the /etc/apache2/ directory:

DebianのデフォルトのApache2インストールでは、変更の反映を自動化し、サーバをできるだけ簡単に管理するために、モジュール・仮想ホスト・追加設定ディレクティブの追加と削除を可能な限り柔軟に行います。

/etc/apache2/ ディレクトリにある以下の構成階層を構成するいくつかのファイルに分割されています。

/etc/apache2/
|-- apache2.conf
|       |--  ports.conf
|-- mods-enabled
|       |-- *.load
|       |-- *.conf
|-- conf-enabled
|       |-- *.conf
|-- sites-enabled
|-- *.conf

apache2.conf is the main configuration file (this file).
It puts the pieces together by including all remaining configuration files when starting up the web server.

apache2.confはメイン設定ファイル(このファイル)です。
Webサーバの起動時に残りの構成ファイルをすべて含めることで、これらの要素をまとめます。

ports.conf is always included from the main configuration file.
It is supposed to determine listening ports for incoming connections which can be customized anytime.

ports.confは常にメインの設定ファイルに含まれています。
いつでもカスタマイズできる着信接続のリスニングポートを決定することになっています。
(デフォルトは80番、443番ポート)

Configuration files in the mods-enabled/, conf-enabled/ and sites-enabled/ directories contain particular configuration snippets which manage modules, global configuration fragments, or virtual host configurations, respectively.

mods-enabled/、conf-enabled/ および sites-enabled/ ディレクトリの設定ファイルには、それぞれモジュール、グローバル設定の断片、または仮想ホストの設定を管理する特定の設定スニペットが含まれています。

They are activated by symlinking available configuration files from their respective *-available/ counterparts.
These should be managed by using our helpers a2enmod/a2dismod, a2ensite/a2dissite and a2enconf/a2disconf.
See their respective man pages for detailed information.

これらのファイルは、使用可能な構成ファイルをシンボリックリンクすることで有効になります。
これらは、a2enmod/a2dismod、a2site/a2dissite、a2enconf/a2disconf ヘルパーを使用して管理する必要があります。
詳細はそれぞれのマニュアルページを参照してください。

The binary is called apache2.
Due to the use of environment variables, in the default configuration, apache2 needs to be started/stopped with /etc/init.d/apache2 or apache2ctl.
Calling /usr/bin/apache2 directly will not work with the default configuration.

バイナリはapache2と呼ばれます。
環境変数を使用するため、デフォルト設定では、/etc/init.d/apache2またはapache2ctlを使用してapache2を起動または停止する必要があります。
/usr/bin/apache2 を直接呼び出すことは、デフォルトではできません。

意訳

以下のように、*-enabled と *-available が対になっています。

/etc/apache2/apache2.conf 有効化設定 利用可能な設定 有効化 / 無効化コマンド
下記以外の設定ファイル conf-enabled conf-available a2enconf / a2disconf
モジュールの設定ファイル mods-enabled mods-available a2enmod / a2dismod
仮想ホストの設定ファイル sites-enabled sites-available a2ensite / a2dissite

Apacheは起動時に、*-enabledなどに設定された内容を読み込みます。

設定反映
$ sudo a2enconf *
Conf charset already enabled
Conf localized-error-pages already enabled
Conf other-vhosts-access-log already enabled
Enabling conf php7.0-cgi.
Conf security already enabled
Conf serve-cgi-bin already enabled
To activate the new configuration, you need to run:
  service apache2 reload

MariaDB

導入例

$ sudo apt-get install mariadb-server mycli

The following NEW packages will be installed:
libdbd-mysql-perl libdbi-perl libreadline5 libterm-readkey-perl mariadb-client-10.0 mariadb-client-core-10.0 mariadb-common
mariadb-server mariadb-server-10.0 mariadb-server-core-10.0 mycli python3-click python3-colorama python3-configobj python3-crypto
python3-prompt-toolkit python3-pygments python3-pymysql python3-six python3-sqlparse python3-wcwidth