HOME
  Security
   Software
    Hardware
  
FPGA
  CPU
   Android
    Raspberry Pi
  
nLite
  Xcode
   etc.
    ALL
  
LINK
BACK
 

2017/08/11

Raspberry Piに LAMP構成の Apache MySQL PHP Perl phpMyAdminの Webサーバを構築する方法 Raspberry Piに LAMP構成の Apache MySQL PHP Perl phpMyAdminの Webサーバを構築する方法

(ラズパイで一般的な Webサービスを動かす場合に必要なアプリが入った LAMP stackを構築)

Tags: [Raspberry Pi], [電子工作]





● Raspberry Pi 3 Model Bを遂に購入

 Raspberry Pi3 Model B RPI2 RPI3

 大人気の CPUボードの Raspberry Piに WiFiと Bluetoothが搭載されたモデルが新発売となりました。
 以前から Raspberry Pi 2を買おうかどうか迷っていましたが、Raspberry Pi 3 Model Bの発売を機に購入を決意してラズベリアンになる事にしました。

 ※ ラズパイの OS Raspbianはバージョンが上がる毎に過去の版と OSの内部の作りが変わり、過去に書かれた製作記事(例えば Raspbian Wheezyの時代の記事)がそのままではエラーが出たりして動かない事が有ります。
 ※ 当方のホームページのラズパイ記事は全て Raspberry Pi 3 Model Bと Raspbian Jessieの組み合わせで動作確認をしております。
(ただし、将来的に新しい Raspbian OSが出た場合に、当方の Raspbian Jessieを基にした内容がそのままでは動かない可能性が有ります。)
 ※ 2017/08/16から Raspbian OSは Raspbian Jessieから Raspbian Stretchに変わりました。
 ※ 2019/06/20から Raspbian OSは Raspbian Stretchから Raspbian Busterに変わりました。

Download Raspbian for Raspberry Pi

ちなみに、歴代のバージョンと名称は
Debianコードネーム年月備考(参考)Ubuntuでの該当名称
Debian 11Bullseye2021/08/14~2021/11からラズパイにリリースFocal Fossa 20.04 LTS ?
Debian 10Buster2019/06/20~2019/06からラズパイ4対応Bionic 18.04 LTS
Debian 9Stretch2017/08/16~2018/03からラズパイ3B+対応Xenial 16.04 LTS
Debian 8Jessie2015~2016/02からラズパイ3対応Trusty 14.04 LTS
Debian 7Wheezy2013~2016
Debian 6.0Squeeze2011~2014
Debian GNU/Linux 5.0Lenny2009~2012


●ラズパイで LAMP構成の Webサーバを構築する方法

 使用した Raspbian OSのバージョン
pi@raspberrypi:~ $ uname -a
Linux raspberrypi 4.9.41-v7+ #1023 SMP Tue Aug 8 16:00:15 BST 2017 armv7l GNU/Linux

pi@raspberrypi:~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 9.1 (stretch)
Release:        9.1
Codename:       stretch


●ラズパイで LAMP構成の Webサーバを構築する方法

 LAMP = Linux Apache MySQL PHP Perlの頭文字を取ったもの。
 一般的な Webサービスを動かす場合に必要なアプリケーション一式が揃った Webサーバを構築できます。

 LAMP
 L = Linux
 A = Apache Webサーバ(Apache2)
 M = MariaDB、MySQL
 P = for PHP、Perl、Python
LAMP (ソフトウェアバンドル)

 同様に XAMPP(ザンプ)が有りますが、LAMPの Lの Linuxに対して Windowsや macOS等も含んだ X(クロスプラットフォームの意味)に置き換えただけで中身的には同じです。
 なお、XAMPP(ザンプ)の公式ページでは x86系 CPUのインストールイメージのみ提供しているので、CPUが ARM系のラズパイ用のインストールモジュールは有りません。

XAMPP Apache + MariaDB + PHP + Perl
 XAMPP とは? - XAMPP は最も人気のある PHP 開発環境です
 XAMPPは Pの文字が 1文字多く、PHPと Perlを明示的に分けています。
 ・X - Windows、Linux、macOS、Solarisのクロスプラットフォーム
 ・A - Apacheの A
 ・M - MySQLまたは MariaDBの M
 ・P - PHPの P
 ・P - Perlの P

 ちなみに LAMPの macOS版(macOS専用)は MAMPと言います。LAMPの先頭の Lが Macなので Mになっています。
MAMP: My Apache - MySQL - PHP For macOS and Windows
 What's new in MAMP 4.0 for Mac?
 最近は Windows用も提供していて、MAMPの Mは Macでは無く My(私の)を意味付けています。


●おまけ: 軽量な Webサーバ Lighttpdをラズパイにインストールする方法

 下記にまとめました。

