ChatGPTとしゃべる毎日

ChatGPTとのやり取りで面白かったものをまとめています

mb_strlenでハマった

macphpの開発をしているのですが、

「判断」をmb_strlenすると6と出ていました。

PHP TIPS - 21. mb_strlen()関数の落とし穴:ITpro

上記の記事を読むと、php内部のエンコードと文字列のエンコードと異なってる場合に起きるらしいです。

今回は「判断」の文字列はutf8、php.iniの

mbstring.internal_encodingはEUCJPだったのでこんなことになったようです。

ついでに言うとphp.iniも作ってませんでした。

なのでmac

/etc/php.ini.defaultからコピーしてきて

/etc/php.iniを作成し、internal_encodingと、defaultcharasetをコメントアウトを外して保存し、ちゃんと2と出ることを確認しました。

(コマンドラインphpはアパッチ再起動必要ありません)

ubuntuにmysqlインストール

conohaのVPNmysqlサーバをインストールします。

mysqlは既に入っていたのですが、

rootのパスワードが失念しており

ログイン出来なかったため

MySQLの調べ物:rootパスワードの再設定 - 美味しいもの - Yahoo!ブログ

を参考にしてrootパスワードを再設定し直しました。

 

mysqlをstopします。

sudo service mysql stop

 

mysqld_safeでパスワード確認をskipしてログインします。

sudo /usr/bin/mysqld_safe --skip-grant-tables

この状態で

sudo -u mysql /usr/bin/mysqladmin -u root password 'パスワード'

と入れると、

/usr/bin/mysqladmin: 

You cannot use 'password' command as mysqld runs

 with grant tables disabled (was started with --skip-grant-tables).

Use: "mysqladmin flush-privileges password '*'" instead

とエラーが

 

bind続き


ubuntuにbind9をインストールします。 - awm_kaerukoの日記

の続きです。

無事新サーバでネームサーバが立てられたら

ファイルを旧からコピーしてきます。

この時、ファイルのオーナーが変わってしまうと

実行出来ないスクリプトなどが出てくる可能性があるので

ファイルを一度tarで固めてオプションにpをつけると

オーナーが引き継がれます。

 

旧サーバで

tar -cvfpz ~~~.tar.gz virtualhostのdocrootのディレクトリ

この時、旧サーバのオーナーが新サーバにいない場合はユーザのIDが割り振られるようです。

ファイルをtarで固めたら、scpやsshでコピーし、新サーバで解凍します。

scp -p ~~~.tar.gz 新サーバのホスト:/作業ディレクトリ

新サーバで

tar xvfzp ~~~.tar.gz

展開が終わったらテストです。

まだドメイン管理サイトでのip変更は行わずテストをしたいので

telnetを使って新サーバのレスポンスを取得、確認します。

telnet 新サーバのIPアドレス 80

Escape character is '^]'.

入力待ちになったら

 

GET / HTTP/1.1 

と入力します。

GETの次の/はindexファイルということです。

好きなホスト名から先のuriを入力します。

これでレスポンスがhtmlで返ってくるので、

正しいhtmlが出ることを確認したらドメイン管理サイトからIPアドレスの変更と、

bind9のzoneファイルを新サーバのホスト名に変えてログを見ながら動作確認を行います。

DNSが旧から新に切り替わるにはだいたい1日~2,3日ほどかかる場合があるようです。

 

なお、bind9以降では名前解決を要求するクライアントを限定するかしないかといった設定が必須になったようです。

強いBIND DNSサーバを構築する 第四回 - マスターサーバのゾーン設定 — Eurotec Information Systems K.K. Web Site

これを設定しないとクライアントからサーバにhttpやメールのアクセスが出来なくなりました。

 

screenコマンド

ターミナルでサーバ作業中にネット切断して困ったことはありませんか?

screenコマンドを使うと便利です。

たとえばローカルマシンからサーバにsshクライアントで接続して

その画面をサーバ上に生成します。

ローカルからその画面上でコマンドを打てるし、

サーバ上で生まれた画面はネット切断される心配がないので

ちょびっと安心して作業出来ます。

 

screenコマンドを使う - インテグレイテッドシステムズ

 

 

サーバお引っ越し~virtualhost編~

前回に引き続き、apacheのvirtualhostをお引っ越しします。

ubuntuのバーチャルホストの設定ファイルは/etc/apache2/sites-availables/にあるので

新しいconohaサーバにも同様のファイルを設置し

/etc/apache2/sites-enables/にシムリンクを張ります。

設定ファイルをいじるときは一時保管ディレクトリにコピーし、

必ずdiffをとって更新しましょう。