前回のapacheのインストール、間違ってはいない。
間違ってはいない、が。
どうやら、ソースからコンパイルしたapacheがある状態でPHP7をaptリポジトリから入れると面倒臭いことになる。つ~か、PHP7がインストール済みのapacheを認識せずに同じリポジトリ上の、つまり古いapache(2.4.10)を追加インストールしちゃうのだ。
多分PHPもソースからコンパイルするのが正しいのだろうけれど、調べてみると色々なライブラリを事前にコンパイルしておく必要があるみたい。これもちょっと、いや、かなり面倒臭い。
そんなわけで、apacheのインストールからやり直す。
ちなみにOSバックアップイメージから、MySQLをインストールした状態に戻してから以下作業を開始する。
apache2.4.25をaptリポジトリからインストール
これが正しい方法かどうかわからないんだけど、apacheの最新(2.4.25)はstretchにあるようだ。
以下のようにsource.listを書き換えてリストを更新後にapt-getでインストールする。
$ sudo vim /etc/apt/sources.list#deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi #←コメントアウトdeb http://mirrordirector.raspbian.org/raspbian/ stretch main contrib non-free rpi #←追加$ sudo apt-get update$ sudo apt-get install apache2
これで、apacheのインストールは完了だ。以下で入ったapacheのバージョンを確認。
$ apache2 -vServer version: Apache/2.4.25 (Raspbian)Server built: 2017-01-25T22:59:26
は~、こんなに簡単に入るのね。。。もう、前回のapacheコンパイルしている時間とか、どうしてくれるのか。まぁ、勉強にはなったけど。
PHP7.1.4をaptリポジトリからインストール
PHPの最新版7.1.4はstretchリポジトリには存在しないみたい。
しかし、MySQLの時と同様、ここにも神がいた。
上記のページをもとに実際にPHP7をインストールしている方もいらっさいました。
先人の知恵をお借りして、phpをインストールしていくことにする。
$ sudo vim /etc/apt/sources.listdeb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi #←コメントイン#deb http://mirrordirector.raspbian.org/raspbian/ stretch main contrib non-free rpi #←コメントアウトdeb http://repozytorium.mati75.eu/raspbian jessie-backports main contrib non-free #←追加$ sudo gpg --keyserver pgpkeys.mit.edu --recv-key CCD91D6111A06851gpg: ディレクトリー「/root/.gnupg」ができましたgpg: 新しい構成ファイル「/root/.gnupg/gpg.conf」ができました::gpg: 処理数の合計: 1gpg: 読込み: 1 (RSA: 1)$ sudo gpg --armor --export CCD91D6111A06851 | apt-key add -ERROR: This command can only be used by root.
ありゃ、sudoじゃダメらしい。rootにスイッチする。
$ su -パスワード:su: 認証失敗
ヤバい、rootのパスワード忘れたwwwww
というわけで、rootのパスワードを再設定して再度qpgを実行。
$ sudo passwd root新しい UNIX パスワードを入力してください:新しい UNIX パスワードを再入力してください:passwd: パスワードは正しく更新されました$ su -パスワード:# gpg --armor --export CCD91D6111A06851 | apt-key add -OK
OK出ました。そしたらrootから出てupdate。
# exitログアウト$ sudo apt-get update
これでリポジトリリストが更新された。
さて、PHP7.1関連のパッケージってどれくらいあるんでしょ?
$ sudo apt-cache policy php7\.1.* | grep phpphp7.1-simplexml:php7.1-bz2:php7.1-readline:php7.1-pdo-firebird:php7.1-odbc:php7.1-sysvshm:php7.1-fpm:php7.1-xmlwriter:php7.1-sybase:php7.1-phar:php7.1-intl:php7.1-calendar:php7.1-wddx:php7.1-ftp:php7.1-common:php7.1-dba:php7.1-gettext:php7.1-pdo-odbc:php7.1-mysqlnd:php7.1-posix:php7.1-pdo-sqlite:php7.1-tokenizer:php7.1-dev:php7.1-fileinfo:php7.1-mcrypt:php7.1-pdo-dblib:php7.1-gd:php7.1-pgsql:php7.1-iconv:php7.1-mysqli:php7.1-soap:php7.1-ldap:php7.1-ctype:php7.1-exif:php7.1-curl:php7.1-dom:php7.1-xml:php7.1-sysvmsg:php7.1-xmlreader:php7.1-pdo-pgsql:php7.1-cgi:libapache2-mod-php7.1:php7.1-enchant:php7.1-tidy:php7.1-xsl:php7.1-mbstring:php7.1-cli:php7.1-sockets:php7.1-recode:php7.1-mysql:php7.1-bcmath:libphp7.1-embed:php7.1-pspell:php7.1-snmp:php7.1-gmp:php7.1-pdo-mysql:php7.1-shmop:php7.1-pdo:php7.1-interbase:php7.1:php7.1-sqlite3:php7.1-opcache:php7.1-json:php7.1-phpdbg:php7.1-imap:php7.1-zip:php7.1-xmlrpc:php7.1-sysvsem:
・・・68個ですかね。
良く分からんので、全部入れますw
$ sudo apt-get install php7.1 php7.1-simplexml php7.1-bz2 php7.1-readline php7.1-pdo-firebird php7.1-odbc php7.1-sysvshm php7.1-fpm php7.1-xmlwriter php7.1-sybase php7.1-phar php7.1-intl php7.1-calendar php7.1-wddx php7.1-ftp php7.1-common php7.1-dba php7.1-gettext php7.1-pdo-odbc php7.1-mysqlnd php7.1-posix php7.1-pdo-sqlite php7.1-tokenizer php7.1-dev php7.1-fileinfo php7.1-mcrypt php7.1-pdo-dblib php7.1-gd php7.1-pgsql php7.1-iconv php7.1-mysqli php7.1-soap php7.1-ldap php7.1-ctype php7.1-exif php7.1-curl php7.1-dom php7.1-xml php7.1-sysvmsg php7.1-xmlreader php7.1-pdo-pgsql php7.1-cgi libapache2-mod-php7.1 php7.1-enchant php7.1-tidy php7.1-xsl php7.1-mbstring php7.1-cli php7.1-sockets php7.1-recode php7.1-mysql php7.1-bcmath libphp7.1-embed php7.1-pspell php7.1-snmp php7.1-gmp php7.1-pdo-mysql php7.1-shmop php7.1-pdo php7.1-interbase php7.1-sqlite3 php7.1-opcache php7.1-json php7.1-phpdbg php7.1-imap php7.1-zip php7.1-xmlrpc php7.1-sysvsemパッケージリストを読み込んでいます... 完了依存関係ツリーを作成しています状態情報を読み取っています... 完了Note, selecting 'php7.1-xml' instead of 'php7.1-simplexml'Note, selecting 'php7.1-interbase' instead of 'php7.1-pdo-firebird'Note, selecting 'php7.1-common' instead of 'php7.1-sysvshm'Note, selecting 'php7.1-xml' instead of 'php7.1-xmlwriter'Note, selecting 'php7.1-common' instead of 'php7.1-phar'Note, selecting 'php7.1-common' instead of 'php7.1-calendar'Note, selecting 'php7.1-xml' instead of 'php7.1-wddx'Note, selecting 'php7.1-common' instead of 'php7.1-ftp'Note, selecting 'php7.1-common' instead of 'php7.1-gettext'Note, selecting 'php7.1-odbc' instead of 'php7.1-pdo-odbc'Note, selecting 'php7.1-mysql' instead of 'php7.1-mysqlnd'Note, selecting 'php7.1-common' instead of 'php7.1-posix'Note, selecting 'php7.1-sqlite3' instead of 'php7.1-pdo-sqlite'Note, selecting 'php7.1-common' instead of 'php7.1-tokenizer'Note, selecting 'php7.1-common' instead of 'php7.1-fileinfo'Note, selecting 'php7.1-sybase' instead of 'php7.1-pdo-dblib'Note, selecting 'php7.1-common' instead of 'php7.1-iconv'Note, selecting 'php7.1-mysql' instead of 'php7.1-mysqli'Note, selecting 'php7.1-common' instead of 'php7.1-ctype'Note, selecting 'php7.1-common' instead of 'php7.1-exif'Note, selecting 'php7.1-xml' instead of 'php7.1-dom'Note, selecting 'php7.1-common' instead of 'php7.1-sysvmsg'Note, selecting 'php7.1-xml' instead of 'php7.1-xmlreader'Note, selecting 'php7.1-pgsql' instead of 'php7.1-pdo-pgsql'Note, selecting 'php7.1-common' instead of 'php7.1-sockets'Note, selecting 'php7.1-mysql' instead of 'php7.1-pdo-mysql'Note, selecting 'php7.1-common' instead of 'php7.1-shmop'Note, selecting 'php7.1-common' instead of 'php7.1-pdo'Note, selecting 'php7.1-common' instead of 'php7.1-sysvsem'以下の追加パッケージがインストールされます:aspell aspell-en autoconf automake autopoint autotools-dev debhelper dh-php dictionaries-common emacsen-common enchant firebird2.5-commonfirebird2.5-common-doc fontconfig-config fonts-dejavu-core freetds-common gettext gettext-base hunspell-en-us intltool-debian libaspell15libasprintf-dev libasprintf0c2 libc-client2007e libcroco3 libenchant1c2a libfbclient2 libfontconfig1 libgd3 libgettextpo-dev libgettextpo0libhunspell-1.3-0 libjbig0 liblist-moreutils-perl libltdl-dev libltdl7 libmail-sendmail-perl libmcrypt4 libodbc1 libonig2 libpci3libperl4-corelibs-perl libperl5.20 libpq5 libqdbm14 librecode0 libsensors4 libsnmp-base libsnmp30 libssl-dev libssl-doc libsybdb5libsys-hostname-long-perl libtidy5 libtiff5 libtool libunistring0 libvpx1 libwebp5 libxmlrpc-epi0 libxpm4 libxslt1.1 libzip4 lsof mlock php-commonphp-pear php5-cli php5-common php5-json php5-readline pkg-php-tools po-debconf shtool snmp xml2提案パッケージ:aspell-doc spellutils autoconf-archive gnu-standards autoconf-doc dh-make wordlist gettext-doc hunspell openoffice.org-hunspellopenoffice.org-core uw-mailutils libenchant-voikko libgd-tools libtool-doc libmcrypt-dev mcrypt libmyodbc odbc-postgresql tdsodbc unixodbc-binlm-sensors snmp-mibs-downloader automaken gfortran fortran95-compiler gcj-jdk php5-dev php5-user-cache libmail-box-perl推奨パッケージ:php-readline以下のパッケージが新たにインストールされます:aspell aspell-en autoconf automake autopoint autotools-dev debhelper dh-php dictionaries-common emacsen-common enchant firebird2.5-commonfirebird2.5-common-doc fontconfig-config fonts-dejavu-core freetds-common gettext gettext-base hunspell-en-us intltool-debianlibapache2-mod-php7.1 libaspell15 libasprintf-dev libasprintf0c2 libc-client2007e libcroco3 libenchant1c2a libfbclient2 libfontconfig1 libgd3libgettextpo-dev libgettextpo0 libhunspell-1.3-0 libjbig0 liblist-moreutils-perl libltdl-dev libltdl7 libmail-sendmail-perl libmcrypt4 libodbc1libonig2 libpci3 libperl4-corelibs-perl libperl5.20 libphp7.1-embed libpq5 libqdbm14 librecode0 libsensors4 libsnmp-base libsnmp30 libssl-devlibssl-doc libsybdb5 libsys-hostname-long-perl libtidy5 libtiff5 libtool libunistring0 libvpx1 libwebp5 libxmlrpc-epi0 libxpm4 libxslt1.1 libzip4lsof mlock php-common php-pear php5-cli php5-common php5-json php5-readline php7.1 php7.1-bcmath php7.1-bz2 php7.1-cgi php7.1-cli php7.1-commonphp7.1-curl php7.1-dba php7.1-dev php7.1-enchant php7.1-fpm php7.1-gd php7.1-gmp php7.1-imap php7.1-interbase php7.1-intl php7.1-json php7.1-ldapphp7.1-mbstring php7.1-mcrypt php7.1-mysql php7.1-odbc php7.1-opcache php7.1-pgsql php7.1-phpdbg php7.1-pspell php7.1-readline php7.1-recodephp7.1-snmp php7.1-soap php7.1-sqlite3 php7.1-sybase php7.1-tidy php7.1-xml php7.1-xmlrpc php7.1-xsl php7.1-zip pkg-php-tools po-debconf shtoolsnmp xml2アップグレード: 0 個、新規インストール: 115 個、削除: 0 個、保留: 6 個。31.5 MB のアーカイブを取得する必要があります。この操作後に追加で 105 MB のディスク容量が消費されます。続行しますか? [Y/n]
どうやら指定したいくつかのパッケージは代替に置き換わるのね。
あと気になるのが、追加パッケージでphp5と付いてるヤツ。
う~ん、まっいっかw「Y」押しちゃうわ。
というわけで、数分待ってPHPのバージョンを確認。
$ php -vPHP 7.1.4-1~bpo8+1 (cli) (built: Apr 13 2017 04:06:53) ( NTS )Copyright (c) 1997-2017 The PHP GroupZend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologieswith Zend OPcache v7.1.4-1~bpo8+1, Copyright (c) 1999-2017, by Zend Technologies
はは、やったね。
動作確認
apacheを再起動して、DocumentRootにtest.phpを作成してブラウザーからアクセスしてみる。
$ sudo service apache2 restart$ cd /var/www/html$ sudo vim test.php<?phpphpinfo();?>
さて、PHPからMySQLへはちゃんと繋がるんだろうか。
DB作ってユーザー作ってテーブル作ってデータを入れてみる。
$ mysql -u root -pEnter password:mysql> create database testdb;Query OK, 1 row affected (0.00 sec)mysql> grant all privileges on testdb.* to 'testuser'@'localhost' identified by 'testpassword';Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> exit;Bye$ mysql -u testuser -pEnter password:mysql> connect testdb;Current database: testdbmysql> create table testtbl (-> id int not null auto_increment-> ,name varchar(100)-> ,insuser char(10) not null-> ,insdatetime timestamp not null default current_timestamp-> ,upduser char(10) not null-> ,upddatetime timestamp not null default current_timestamp on update current_timestamp-> ,primary key( id )-> )-> ;Query OK, 0 rows affected (4.41 sec)mysql> exit;Bye$ vim ins-testtbl.sqlinsert into testtbl(name,insuser,upduser) values('あああああ','testuser01','testuser01');$ mysql -u testuser -pEnter password:mysql> connect testdb;Current database: testdbmysql> source ins-testtbl.sql;Query OK, 1 row affected (0.02 sec)mysql> select * from testtbl;+----+-----------------+------------+---------------------+------------+---------------------+| id | name | insuser | insdatetime | upduser | upddatetime |+----+-----------------+------------+---------------------+------------+---------------------+| 1 | あああああ | testuser01 | 2017-05-06 04:31:01 | testuser01 | 2017-05-06 04:31:01 |+----+-----------------+------------+---------------------+------------+---------------------+1 row in set (0.00 sec)mysql> exit;Bye
そしたら、/var/www/htmlの下に、dbに接続してselectして取得したレコードを表示してみる、っていうphpファイルを置く。
$ cd /var/www/html$ sudo vim testdb.php<?phptry{// MySQLへ接続する$db = new PDO("mysql:dbname=testdb;host=localhost", "testuser", "testpassword");$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);// クエリを送信する$sql = $db->prepare( "SELECT * FROM testtbl" );$sql->execute();//結果セットを取得・表示する$all = $sql->fetchAll();foreach ($all as $data){var_dump($data);}$db = null;}catch(PDOException $e){echo $e->getMessage();exit;}?>
そんじゃブラウザーから実行してみますか。
dbに接続してselectして取得したレコードを表示できましたね。
どうやら動いてそう。いいのかな。
まとめ
これでラズパイ上に、apache+php+mysqlの最新バージョンを構築できました。
さて、次はラズパイ上でjava+tomcat+GitBucketかな。
そんでもって次はラズパイ上でruby+Redmineかな。
あれ?このラズパイ上でphp使う予定、無いぞ。
コメント
コメント一覧 (2)