2017/08/11
Raspberry Piに LLMP Lighttpd + MySQL + PHP + Perl 構成の Webサーバを構築する方法
Raspberry Piに LLMP Lighttpd + MySQL + PHP + Perl 構成の Webサーバを構築する方法

  ラズパイで Webサービスを動かす、Lighttpd + PHP + Perl + Python + Ruby CGIの LLMP stackを構築


●おまけ: 軽量な Webサーバ nginxをラズパイにインストールする方法

 下記にまとめました。

2017/08/11
Raspberry Piに nginx + MySQL + PHP + Perl 構成の LEMP Webサーバを構築する方法
Raspberry Piに nginx + MySQL + PHP + Perl 構成の LEMP Webサーバを構築する方法

  ラズパイで Webサービス LEMP Stackを構築、nginx + PHP + Perl(UNIXドメインソケット方式)


● ラズパイを意識した別物製品 Orange Pi PC 2でも同じ手順で LAMPサーバを構築できました。

 下記にまとめました。

2017/03/28
Orange Pi PC 2を買ってみた、Allwinner H5 Cortex-A53 4core ARM64
Orange Pi PC 2を買ってみた、Allwinner H5 Cortex-A53 4core ARM64

  ラズパイを意識した別物製品、オレンジパイはラズパイよりもコスパが良い、でも情報が無い


● Raspberry Piで LAMPPを導入する

 Raspberry Pi 3に Webサーバ機能一式 Apache2、MySQL、PHP、Perlをインストーする
 いわゆる LAMPP構成(LAMP)の Webサーバの環境を構築します。

・ uname -aで環境を確認する。
 (RASPBIAN STRETCH WITH DESKTOP Release date:2017-08-16)
uname -a
Linux raspberrypi 4.9.41-v7+ #1023 SMP Tue Aug 8 16:00:15 BST 2017 armv7l GNU/Linux

・ perl -vで Perl言語のバージョンを確認する。
 (Perl言語は Raspbian OSに最初から入っています)
perl -v
This is perl 5, version 24, subversion 1 (v5.24.1) built for arm-linux-gnueabihf-thread-multi-64int
(with 73 registered patches, see perl -V for more detail)

・ とりあえず、apt-get updateでリポジトリの管理情報を最新に更新します。
 apt-get updateはラズパイで apt-getする際に事前に行なうお約束のコマンドと思って良いでしょう。
# ラズパイお約束のコマンド
sudo apt-get update

・ 最初に Webサーバである Apache2をインストールします。
#=======
# Apache/2.4.25 (Raspbian) Server built: 2017-07-18T18:37:33
sudo apt-get -y install apache2

# apache2 -vでバージョンを確認する。
# $ apache2 -v
# Server version: Apache/2.4.25 (Raspbian)
# Server built:   2017-07-18T18:37:33
 この段階で、下記に記載の
 ・「Webサーバの内容をブラウザで表示する。HTML編」
 ・「cgi(Perl)を Webサーバで実行する。Perl cgi編」
 ・「cgi(Python)を Webサーバで実行する。Python cgi編」
 の確認ができます。

・Webサーバの内容をブラウザで表示する。HTML編
Webサーバの内容をブラウザで表示する。HTML編



・ PHP言語である PHP 7をインストールします。
#=======
# PHP 7.0.19-1 (cli) (built: May 11 2017 14:04:47)
sudo apt-get -y install php php-dev php-fpm php-gd

# php -vでバージョンを確認する。
# $ php -v
# PHP 7.0.19-1 (cli) (built: May 11 2017 14:04:47) ( NTS )
# Copyright (c) 1997-2017 The PHP Group
# Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
#     with Zend OPcache v7.0.19-1, Copyright (c) 1999-2017, by Zend Technologies
 この段階で、下記に記載の「PHPを Webサーバで実行する。PHP編」の確認ができます。


・ php-mysqlをインストール php7.0-mysql (7.0.19-1)
 名前からすると PHPから MySQLを簡単に操作できるライブラリっぽい。
#=======
# php-mysql
sudo apt-get -y install php-mysql

# NOTICE: Not enabling PHP 7.0 FPM by default.
# NOTICE: To enable PHP 7.0 FPM in Apache2 do:
# NOTICE: a2enmod proxy_fcgi setenvif
# NOTICE: a2enconf php7.0-fpm
# NOTICE: You are seeing this message because you have apache2 package installed.
# Setting up php-mysql (1:7.0+49) ...

# PHP 7.0 FPMを有効にする。
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.0-fpm
sudo systemctl reload apache2

2020年 1月追記
 パッケージ名が php7.0-fpmから php7.3-fpmに変わりました。
# PHP 7.3 FPMを有効にする。
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.3-fpm
sudo systemctl reload apache2

・ データベースサーバの MySQL/ MariaDBをインストールします。
 MariaDBは MySQLから派生した「妹分」の様なもの。
