投稿

ラベル(php)が付いた投稿を表示しています

Proxmoxでサーバ構築

イメージ
これまでテスト用にi5第8世代の廃棄PCを使用してきた。 とはいえ今の所何も問題は起きていないが、入れ替えも視野に入れ予備サーバを用意することに。 - メモリ:16GB - SSD:500GB - DDNS+Let's Encrypt - Ubuntu24.04 この環境なので、すぐに構築し直すことは可能だが、とりあえずこのまま置いておいて別のサーバを立てることにする。 最初はRaspberryPiで構築しようと思ったけれど、本体電源+外付けHDD電源+ディスプレイ電源と考えると、邪魔なので廃案。 そこで廃棄しようと思っていた「Lavie NS300/N」が手元にあったので、これを利用することに。 一応バッテリーは正常に動作するので、UPS代わりにそのまま。 - Core™ i3-8145U(やや非力) - メモリ:8GB(少ないが…) - HDD:1TB なので、これまで使用しているものより、若干スペックダウン。 ただ用途は、非常勤で教えに行っている専門学校生用の練習マシンとする予定なので、まぁ問題なさそう。 Proxmox導入 直接、Linuxを導入してもよいのだけれど、今回は Proxmox を導入し、その上でUbuntu Serverを動作させる計画。 USBにProxmoxのイメージを焼いて、インストールすれば問題なく完了。 ただ、現在のバージョンはdebian - trixieがベースになっているので、若干参考になるサイトが少なめ。とはいえ旧版のは参考になるので調べつつ… HDDなだけあって、最初の起動は少し遅いものの、立ち上がってしまえば問題ない。 さぁ、VMにするかCTにするか…。 GUI使うのであれば、VMかなぁ。サーバだしCTでいいかぁ。 という程度の選定で、CT(コンテナ)で進めることに。 - メモリ:4GB - CPU:2 - HDD:20GB(root disk) - HDD:400GB(home用) - Ubuntu24.04 という構成で進めることにした。 テンプレートを用意して、初期設定を行い起動。 まぁすんなりと入った。 液晶を閉じたら、Suspendになってしまったので、若干設定変更。 $ sudo nano /etc/systemd/logind.conf HandleLidSwitch=ignore $ sudo sy...

PHP でなぜかjsonエラー

イメージ
外部サーバ上では動作  サーバに設置されているコードをテストしていて、おかしなエラーが出ることに気づいた。 Message: Call to undefined function json_encode() って、何で?って感じ…。 今回、新たに立てたVPSでは、Ubuntu20.04 + Apache2 + PHPで問題なく動作している。 その前のサーバも、同様な構成で動作している。 いつも使っているLocalマシン上で動作しない。 気持ち悪いし、テストできないので、原因追及をする。 このマシンだけは、2年前ほどに新規に調達したマシンで、当初よりUbuntu18.04で運用。 昨年20.04にdist upgradeしたマシン。 Cleanに入れてはいないので、その影響かも…。 phpinfo()を実行すると、jsonの項目がない。 そりゃ、動かないよね。 そこで、端末から念の為、入れてみる。 $ sudo apt install php7.4-json パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています                状態情報を読み取っています... 完了 php7.4-json はすでに最新バージョン (7.4.27-1+ubuntu20.04.1+deb.sury.org+1) です。 アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。 おや?入っているという。 $  sudo apt list | grep json php-json-schema/focal,focal,now 5.2.9-1 all [インストール済み、自動] php-json/focal,focal,now 2:8.0+91+ubuntu20.04.1+deb.sury.org+1 all [インストール済み] php-services-json/focal,focal,now 1.0.3-1build1 all [インストール済み] php5.6-json/focal 5.6.40-57+ubuntu20.04.1+deb.sury.org+1 amd64 php7.0-json/focal 7.0.33-...

PHPでsnmpを叩く

