サーバー

【.forward】からphp.iniを指定してPHPを実行

2018年10月23日
先日からやっているサイトの
SSL化、
ページの文字コードをUTF-8へ、
html5へ、
PHP7へバージョンアップ、
PostgreSQLの移行(バージョンアップと文字コード変更)、
とほぼ全ての環境が変わってしまう移行がほぼ終わりました。
変わらなかったのはMySQLだけです。でもPHPのバージョンアップに伴い、MySQL関係がかなり変わったので、MySQLまで変わった気分です。

テストサイトでの動作確認は終了し、後は本番サイトとテストサイトとを切り替えます。
切り替え前に再度データの同期を取らなくてはいけません。
ドキドキします。


サイトをSSL化したので、ついでにPOSTしている部分をSSLに書き換えました。

ツールが売れたら、自分自身にもメール送信し、特定のメールボックスで受信します。
そのメールボックスにメールが届くとPHPを起動し、処理を行います。
PHPの起動は【.forward】で行います。
私が利用しているレンタルサーバーの場合、SSLを利用するには拡張モジュールを【php.ini】に記述しておかなければいけません。
ここでハマりました。どうしても読み込んでくれなかったのです。
もちろん私の勘違いで読み込まなかったのですが。。。分かってしまえばなんでもないところで、つまづきました。何を勘違いしていたかは恥ずかしいので内緒です。


【.forward】
"| exec /usr/local/bin/php -q -c/home/xxx/.php/php.ini /home/xxx/yyy/run.php"

【/usr/local/bin/php】はPHPのパス、サーバーによってはPHPのバージョンを指定できます。
【/home/xxx/.php/】ディレクトリ下の【php.ini】を読み込んで、【/home/xxx/yyy/run.php】を実行します。
私も初めは間違えていましたが、【php.ini】を指定している部分【-c/home/xxx/.php/php.ini】の【-c】の後ろにスペースは入りません。


説明を読んでも勘違いが解けず行き詰まってコーヒーを入れていたら、突然ポワッとcronの設定が目の前に浮かんできて解決できました。

SQL

MySQLがガラリと変わっていました

2018年10月22日
まだ完全移行ではありませんが、一応【ネットビジネス便利ツール】のSSL化とSQLサーバーの文字コード変換が終わりました。動いていない箇所の修正には時間がかかるので、とりあえず非SSLで動かします。

何度もテストをするのは面倒なので、ページそのものをUTF-8へ、html5へ変更しました。

そしてPHPもバージョン5から7へ移行しています。

その関係で久々にMySQLの部分のPHPのソースを触ることになりました。
PHP7ではmysqlが使えなくなっています。何かで読んで知ってはいましたが、そうですね、修正しなくてはいけませんね。

調べたらmysqliかPDOを使うことになるとのこと。mysqliを使うことにしました。
参考になるのは、もちろん本家本元のマニュアルと、
MySQL 改良版拡張モジュール

ここがわかりやすかったです。
mysqlからmysqliへの書き換え方法

意外にハマってしまったのが、文字コードです。
MySQLもWebページもUTF-8にしているのに化けてしました。古いmysqlのソースを見ていると文字コードを指定していました。そう言えばそうでした(このブログでも書いていました・・・MySQLの文字化け)。
mysqliでは
mysqli_set_charset($objMySQLConID, "UTF8");
です。UTF-8ではなく、UTF8で指定します。

テスト環境で色々触っているのですが、完全に本番と同じではないことでエラーになったり、バグも見つけてしまったりとなかなか前に進めません。
自分が何をやっているのか、わからなくなりそうです。

さあ、また明日続きをやろう。

SQL

PostgreSQLのパスワード

2018年10月21日
SQLデータベースの文字コードを変更するため、新しい文字コードUTF-8でデータベースを作って全移動しています。
データベースが変わるので、cronで動かしているバックアップ(ダンプ)やバキューム(最適化)を変更しなくてはいけません。