#=======
# MySQL(MariaDB)
# mysql Ver 15.1 Distrib 10.1.23-MariaDB
# mysqld Ver 10.1.23-MariaDB-9+deb9u1
sudo apt-get -y install mysql-server

# $ mysqld -V
# mysqld  Ver 10.1.23-MariaDB-9+deb9u1 for debian-linux-gnueabihf on armv7l (Raspbian 9.0)
# $ mysql -V
# mysql  Ver 15.1 Distrib 10.1.23-MariaDB, for debian-linux-gnueabihf (armv7l) using readline 5.2

# 以前は apt-get install mysql-serverのインストール途中で rootパスワードを設定しましたが、現在はインストール途中で聞いて来なくなりました。
# sshコンソールから MySQLに rootでログインする場合は、下記の操作でできます。
# sudo mysql -u root mysql
# または、
# sudo mysql --user=root mysql

2020年 1月追記
 パッケージ名が mysql-serverから mariadb-serverに変わりました。
pi@raspberrypi:~ $ sudo apt -y install mysql-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package mysql-server is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
However the following packages replace it:
  mariadb-server-10.0

E: Package 'mysql-server' has no installation candidate

# パッケージ名が mysql-serverから mariadb-serverに変わりました。
pi@raspberrypi:~ $ sudo apt -y install mariadb-server
Setting up mariadb-client-10.3 (1:10.3.17-0+deb10u1) ...
Setting up mariadb-server-10.3 (1:10.3.17-0+deb10u1) ...

# パッケージ名が mariadb-serverに変わっても、コマンド名は mysqld、mysqlのままです。
pi@raspberrypi:~ $ mysqld -V
mysqld  Ver 10.3.17-MariaDB-0+deb10u1 for debian-linux-gnueabihf on armv7l (Raspbian 10)

pi@raspberrypi:~ $  mysql -V
mysql  Ver 15.1 Distrib 10.3.17-MariaDB, for debian-linux-gnueabihf (armv7l) using readline 5.2

・ phpMyAdmin MySQLサーバーをブラウザ経由で管理するアプリ
 ブラウザ経由で MySQLを管理する必要が無ければインストール不要です。
# phpMyAdmin MySQLサーバーをブラウザ経由で管理するアプリ
# phpMyAdmin バージョン情報: 4.6.6deb4
sudo apt-get -y install phpmyadmin

# インストールの途中で質問のダイアログが表示されます。
# Web server to reconfigure automatically: - [*] Apache2 - <Ok>
# Configuring phpmyadmin - <Ok>
# Configure database - <Yes>
# MySQL application password for phpmyadmin: - パスワード(任意)
# Password confirmation: - 確認用パスワード(上で入力したの同じ)
# ※ phpMyAdminのユーザー名は phpmyadminです。

# 下記の URLをブラウザでアクセスします
# http://{ラズパイの IPアドレス}/phpmyadmin/
# http://raspberrypi.local/phpmyadmin/
 この段階で、下記に記載の「phpMyAdmin MySQLサーバー管理アプリにログインする」の確認ができます。

・phpMyAdmin MySQL web client Configure setting
phpMyAdmin MySQL web client Configure setting
 phpMyAdminの Web server to reconfigure automaticallyの設定は下記の様にします。
 ・Apache2の場合 - Apache2に*マーク
 ・lighttpdの場合 - lighttpdに*マーク
 ・nginxの場合 - 両方とも*マーク無しで <Ok>で進む。
・phpMyAdmin MySQL web client Configure setting
phpMyAdmin MySQL web client Configure setting


・phpMyAdmin MySQL web client Configure setting
phpMyAdmin MySQL web client Configure setting


・phpMyAdmin MySQL web client Configure setting
phpMyAdmin MySQL web client Configure setting


・phpMyAdmin MySQL web client Configure setting
phpMyAdmin MySQL web client Configure setting



・ PerlMagick ImageMagickの perl版
 ゴリゴリ画像処理をする必要が無ければインストール不要です。
#=======
# PerlMagick ImageMagickの perl版
# ImageMagickは画像を操作したり表示したりするためのソフトウェア集合体
sudo apt-get -y install perlmagick


● Webサーバの内容をブラウザで表示する。HTML編

 パソコンでブラウザを開いて、URL欄に下記を入力します。
http://{ラズパイの IPアドレス}/
または、
http://raspberrypi.local/

・Webサーバの内容をブラウザで表示する。HTML編
Webサーバの内容をブラウザで表示する。HTML編
You should replace this file (located at /var/www/html/index.html)
 と言う事で、ラズパイの SDカード内の
/var/www/html/index.html
 のファイルが見えています。

sudo rm /var/www/html/index.html
 でファイルを消して、
sudo nano /var/www/html/index.html
 でファイルを編集します。
HTML test

 編集したら、パソコンのブラウザで Ctrl + F5キーでキャッシュをクリアして再読み込みをします。

