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

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を構築)

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


●ラズパイで 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


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

 下記にまとめました。

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

  ラズパイで一般的な Webサービスを動かす場合に必要なアプリが入った LAMP 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でも同じ手順で lighttpd Webサーバを構築できました。

 下記にまとめました。

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

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


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

 Apacheサーバの LAMPに対して Lighttpdサーバの LLMPとも言えます。

 軽量な Webサーバ Lighttpd
Lighttpd
 lighttpd is a secure, fast, compliant, and very flexible web-server that has been optimized for high-performance environments.

 Lighttpdで PHP5/ PHP7、Perl CGI、Python CGI、Ruby CGIが動きます。
 Lighttpd + PHPの場合、PHPは version 5と version 7が動く事を確認しました。

#
sudo apt-get update

#=======
# Install Lighttpd
sudo apt-get -y install lighttpd

cat /etc/lighttpd/lighttpd.conf | grep server
cat /etc/lighttpd/lighttpd.conf | grep index

ls -l /var/www/

#=======
# Enabling User Directories
# /home/pi/public_html = http://{serverip}/~pi
sudo lighttpd-enable-mod userdir

# Then reload the configuation
sudo service lighttpd reload

mkdir ~/public_html
echo "HTML user<br>">~/public_html/user.html
pwd>>~/public_html/user.html
# http://{serverip}/~pi/user.html

・ MySQL serverが必要な場合
#=======
# Install MySQL server
sudo apt-get install mysql-server

・ PHP version 5の場合。PDOとして php5-mysqlをインストールする。PHP Version 5.6.22-2+b3
#=======
# Install PHP version 5、PHP Version 5.6.22-2+b3
# sudo apt-get -y install php5-cgi
# php5-common等の php5を複数入れる場合は下記の順番を守る事!
sudo apt-get -y install php5-common php5-cgi php5

# MySQL PDO PHP 5.6
sudo apt-get -y install php5-mysql

・ PHP version 7の場合。PDOとして php-mysql(PHP7.0)をインストールする。PHP Version 7.0.19-1
#=======
# Install PHP version 7、PHP Version 7.0.19-1
# sudo apt-get -y install php-cgi
# php-common等の phpを複数入れる場合は下記の順番を守る事!
sudo apt-get -y install php-common php-cgi php

# MySQL PDO PHP7.0
sudo apt-get -y install php-mysql

・ PHP CGIを有効にする為に lighttpd-enable-mod fastcgi fastcgi-phpします。
 ※ lighty-enable-mod cgiは不要。
#=======
# ls /conf-enabled/
ls -l /etc/lighttpd/conf-enabled/

# Enable the fastcgi module included with lighttpd
sudo lighttpd-enable-mod fastcgi fastcgi-php

# Enabling fastcgi: ok
# Met dependency: fastcgi
# Enabling fastcgi-php: ok
# already enabled
# Run "service lighttpd force-reload" to enable changes

ls -l /etc/lighttpd/conf-enabled/
cat /etc/lighttpd/conf-available/10-fastcgi.conf
cat /etc/lighttpd/conf-available/15-fastcgi-php.conf

・ CGI(Perlや Python)を有効にする為に lighty-enable-mod cgiします。
 ※ perl.cgiやperl.pl、python.pyを Lighttpdの /cgi-bin/で動かす方法。
#=======
# ls /conf-enabled/
ls -l /etc/lighttpd/conf-enabled/

# Enable the cgi module included with lighttpd
sudo lighty-enable-mod cgi

# Enabling cgi: ok
# Run "service lighttpd force-reload" to enable changes

# Edit 10-cgi.conf
cat /etc/lighttpd/conf-available/10-cgi.conf
# $HTTP["url"] =~ "^/cgi-bin/" {
#         cgi.assign = ( "" => "" )
# }

sudo nano /etc/lighttpd/conf-available/10-cgi.conf
alias.url = ("/cgi-bin/" => "/var/www/cgi-bin/")
$HTTP["url"] =~ "^/cgi-bin/" {
  cgi.assign = (
          ".pl"  => "/usr/bin/perl",
          ".cgi" => "/usr/bin/perl",
          ".rb"  => "/usr/bin/ruby",
          ".erb" => "/usr/bin/eruby",
          ".py"  => "/usr/bin/python"
      )
}
・sudo nano /etc/lighttpd/conf-available/10-cgi.conf
sudo nano /etc/lighttpd/conf-available/10-cgi.conf
 赤枠の中の行を追加します。(alias.urlの行が抜けた状態です。)

 sedコマンドによる置換で楽して /etc/lighttpd/conf-available/10-cgi.confを書き換え。
