投稿

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

メールサーバの移行

イメージ
 自前のメールサーバを停止 これまで、自ドメインのメールサーバはVPS上に構築していた。 ・Ubuntu Server ・Postfix ・Dovecot ・spamAssassinと、BlackListの利用 Spam対策を行ってきたし、サーバ上でメールをトリガーにして各種プログラムを動かしたりしてきた。 メールサーバのメンテナンスは結構面倒くさくて、  ・Disk容量のチェック  ・不正アクセスのチェック  ・各種セキュリティパッチの適用 など、手間がかかる。 そこで、外部のサーバを利用することに…。 結構安くて使い勝手の良さそうなのが、「さくらのメールボックス」 3年契約で、3070円とな…。  メールアドレスは自分のだけなので、20GBまで利用可能!  (Gmailより大きいねぇ) ということで、早速契約。 アカウント設定を行って、既存のDNSを書き換える。WHOISも書き換えて完了。 SMTPとIMAPが利用できればOK。 ちょうど、GoogleがSPF設定していないと受信しないし、DKIMおよびDMARCに対応していないメールを弾くようになったので、対応しているのを確認。 さくらサーバ自体は、これまでお客さんのサーバとして何件も利用しているので、利用方法も難しくはない。  Webメールにも対応しているので、いざという場合にもありがたい。 ということで、各メールソフトの設定を変更。  PC(常時使用する3台)とタブレット、スマートフォンと台数は多いがそれ程手間はかからない。 問題は、旧サーバで送受信したメールの履歴だけれど、これはThunderbrdを使ってローカルに保存することで回避。  本当は、サーバtoサーバでMailboxに残そうとも考えたんだけど、古いメールはそれ程必要ないし、ローカルにバックアップしてあれば凌げるので、良しとする。 移行時にDNSの反映で若干時間がかかったものの、問題なく送受信できるのを確認して、作業完了。  これでメンテナンスの手間が減るので、安いもんです。

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-57+ubuntu20.04.1+deb.sury.org+1 amd64 php7.1-json

apacheでSSL利用時の再起動

SSLを利用している場合 自前でサーバを立てて、SSLの認証取って、利用できるようにしている。 標準的な設定方法に従って作業すれば、設定は難しくない。 例えば、以下のような方法で簡単に設定できる。 (読んで分からない人には、簡単ではないと思うけど・・・) https://jp.globalsign.com/support/server/03.html ところが、この方法だと、apacheを再起動する際に、 秘密鍵のパスフレーズを要求される。(上記サイトにもうっすら書いてあるww) まあ、起動しっぱなしで運用することがほとんどだとは思うけれど、パスフレーズを忘れると、起動できなくなる。 また、スクリプトを通して、再起動やらが実行できない。 コンソールで作業しても、パスフレーズを入力する時間(5秒程度だとは思うけれど)は、apacheが完全に停止した状態になってしまう。 ということで、SSLを有効にしたまま、再起動を自動で行いたい。 設定していない場合 環境はcentOS6.5+apache2です。 例えば、再起動を行うとこんなようなメッセージが表示され、パスフレーズの入力を促されます。 正しく入力すれば、無事起動。 # service httpd restart httpd を停止中:                                            [  OK  ] httpd を起動中: Apache/2.2.15 mod_ssl/2.2.15 (Pass Phrase Dialog) Some of your private key files are encrypted for security reasons. In order to read them you have to provide the pass phrases. Server myservername:443 (RSA) Enter pass phrase: OK: Pass Phrase Dialog successful.                                                            [  OK  ]

apacheのSSL設定(マルチドメイン時)