・Webサーバの内容をブラウザで表示する。HTML編
Webサーバの内容をブラウザで表示する。HTML編


・Webサーバの内容をブラウザで表示する。HTML編
Webサーバの内容をブラウザで表示する。HTML編
 ブラウザの表示が書き換えた内容に変わりました。


sudo nano /var/www/html/html_test.html
 で HTMLファイルを新規に作成します。
HTML test 2

 編集したら、パソコンのブラウザの URL欄に下記を入力します。
http://{ラズパイの IPアドレス}/html_test.html
または、
http://raspberrypi.local/html_test.html
 ブラウザに html_test.htmlの内容が表示されます。


● cgi(Perl)を Webサーバで実行する。Perl cgi編

 先ず Apache2で cgiが動作する様に幾つかの Apache2の設定ファイルを設定します。
 なお、下記の設定が cgiを動かす為の最低限のものになります。
 その場合、cgiファイルを配置するディレクトリは /usr/lib/cgi-bin/に限定され、cgiにアクセスする場合の URLパスは http://{ラズパイの IPアドレス}/cgi-bin/hogehoge.cgiの様に限定されます。

または、
http://raspberrypi.local/cgi-bin/hogehoge.cgi

・ cgi.loadファイルの設定。
 シンボリックリンクを /etc/apache2/mods-enabled/cgi.loadに設定して cgi.loadを有効にします。
sudo ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/cgi.load

・ 000-default.confファイルの書き換え。(この設定は不要)
 /etc/apache2/sites-available/000-default.confファイルの serve-cgi-bin.confの参照を有効にします。
 Include文の先頭の #(コメント文字)を取ります。
# (この設定は不要)
cat /etc/apache2/sites-available/000-default.conf | grep cgi
  #Include conf-available/serve-cgi-bin.conf

# sedコマンドで文字列置換で書き換えます。(#文字を取り除く)
sudo sed -i -e "s/#Include conf-available\/serve-cgi-bin.conf/Include conf-available\/serve-cgi-bin.conf/g" /etc/apache2/sites-available/000-default.conf

・ mime.confファイルの書き換え。(この設定は不要)
 /etc/apache2/mods-enabled/mime.confファイルの AddHandler cgi-scriptを有効にします。
 AddHandler文の先頭の #(コメント文字)を取ります。
# (この設定は不要)
cat /etc/apache2/mods-enabled/mime.conf | grep cgi
  #AddHandler cgi-script .cgi

# sedコマンドで文字列置換で書き換えます。(#文字を取り除く)
sudo sed -i -e "s/#AddHandler cgi-script .cgi/AddHandler cgi-script .cgi/g" /etc/apache2/mods-enabled/mime.conf

・ Apache Webサーバを再起動する。
 設定ファイルを書き換えたので Apache Webサーバを再起動します。
sudo service apache2 reload
 か
sudo service apache2 restart

・ テスト用の cgiファイル test_perl_cgi.cgiを用意する。
 テスト用の cgiファイルを /usr/lib/cgi-bin/に配置します。
 ※ .cgiファイルを配置するディレクトリは /usr/lib/cgi-bin/に限定されます。
ls -l /usr/lib/cgi-bin/
# total 0

# sudoを付けないと保存できません。
sudo nano /usr/lib/cgi-bin/test_perl_cgi.cgi
~~~ ↓ここから ~~~
#!/usr/bin/perl

print "Content-type:text/plain\n\n";
print "Test Perl CGI";
~~~ ↑ここまで ~~~

# cgi(実行ファイル)なので chmod +xで実行権限を付与します。
# 実行権限を付与していないと Internal Server Error 500となります。
sudo chmod +x /usr/lib/cgi-bin/test_perl_cgi.cgi

ls -l /usr/lib/cgi-bin/
# -r-x---r-x 1 root root 73 Aug  7 04:54 test_perl_cgi.cgi
# r-x---r-xの xで実行権限の付与を確認。

 パソコンでブラウザを開いて、URL欄に下記を入力します。
 ※ 上記の設定では cgiにアクセスする場合の URLパスは http://{ラズパイの IPアドレス}/cgi-bin/hogehoge.cgiの様に限定されます。
http://{ラズパイの IPアドレス}/cgi-bin/test_perl_cgi.cgi
または、
http://raspberrypi.local/cgi-bin/test_perl_cgi.cgi

・cgi(Perl)を Webサーバで実行する。Perl cgi編
cgi(Perl)を Webサーバで実行する。Perl cgi編


・cgi(Perl)を Webサーバで実行する。Perl cgi編
cgi(Perl)を Webサーバで実行する。Perl cgi編




● cgi(Python)を Webサーバで実行する。Python cgi編

・ mime.confファイルの書き換え。(この設定は不要)
 /etc/apache2/mods-enabled/mime.confファイルの AddHandler cgi-scriptに .pyを付け加える。