cronから実行する場合、パスワードを入力できないので、【.pgpass】にIDやパスワード記録して、そこから読み込んで使います。

ホスト名:ポート番号:データベース名:ユーザ名:パスワード
を【.pgpass】に保存してホームディレクトリにアップロード、パーミッションを600にします。

これでcronからバックアップや最適化が可能になります。
副産物で、タームミナルエディタから接続する時も、PHPなどのソースでもパスワードを入力しなくてよくなります。

【.pgpass】には複数のデータベースのパスワードを保存できます。
【*】も使用可能です。どれでもOKの時は使用します。

PostgreSQL 9.3.2文書 - パスワードファイル

例1
*:*:db01:user1:pass1
*:*:db02:user1:pass2

例2
*:*:*:*:pass3

パスワードは平文で保存されますが、パーミッションが600ですし、大丈夫ということなんでしょう。でもファイルが流出したら困りますよね。

サーバー

特定のURLを除外してリダイレクト

2018年10月20日
3日間片頭痛で伸びていました。今回は薬があまり効かず、しんどかった。今日はやっとまともに活動できました。
片頭痛で吐き気がしている間は、指一本でも動かすと強烈な吐き気にくるので、ピクリとも動けません。そのせいで無理な姿勢で寝ていたのでしょうか、左腕がピクピクし始めてしまい、治まる気配がありません。ああ、鬱陶しい。


WebサイトのSSL化で、何か忘れている気がすると書きました。忘れていたわけではないのですが、テスト漏れがありました。すっかりテストした気になっていました。ご迷惑をおかけしてしまったユーザー様、申し訳ございません。

これからまだツールのソースを変更するので(サイトのSSLはそのままですが)、【.htaccess】のRewriteRuleを書き換えました。
特定のURLを除外して、httpsに301リダイレクトします。

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !^/abcdefg.php$
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://engineer.ns-it.net/$1 [R=301,L]

http://engineer.ns-it.net/abcdefg.php へのアクセスはそのままhttpで、それ以外はhttpsへ301リダイレクトします。
【.htaccess】は【engineer.ns-it.net】の下へアップロードです。

RewriteCond %{REQUEST_URI} !^/abcdefg.php$

RewriteCond %{REQUEST_URI} !(.*/abcdefg.php$)
でもOKを確認しました。

サーバー

WebサイトのSSL化

2018年10月16日
このブログの文字コードをUTF-8に移行できたので、今日は【ネットビジネス便利ツール】をUTF-8に移行予定だったのですが、急遽予定を変更してSSL化を行いました。

使っているレンタルサーバーがLet's Encryptに対応しているので利用することにしました。
おそらくメジャーなレンタルサーバーは対応(設定や更新を自動化)していると思うので、興味のある方は調べてみてください。

ネットビジネス便利ツール】はすんなりできました。
ですがこのブログはサブドメインで利用しています。使っているレンタルサーバーではLet's Encryptのワイルドカードにはまだ対応していないので、サブドメインごとにSSLを設定することで解決できました。

作業自体は簡単でした。
これで【ネットビジネス便利ツール】とこのブログをSSL化できました。
このブログの他にもサブドメインで運用しているサイトがあるのですが、閉鎖も含めてもう少し考えます。

ページ内にhttpでリンクを貼っている箇所を修正、PayPal決済関係でhttpを利用している箇所をhttpsに変更しました。

後は、【.htaccess】に
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://engineer.ns-it.net/$1 [R=301,L]
を書いて、httpでのアクセスをhttpsへリダイレクトと共に、検索サイトのページ情報を引き継がせます。

何か忘れている気もするけど、気がついた時また作業します。
助かりました。Let's Encryptとレンタルサーバーに感謝。

ブログ

データベースの文字コード変換

2018年10月15日
TwitterAPIのどツボにハマって遊んでしまいましたでTwitter関係を触ったら、このブログが文字化けし始めました。
紺屋の白袴で、未だにEUC-JPでした。もうこうなったらついでにUTF-8にしてしまいます。
いつかはやらねばと思っていたし、いやもっと優先順位の高い物があるので、その後のつもりだったのですが。