本来の目的は… 仕事の関係でteamで作業を行う予定があり、グループウェアを入れようか、どうしようかと迷っていた時に、ownCloudが良さそうに感じた。 そこで、apt-getでちょろっと入れてみたら、結構いい感じなのでいくつかテストして、実運用にと思ったけれど、仕事で使うんだし、暗号化しておく必要はあるわなぁと…いうことで、SSLの設定をしようとしてハマったのでメモメモ…。 現在の環境 vpsを借りていて、ディスクには余裕があるし、常時動いているので共有場所には最適なのですよ。 WEB関係としては、apache2+BINDで運用。 ドメイン1:aaa.info(主ドメイン) ドメイン2:bbb.jp(別ドメイン) ここまでは、問題なく動作している。 ownCloudをapt-getで入れたら5.0系だったので、本家の6.0系を入れることに。 PC用のクライアントは無料だけど、モバイルのクライアントアプリは100円なのよね〜。実際使ってみると、Dropboxより融通が効いて、とってもいい感じですなぁ。 容量は自分で決められるし…。WebDAVでもアクセスできるし、カレンダーもあったりして…。 設定作業1 apacheのモジュールを調べると、ssl関連がちゃんとあるので、簡単じゃんと思ってやってみる。 # a2enmod ssl これで、mods-avaiableにあるssl関連が、mods-enable配下にリンクされ、機能するようになる…はずだった。 # service apache2 restart エラーは出ないが、httpsでaaa.infoに接続してみると、エラーが返ってくる。 アクセスログを見ると www.abc.info:443 xxx.yyy.zzz.aaa - - [06/Jun/2014:10:22:03 +0900] "\x16\x03\x01" 501 297 "-" "-" いままでに、見たことのないエラーが出ている…。 httpでのアクセスは問題ないことから、SSL関係の設定ということは分かる。 エラーログを見ると [Fri Jun 06 10:22:0

PHP+sqliteでcoud not find driver

イメージ
前回からの検討内容… DBを使ったアプリを作成する依頼があったので、内容を検討。 ターゲットとなる環境が厳しいので、いろいろと検討し、そろそろ決めることにした。 クライアントが古めで、アプリを入れて動かすのは故障時のリスクが高すぎる。 何せ外部に接続していないXPマシンが1台含まれており、メモリが512MBと超遅め。 壊れるまで使いたいという希望。 3台のクライアントで利用するのだけれども、扱うデータは担当者別で同時に同じデータを触ることはない。 要はアプリは1種類で、データは3種類になるという縛りがある。 そのうちの1台が古いXPということなので、最低のマシンで動作するようにしないといけない。 そこで、当初LibreOffice上のBASE+マクロ(BASIC)で構築しようと思ったけれど、XPマシンに入れて快適に動きそうにない。 VB or VC# or etc.+SQLiteも検討したが、Microsoftに縛られたくない。 ということで、Linuxサーバ(内部向け)の上で、SQL+PHPで構築して、ブラウザで利用という事で進めることにした。 テスト環境を準備 通常なら、Virtualboxでサーバを構築して、その上で作業をするのだけれど、今回は14.04が出たばかりなので、検証を兼ねて14.04にUpgradeしたノートPC上を作業環境にしてみる。 まずは、apacheのインストール。 $ sudo apt-get install apache2 動作確認で、開いてみると「お!ぉぉ!!!」今までの殺風景な it worksではなく、洒落た画面になっていた。 ついでに、Firefoxも最新のものに更新したので、chromeみたいなタブになっていて、何だか違和感ww 一応スクリーンショットを撮ってみた。 ぱっと見た感じはchromeのようだけど…。確かにFirefoxなんだよね〜。 検索窓が別に用意されているけれど、アドレスバーの欄に入力しても検索してくれて変な感じ。 続いてphpのインストール $ sudo apt-get install php5  本当に、楽になったもんだ。依存する必要なモジュールは勝手に入れてくれるし…。

BINDの設定

イメージ
ネームサーバが無くては話にならない ということで、bindをインストール。 # apt-get install bind9 インストールは簡単だけど、設定は慎重に行う必要がある。 /etc/bind/ に設定ファイルがあるので、追加変更を行う。 /etc/bind/named.confに自分のドメインの設定を追加する。 include "/etc/bind/named.conf.options"; include "/etc/bind/named.conf.local"; include "/etc/bind/named.conf.default-zones"; include "/etc/bind/named.conf.mydomain"; ←追加 でもって、named.conf.mydomainにzoneを記述。 zone "xxx.jp" {   type master;   file "/etc/bind/db.xxx.jp";   allow-query{ any; };   allow-transfer {     210.172.129.81;   }; }; zone "196.7.157.in-addr.arpa" {   type master;   file "/etc/bind/db.196.7.157";   allow-query{any;}; };  xxx.jpは自分の取得したドメインを記述。fileは単なるファイル名なので、同じでなくてもいいのだけれど、あとで訳がわからなくなるので統一しておく。 セカンダリdnsはお名前.comのを利用する。 マニュアル(Q&A)によると、2nd.dnsv.jp(210.172.129.81)を使えということなので、transferの許可を与えておく。 あとは、db.xxx.jpと逆引き用のdb.196.7.157を書いてやればOK。 今回は、IPが1つだけだし、サーバも全部共用させるので、wwwもmailもnsも同じマシンを指すように設定。 再起動をかけて、ロ