# (この設定は不要)
cat /etc/apache2/mods-enabled/mime.conf | grep cgi
#  AddHandler cgi-script .cgi
# .pyを付け加える
#  AddHandler cgi-script .cgi .py

# sedコマンドで文字列置換で書き換えます。(.pyを付け加える)
sudo sed -i -e "s/AddHandler cgi-script .cgi/AddHandler cgi-script .cgi .py/g" /etc/apache2/mods-enabled/mime.conf

# Apache Webサーバを再起動する。
sudo service apache2 restart

・ テスト用の cgiファイル test_python_cgi.pyを用意する。
 テスト用の pyファイルを /usr/lib/cgi-bin/に配置します。
 ※ .pyファイルを配置するディレクトリは /usr/lib/cgi-bin/に限定されます。
sudo nano /usr/lib/cgi-bin/test_python_cgi.py
~~~ ↓ここから ~~~
#!/usr/bin/python

print "Content-type: text/html"
print
print "Test Python CGI"
~~~ ↑ここまで ~~~

# cgi(実行ファイル)なので chmod +xで実行権限を付与します。
# 実行権限を付与していないと Internal Server Errorとなります。
sudo chmod +x /usr/lib/cgi-bin/test_python_cgi.py
 パソコンでブラウザを開いて、URL欄に下記を入力します。
 ※ 上記の設定では cgiにアクセスする場合の URLパスは http://{ラズパイの IPアドレス}/cgi-bin/hogehoge.pyの様に限定されます。
http://{ラズパイの IPアドレス}/cgi-bin/test_python_cgi.py
または、
http://raspberrypi.local/cgi-bin/test_python_cgi.py

・cgi(Python)を Webサーバで実行する。Python cgi編
cgi(Python)を Webサーバで実行する。Python cgi編


・cgi(Python)を Webサーバで実行する。Python cgi編
cgi(Python)を Webサーバで実行する。Python cgi編




● PHPを Webサーバで実行する。PHP編

 テスト用の PHPファイルを /var/www/html/に配置します。
 PHPの場合は cgiの様な面倒な事前設定は不要です。.phpファイルを用意するだけで大丈夫です。
# おなじみの phpinfoの PHPサンプルです。
sudo nano /var/www/html/phpinfo.php

<?php phpinfo(); ?>

 パソコンでブラウザを開いて、URL欄に下記を入力します。
http://{ラズパイの IPアドレス}/phpinfo.php
または、
http://raspberrypi.local/phpinfo.php

 phpinfo - PHP Version 7.0.19-1

・PHPを Webサーバで実行する。PHP編
PHPを Webサーバで実行する。PHP編


・PHPを Webサーバで実行する。PHP編
PHPを Webサーバで実行する。PHP編


・PHPを Webサーバで実行する。PHP編
PHPを Webサーバで実行する。PHP編
 ・PDO - PDO support - PDO drivers - mysql, sqlite
 ・pdo_mysql - PDO Driver mysqlnd 5.0.12-dev - 20150407


● phpMyAdmin MySQLサーバー管理アプリにログインする
 phpMyAdminにログインする。

 パソコンでブラウザを開いて、URL欄に下記を入力します。
http://{ラズパイの IPアドレス}/phpmyadmin/
または、
http://raspberrypi.local/phpmyadmin/

 ※ phpMyAdminのユーザ名は phpmyadminです。

・phpMyAdmin MySQLサーバー管理アプリにログインする
phpMyAdmin MySQLサーバー管理アプリにログインする


・phpMyAdmin MySQLサーバー管理アプリにログインする
phpMyAdmin MySQLサーバー管理アプリにログインする


 ※外部に公開するサーバの場合は /phpmyadmin/へのアクセスをできない様に設定で遮断する。そもそもの phpmyadminをアンインストールするのがセキュリティ面で安全です。



● phpMyAdminで パスワードの無い MySQLアカウントでのログインを許可する設定方法

 phpMyAdminではパスワードなしログインはデフォルトの設定 (AllowNoPassword 参照) によって禁止されています

 AllowNoPassword設定を書き換えるには config.inc.phpファイルを編集します。

 ラズパイの phpMyAdminの config.inc.phpファイルは下記の場所に有ります。
/etc/phpmyadmin/config.inc.php
    /* Uncomment the following to enable logging in to passwordless accounts,
     * after taking note of the associated security risks. */
    // $cfg['Servers'][$i]['AllowNoPassword'] = TRUE;
    $cfg['Servers'][$i]['AllowNoPassword'] = TRUE;
 //のコメントを取って AllowNoPassword = TRUEの設定を有効にします。



● Raspberry Piで LAMPPを導入する コピペ一括インストール用

 上記の一連のインストール手順をコピペで簡単に一括インストールできる様にしました。

 2017/08時点での LAMPPの各バージョン。