で、移行終了・・かな。多分。後はエラーが出た時に対応します。

ブログを運用しながら移行しました。
文字コードUTF-8のデータベースを新しく作り、そこにEUC-JPのデータベース全体からダンプしたファイルを使ってデータベース全体をリストアしました。
ダンプ(バックアップ)はcronで毎日動かしていますが、リストアは初めてでした。

今回移行したデータベースはPostgreSQLです。
旧データベースはPostgreSQL7でしたが、新データベースはPostgreSQL9になっていました。

一部のSQLでエラーが出ていたのでそちらも修正しました。
テーブル結合を行っている場合、FROM句に全てのテーブル名がないと(結合はWHERE句に書いているので)エラーになるようになっったようです。そう言えば「どうして全てのテーブルを書いていないのに動くんだろう」と思った記憶があります(でもそのまま動かしていたなんて・・・)。

そしてついでのついでで、html5へ移行もしました。

いつも作っているソフトウェアはフィルシステムですし、滅多にデータベースなんて触らなくなってしまっているので、とても緊張しました。息するの忘れているんじゃあないかって自分で思いました。

まだ一番大切なサイトの移行が残っています。ブログは予行演習でした。

大変良い勉強になりました。

Webページコントローラー

Webページコントローラーのパスについて

2018年10月13日
Webページコントローラー】のユーザー様からご連絡をいただきまして、マニュアルに大切なことを書いたつもりになっていたことに気が付きました。
ご連絡いただきまして、本当にありがとうございます。

Webページを書く時のファイルのパスについて追加しました。
Webページの作成外部ファイルのパスについて

スタイルシートやJavaScript、画像ファイルなどもそうですが、htmlファイルとは別のファイルを読み込んで使用する場合、当然ですがファイルへのパスを書いて読み込まなければいけません。
絶対パスなら問題はないのですが、相対パスで書く場合は、どこが基準になるのかわからないと書けません。

例えばこのページのスタイルシートの場合、
絶対パスは
<link href="http://engineer.ns-it.net/style/style_base.css" type="text/css" rel="stylesheet">
相対パスは
<link href="style/style_base.css" type="text/css" rel="stylesheet">
です。
【http://engineer.ns-it.net/style/style_base.css】

【style/style_base.css】
のことです。

Webページコントローラー】ではどこが基準になるのか説明を加えました。


もう一点、htmlファイルと同じディレクトリに画像やcssファイルをアップロードしたいときの対処法についても追加しました。
【page】ディレクトリに外部ファイルを保存する場合

すっかり書いたつもりになってしまっていました。
おそらくカウントダウンの表示を書いた時、頭の中で書いたことになってしまったのでしょう。気をつけなくては。
2018年09月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
先月
来月
カテゴリ
検索
関連サイト
プロフィール
【ネットネーム】
みゅー

キャラクター by ツカエルサイト


【趣味】
・プログラミング
・写真
・楽器演奏
・手芸
・日曜大工
・家の中の不便を便利に
・考える
・自然科学
・猫と戯れる
・ジグソーパズル

【仕事】
・派遣社員でSE・PGやっていました。次の良い仕事がみつからないので、ビジネスへ注力しようと思っています。
・経験言語:VB6、VB.NET、PHP、Perl、JAVA、Oracle、SQLServer、PostgreSQL



【名前】
アン(足)

2014年4月22日生まれ 女の子
あだ名は くノ一
普段は普通にしゃべりますが、興奮すると『ニャ』を連発します

【趣味】
・狩
・ご飯を食べる
・ママのお手伝い

【仕事】
ママのビジネスの看板招き猫
ママの代わりにPC入力
仕事中のママの右腕を温める
ママに心配をかける
いろんな事をしでかしてママを退屈させない

RSSフィード
Tweet