sudo sed -i -e "s/\$HTTP\[/alias.url = (\"\/cgi-bin\/\" => \"\/var\/www\/cgi-bin\/\")\n\$HTTP\[/g" /etc/lighttpd/conf-available/10-cgi.conf
sudo sed -i -e "s/\"\" => \"\"/\n    \".pl\"  => \"\/usr\/bin\/perl\",\n    \".cgi\" => \"\/usr\/bin\/perl\",\n    \".rb\"  => \"\/usr\/bin\/ruby\",\n    \".erb\" => \"\/usr\/bin\/eruby\",\n    \".py\"  => \"\/usr\/bin\/python\"\n/g" /etc/lighttpd/conf-available/10-cgi.conf

ls -l /etc/lighttpd/conf-enabled/
cat /etc/lighttpd/conf-available/10-cgi.conf

・ service lighttpd reloadで Webサーバを再起動して設定を反映させる
#=======
# Reload the configuration
sudo service lighttpd reload

・動作確認様のサンプル htmlと サンプル cgi
#=======
# /var/www/html/html_test.html
echo "HTML test 2">html_test.html
sudo cp html_test.html /var/www/html/

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

# (不要) Make Dir /cgi-bin/
# (不要) sudo mkdir /var/www/html/cgi-bin

# 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 /var/www/cgi-bin/
# /var/www/cgi-bin/test_perl_cgi.cgi
# http://{serverip}/cgi-bin/test_perl_cgi.cgi

# 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 /var/www/cgi-bin/
# /var/www/cgi-bin/test_python_cgi.py
# http://{serverip}/cgi-bin/test_python_cgi.py

 パソコンでブラウザを開いて、URL欄に下記をそれぞれ入力します。
http://{ラズパイの IPアドレス}/
・軽量な Webサーバ Lighttpdをラズパイにインストールする方法
軽量な Webサーバ Lighttpdをラズパイにインストールする方法

http://{ラズパイの IPアドレス}/html_test.html
・軽量な Webサーバ Lighttpdをラズパイにインストールする方法
軽量な Webサーバ Lighttpdをラズパイにインストールする方法

http://{ラズパイの IPアドレス}/phpinfo.php
・軽量な Webサーバ Lighttpdをラズパイにインストールする方法
軽量な Webサーバ Lighttpdをラズパイにインストールする方法
 ※画面は phpinfo - PHP Version 5.6.22-2+b3の場合

http://{ラズパイの IPアドレス}/~pi/user.html
/home/pi/public_html/user.html
 の内容を表示します。

http://{serverip}/cgi-bin/test_perl_cgi.cgi
 の Perl CGIの実行結果を表示します。

http://{serverip}/cgi-bin/test_python_cgi.py
 の Python CGIの実行結果を表示します。


●以下は alias.url = ("/cgi-bin/" => "/var/www/cgi-bin/")を知らなかった頃のメモ

 ※ 本当は /var/www/cgi-bin/に cgiファイルを配置したいのだが、配置方法が不明なので /var/www/html/cgi-bin/に配置しています。(セキュリティ的には htmlと cgi-binのファイルを置くディレクトリを分けた方が良いです。)

  alias.url = ("/cgi-bin/" => "/var/www/cgi-bin/")
 を追加する事で、
/var/www/cgi-bin/test_python_cgi.py
 が
http://{serverip}/cgi-bin/test_python_cgi.py
 に対応する様になりました。


●オマケ: PHP5を PHP4と同じ挙動で動かす互換モードの設定方法

 PHP4はオブジェクトを「値渡し」です。
 PHP5はオブジェクトを「参照渡し」です。

 php.iniか .htaccessで指定できます。

.htaccessの場合は下記
php_flag zend.ze1_compatibility_mode On

 ※ PHP 5.3.0で削除。

コア php.ini ディレクティブに関する説明

zend.ze1_compatibility_mode boolean
 Zend Engine 1 (PHP 4) との互換モードを有効にします。 この設定は、オブジェクトのコピー、キャスト (プロパティを 保持しないオブジェクトが FALSE あるいは 0 のいずれになるか)、 そして 比較 に影響を与えます。このモードの場合、オブジェクトを渡す際の デフォルトの方法は、参照渡しではなく値渡しとなります。

PHP 4 から PHP 5 への移行というタイトルの セクションも参照してください。

警告
この機能は 非推奨 で、 PHP 5.3.0 以降では 削除 されました。

PHP 4 から PHP 5.0.x への移行

php-4.4.9-Win32.zip (8366326 bytes)



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に LAMP構成の Apache MySQL PHP Perl phpMyAdminの Webサーバを構築する方法
Raspberry Piに LAMP構成の Apache MySQL PHP Perl phpMyAdminの Webサーバを構築する方法

  ラズパイで一般的な Webサービスを動かす場合に必要なアプリが入った LAMP 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_lighttpd/