# Apache/2.4.25 (Raspbian) Server built: 2017-07-18T18:37:33

# MySQL(MariaDB)
# mysql Ver 15.1 Distrib 10.1.23-MariaDB
# mysqld Ver 10.1.23-MariaDB-9+deb9u1

# PHP 7.0.19-1 (cli) (built: May 11 2017 14:04:47)

# perl 5, version 24, subversion 1 (v5.24.1) built for arm-linux-gnueabihf-thread-multi-64int

# apt-get update
sudo apt-get update

# apt-get install
# sudo apt-get -y install apache2 php php-dev php-fpm php-gd mysql-server php-mysql phpmyadmin perlmagick

# 2020年修正
# mariadb-server
sudo apt-get -y install apache2 php php-dev php-fpm php-gd mariadb-server php-mysql phpmyadmin perlmagick

# enable PHP 7.0 FPM
# sudo a2enmod proxy_fcgi setenvif
# sudo a2enconf php7.0-fpm
# sudo systemctl reload apache2

# 2020年修正
# enable PHP 7.3 FPM
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.3-fpm
sudo systemctl reload apache2

# enable Perl CGI
sudo ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/cgi.load

# reload Apache2 Web server service
sudo service apache2 reload

# Web Sample files
# index.html
cd
echo "HTML test">index.html
sudo cp index.html /var/www/html/

echo "HTML test 2">html_test.html
sudo cp html_test.html /var/www/html/

# phpinfo.php
echo "<?php phpinfo(); ?>">phpinfo.php
sudo cp phpinfo.php /var/www/html/

# test_perl_cgi.cgi
echo '#!/usr/bin/perl'>test_perl_cgi.cgi
echo ''>>test_perl_cgi.cgi
echo 'print "Content-type:text/plain\n\n";'>>test_perl_cgi.cgi
echo 'print "Test Perl CGI";'>>test_perl_cgi.cgi
chmod +x test_perl_cgi.cgi
sudo cp test_perl_cgi.cgi /usr/lib/cgi-bin/

# test_python_cgi.py
echo '#!/usr/bin/python'>test_python_cgi.py
echo ''>>test_python_cgi.py
echo 'print "Content-type: text/html"'>>test_python_cgi.py
echo 'print'>>test_python_cgi.py
echo 'print "Test Python CGI"'>>test_python_cgi.py
chmod +x test_python_cgi.py
sudo cp test_python_cgi.py /usr/lib/cgi-bin/


●おまけ: SQLiteをインストールする方法

 軽量なデータベースサーバ SQLite
 SQLiteは、既に SQLite 3.16.2が入っているのでインストール不要。
# SQLite 3.16.2
# sqlite3 -versionでバージョンを確認する。
# $ sqlite3 -version
# 3.16.2 2017-01-06 16:32:41 a65a62893ca8319e89e48b8a38cf8a59c69a8209

 PHP SQLite PDO extensionをインストールします。
# PHP SQLite PDO extension PHP7 SQLite3
sudo apt-get install php-sqlite3

NOTICE: Not enabling PHP 7.0 FPM by default.
NOTICE: To enable PHP 7.0 FPM in Apache2 do:
NOTICE: a2enmod proxy_fcgi setenvif
NOTICE: a2enconf php7.0-fpm
NOTICE: You are seeing this message because you have apache2 package installed.

sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.0-fpm
sudo systemctl reload apache2

 phpinfo.phpで
 ・PDO - PDO support - PDO drivers - mysql, sqlite
 ・pdo_sqlite - PDO Driver for SQLite 3.x - SQLite Library - 3.16.2
 を確認する。


 下記は単なるメモ(バージョンが古いので使用しません)
#=======
# SQLite 2.8.17
sudo apt-get install sqlite
sudo apt-get install php5-sqlite

# sqlite -versionでバージョンを確認する。
# $ sqlite -version
# 2.8.17


● MySQLのインストールの謎、rootでログインできない謎

 以前は apt-get install mysql-serverのインストール途中で rootパスワードを設定しましたが、現在はインストール途中で聞いて来なくなりました。

sudo mysql_secure_installation
 しても、
update user set Password=PASSWORD('hogehoge')
 しても、
mysql -u root -p
Enter password: (パスワードを入力)
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
 と ERROR 1698に成ってしまいます。

 上記の操作は sshのリモートで行なっているので、Disallow root login remotely ?の設定を nにしても怒られます。何故だろう?
 MySQLのセキュリティポリシーが変わって sudo mysql --user=root mysql以外の rootログインを制限しているのかな?

# 以前は apt-get install mysql-serverのインストール途中で rootパスワードを設定しましたが、現在はインストール後に下記のコマンドを実行して rootパスワードを設定します。
# mysql_secure_installationで MySQLの rootパスワードを設定する。
# 参考リンク:
# Mysql root password when install from Ubuntu Software Center [duplicate]
# https://askubuntu.com/questions/866400/mysql-root-password-when-install-from-ubuntu-software-center?noredirect=1&lq=1
# mysql doesn't ask for root password when installing
# https://askubuntu.com/questions/766900/mysql-doesnt-ask-for-root-password-when-installing
sudo mysql_secure_installation