snmpを実際に使ってみる 前回、「 WindowsでSNMPを試す 」ということで、Linuxマシン上のsnmpwalkを使用して情報を取得できることは確認した。 今回は、PHPで無理やり情報を取得してみる。 本来はPHP上のsnmp用関数を利用するのが良いのだろうが、前回snmpwalkが動作するのを確認しているので、子プロセスで動かして情報を拾ってみる。 今後、Web上に出力するとかファイルん書き込むとか、Nativeの関数もあるといううことでPHPを選択してみた。 さっくりとテストコードを書いてみる。 ターゲットは、BuffaloのNAS、「TeraStation」にしてみる。 こいつは、設定でSNMPをONにすることで、ちゃんと返してくれるらしい。 <?php $cmd = "/usr/bin/snmpwalk"; $version = "-v2c"; $comunity = "TeraStation"; $ips = ["192.168.11.86"]; $oids = [     "1.3.6.1.4.1.5227.27.1.3.1.3.1"=>"GB",     "1.3.6.1.4.1.5227.27.1.3.1.4.1"=>"%" ]; foreach($ips as $ip){     foreach($oids as $oid=>$dummy){         $temp = exec("{$cmd} {$version} -c {$comunity} {$ip} {$oid}");         $values[$oid] = substr($temp,strrpos($temp," ")+1);     } } echo date("Y-m-d H:i:s "); foreach($values as $key=>$value){     echo ...

Termuxでどこでも開発

イメージ
Androidならでは… 前の前の機種(ASUS Zenfone2)の頃から、お世話になっているTermux。 出先での作業には欠かせない重要なツール。 https://termux.com/ これは何かというと、Android上でのTerminal Emulatorで、Linux開発環境と同等のコマンド・機能が使える。 しかもroot化の必要はないので、気軽に使える。 Google Playから普通に導入可能。 何ができるかというと とりあえず、現在の主な使い方は ssh(opensshをインストール)を入れて、出先から管理しているサーバに接続して作業するというのが主。 実際には sshaの方を使うと幸せ。 でもって、これらのツールはすべてaptで入れることができる。 おかげで、ノートPC無しでもサーバに接続して、何度も危機を乗り切った(笑) 現在作業中のもの あれこれ面白いので、インストールして試しているのだが…。 python3 + numpy GNU nano php7 clang + dev環境 ruby などを入れて、動かしている。 とりあえず、講義で使用するサンプルを作って、動作確認してみたり、気になったことを確認するのに片手でプログラミングして、さくっと動かせる。 試しに、PHPをビルトインサーバで動かして、phpinfo()を実行してみる $ php -S 192.168.0.100:8080 この状態で、他のPCから叩いてみると 普通のLinuxサーバで動かすのと何ら変わりない。 Andorid上のブラウザで実行するだけなら、 $ php -S localhost:8080 とすれば良い。 さすがに、1024ポートまではroot化していないので、利用不可。 もちろん、高機能ではないし、常にwebサーバとするには、電池の持ちも含めて、いろいろと問題があるけどね…。 そもそもwebサーバを動かしたという話も聞くけれど、スリープになったら落ちるとか…。 言語オタクには楽しい エディタは軽めのnanoで、書い...

UTF8の指定ではまった

MariaDB+PHPにて PHPでDB上のデータを大量に処理するプログラムを書いていて、おかしな現象に出くわした。 1万件+42万件+43万件のjoinで、必要なもののみ取り出して、updateをかけるという手作業ではやる気にならない処理なので、サクッと書いてぶん回すしかない…。 ローカルでmysqlモニタを使用してSQLを叩くと、問題なく結果が返ってくる。 でもって、サーバ上で実行すると、結果がEmpty…。 あれれ? 試しに、phpmyadmin上でSQLだけ叩いてみる。 ローカルと同じ結果になる。 何かがおかしい。  :  : $mysqli = new mysqli("localhost",$username,$password); if($mysqli->connect_error){   print('<p>データベースへの接続に失敗しました</p>'.$mysqli->connect_error);   exit(); } $mysqli->select_db($dbname); $mysqli->set_charset("utf-8"); $sql="SELECT bill.bill_id,bill_item.bill_item_id,bill_item_detail.bill_item_detail_id,              bill.billing_id,bill.bill_month,bill.bill_date,bill.deposit_receive_date   FROM `bill_item_detail`   join bill_item on bill_item_detail.bill_item_id=bill_item.bill_item_id   join bill on bill.bill_id=bill_item.bill_id   WHERE `bill_item_detail`.`name` LIKE '繰越残高' AND  :  :   order by bill.b...

phpMyAdminの設定

イメージ
コンソールもいいけれど… もちろん、ネットワーク越しに使うので、コンソールでmysqlコマンドや、mysqldumpなどは普通に使っていますが…。 ちょこっとデータを修正したり、複数のテーブルを見比べたりするのに、CUIでは不便なこともあるので、phpMyAdminを入れることが多い。 もちろん、今時はパッケージマネージャが装備されているので、インストールは簡単。 ubuntuなら apt-get install phpmyadmin でサクッと入るし、CentOSなら yum で同様にインストールは完了する。 ところが、このインストールだけでは、phpmyadminの設定情報を記録してくれない。 最近、使用頻度も上がっているのに、他の作業しているとタイムアウトを起こして、再度ログイン画面に戻ってしまう。これは面倒。 そこで、有効期間を1440秒から→14400秒に変えておいたりする。 『環境設定は、現在のセッションでのみ有効です。この設定を永続的に有効にするには、phpMyAdmin 環境保管領域が必要です。』とエラーが表示され、セッションが切れると元に戻ってしまう。  そこに書かれているリンクを踏んでも、あまり親切には書かれていないのだ…。 まずはtableを用意 一応、ドキュメント見ながら作業をする。 「create_tables.sql」を使えってことなので、探してみる。 # find / -name create_table.sql /usr/share/doc/phpMyAdmin-x.x.x.x/examples/create_tables.sql に有った。(ちなみにCentOSの場合の結果) なので、こいつを食わせればOK。XAMPとかならディレクトリさえ分かれば、phpMyAdminからインポートもできるだろうけど、リモートではそんな訳には行かない。 なので、mysqlコマンドから実行。 $ mysql -u root -p > source /usr/share/doc/phpMyAdmin-x.x.x.x/examples/create_tables.sql これでOKかというと、まだ不足で、/etc/php...