# 質問に以下の様に答えます(セキュリティ重視の内容)
# Enter current password for root (enter for none): 何も入力せずにリターンキー
# Set root password? [Y/n] Y - rootにパスワードを設定するので Y
# New password: rootに設定するパスワードを入力
# Re-enter new password: rootに設定するパスワードを入力(確認用)
# Remove anonymous users? [Y/n] Y - 匿名ユーザーを削除するので Y
# Disallow root login remotely? [Y/n] Y - リモートでの rootログインを許可しない(Disallow)ので Y
# Remove test database and access to it? [Y/n] Y - 不要な testデータベースを削除するので Y
# Reload privilege tables now? [Y/n] Y - 設定内容を即時反映するので Y

# sudo mysql -u root mysql
# sudo mysql --user=root mysql
# # select User,Host,Password from user;
# # +------+-----------+----------+
# # | User | Host      | Password |
# # +------+-----------+----------+
# # | root | localhost |          |
# # +------+-----------+----------+
# # 1 row in set (0.00 sec)

# sudo service mysqld stop
# sudo mysqld_safe --skip-grant-tables&

# # rootパスワードを "hogehoge"に変更
# # update user set Password=PASSWORD('hogehoge') where User='root' and Host='localhost';
# # flush privileges;

# # 下記は MySQLのバージョンが新しい場合 authentication_stringに変わった。
# # update user set authentication_string=PASSWORD('hogehoge') where User='root' and Host='localhost';

● MySQLに userアカウントを作成する

MySQL 5.6 リファレンスマニュアル GRANT 構文
sudo mysql -u root mysql

# MySQLに userアカウントを作成する
# パスワードは password
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';

SELECT user, host FROM mysql.user;
+------+-----------+
| user | host      |
+------+-----------+
| root | localhost |
| user | localhost |
+------+-----------+

# GRANT OPTION を除き、指定されたアクセスレベルにあるすべての権限を付与します
# ALL PRIVILEGES = 最強権限
GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost' IDENTIFIED BY 'password';

# データベースおよびテーブルの作成を有効にします。レベル: グローバル、データベース、テーブル。
# CREATE = データベースおよびテーブルの作成を有効
GRANT CREATE ON *.* TO 'user'@'localhost' IDENTIFIED BY 'password';
※ セキュリティの観点から公開する場合は必要最小限の権限にして管理、適切に設定しましょう。

user
password
$ mysql -u user -ppassword
$ mysql --user=user --password=password



Tags: [Raspberry Pi], [電子工作]

●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)

Raspberry Piで Googleの Go言語 + Gin Webフレームワークをインストールして Webアプリを作る
Raspberry Piで Googleの Go言語 + Gin Webフレームワークをインストールして Webアプリを作る

  Raspberry Piで Googleの Go言語 + Gin Webフレームワークをインストールして Webアプリを作る

Raspberry Piで WebAPIモックサーバー JSON Serverを動かしてみるテスト
Raspberry Piで WebAPIモックサーバー JSON Serverを動かしてみるテスト

  Raspberry Piで APIモックサーバー JSON Serverを動かしてみるテスト

Raspberry Piに LLMP Lighttpd + MySQL + PHP + Perl 構成の Webサーバを構築する方法
Raspberry Piに LLMP Lighttpd + MySQL + PHP + Perl 構成の Webサーバを構築する方法

  ラズパイで Webサービスを動かす、Lighttpd + PHP + Perl + Python + Ruby CGIの LLMP stackを構築

Raspberry Piに nginx + MySQL + PHP + Perl 構成の LEMP Webサーバを構築する方法
Raspberry Piに nginx + MySQL + PHP + Perl 構成の LEMP Webサーバを構築する方法

  ラズパイで Webサービス LEMP Stackを構築、nginx + PHP + Perl(UNIXドメインソケット方式)

Raspberry Piの Webサーバに PHP MySQL PDOを入れて PHP CGIから MySQLを操作する方法
Raspberry Piの Webサーバに PHP MySQL PDOを入れて PHP CGIから MySQLを操作する方法

  Raspberry Piの Webサーバに PHP MySQL PDOを入れて PHP CGIから MySQLを操作する方法

Raspberry Pi 3 Model Bで CMSフレームワーク WordPressをセットアップする方法
Raspberry Pi 3 Model Bで CMSフレームワーク WordPressをセットアップする方法

  ラズパイ3で WordPressをインストールする方法

Raspberry Pi3を Gitサーバとして設定する方法、Git単体と GitLabを使用する方法
Raspberry Pi3を Gitサーバとして設定する方法、Git単体と GitLabを使用する方法

  ラズパイ3でローカルの Gitサーバを動かす方法。GitLabをインストールする方法

Raspberry Pi3に Postfixメールサーバーを Gmailの SMTPをリレーとして立てる方法
Raspberry Pi3に Postfixメールサーバーを Gmailの SMTPをリレーとして立てる方法

  Raspbian Jessieで Postfix Mail serverを Gmailの SMTPを中継サーバとして設定する方法

Gitでリモートにプッシュした内容を完全に無かった事にする方法
Gitでリモートにプッシュした内容を完全に無かった事にする方法

  いわゆる Gitでやらかした時に使える最強奥義 git reset --hard HEAD~; git push -f

Raspberry Piに Avahi Bonjourサービスを入れて、ホスト名で接続できる様にする方法
Raspberry Piに Avahi Bonjourサービスを入れて、ホスト名で接続できる様にする方法

  ラズパイに Bonjourサービスを入れて IPアドレスが分からなくてもホスト名で簡単に接続する方法

Raspberry Piや Jetson NANO等をネットワークに接続した場合の IPアドレスの便利ツール xfinder
Raspberry Piや Jetson NANO等をネットワークに接続した場合の IPアドレスの便利ツール xfinder

  DHCPで自動で IPアドレスが割り当てられる場合に、ワンボードマイコンの IPアドレスを調べる場合に便利

Apache Webサーバを過剰なアクセスや DoS攻撃から守る modモジュールの紹介
Apache Webサーバを過剰なアクセスや DoS攻撃から守る modモジュールの紹介

  対 DoS攻撃用の Apache2モジュール mod_evasive、mod_dosdetector、mod_limitipconn、fail2ban等の紹介

Raspberry Pi Zero Wを海外通販の Pimoroni等での購入方法、購入できる通販ショップ一覧まとめ
Raspberry Pi Zero Wを海外通販の Pimoroni等での購入方法、購入できる通販ショップ一覧まとめ

  ラズパイゼロW ワイヤレスモデルを海外通販でサクッと簡単に個人輸入で入手。技適通過でも国内販売は常に品切れ

Raspberry Pi 3で安定して使える相性の無い最適な microSDカードの種類のまとめ
Raspberry Pi 3で安定して使える相性の無い最適な microSDカードの種類のまとめ

  ラズパイ3で安定して使える microSDカードを購入する Teamと SanDiskは絶対に買わない

Raspberry Pi 3 Model Bに専用カメラモジュール RaspiCamを接続する方法
Raspberry Pi 3 Model Bに専用カメラモジュール RaspiCamを接続する方法

  ラズパイに専用カメラモジュールを接続して Raspbianで写真の静止画撮影や動画を録画する方法

Raspberry Pi 3の Linuxコンソール上で使用する各種コマンドまとめ
Raspberry Pi 3の Linuxコンソール上で使用する各種コマンドまとめ

  ラズパイの Raspbian OSのコマンドラインで使用する便利コマンド、負荷試験や CPUシリアル番号の確認方法等も

Raspberry Pi 3公式フォーラムの FAQの内容の日本語訳
Raspberry Pi 3公式フォーラムの FAQの内容の日本語訳

  ラズパイ公式フォーラムの「The Raspberry Pi 3 Model B Q&A thread」の日本語訳

ラズパイを意識した別物製品 Orange Pi Zeroを買ってみた、Allwinner H2+ Cortex-A7 4core
ラズパイを意識した別物製品 Orange Pi Zeroを買ってみた、Allwinner H2+ Cortex-A7 4core

  オレンジパイはラズパイよりもコスパは良いが情報が無いので利用者側に一定のスキルが必要

Orange Pi PC 2を買ってみた、Allwinner H5 Cortex-A53 4core ARM64
Orange Pi PC 2を買ってみた、Allwinner H5 Cortex-A53 4core ARM64

  ラズパイを意識した別物製品、オレンジパイはラズパイよりもコスパが良い、でも情報が無い

Espressif ESP8266 Arduino互換でスケッチが使える ESP-12Eモジュール基板
Espressif ESP8266 Arduino互換でスケッチが使える ESP-12Eモジュール基板

  Espressif ESP8266 ESP-12-E NodeMCU V1 ESP12 CP2102

BangGood通販はドローン以外にも面白い商品がまだまだ有った(電子工作編)
BangGood通販はドローン以外にも面白い商品がまだまだ有った(電子工作編)

  レーザー彫刻機、カラー液晶の DIYオシロ、Arduinoや Raspberry Pi用の小型カラー液晶




[HOME] | [BACK]
リンクフリー(連絡不要、ただしトップページ以外は Web構成の変更で移動する場合があります)
Copyright (c) 2017 FREE WING,Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator

http://www.neko.ne.jp/~freewing/raspberry_pi/raspberry_pi_web_server_lamp/