• CentOS7 + MySQLでエラー

    CentsOS7 + MySQL5.6 をインストールしたらエラーが出た。

    
    Starting mysqld (via systemctl): Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.
    
    

    エラーの内容を確認する。

    
    # systemctl status mysqld.service
    ● mysqld.service - SYSV: MySQL database server.
    <%%KEEPWHITESPACE%%> Loaded: loaded (/etc/rc.d/init.d/mysqld; bad; vendor preset: disabled)
    <%%KEEPWHITESPACE%%> Active: failed (Result: exit-code) since 水 2018-03-21 11:11:38 JST; 22s ago
    <%%KEEPWHITESPACE%%> Docs: man:systemd-sysv-generator(8)
    <%%KEEPWHITESPACE%%> Process: 1197 ExecStart=/etc/rc.d/init.d/mysqld start (code=exited, status=1/FAILURE)
    
    3月 21 11:11:38 localhost systemd[1]: Starting SYSV: MySQL dat...
    <%%KEEPWHITESPACE%%> 3月 21 11:11:38 localhost mysqld[1197]: /etc/rc.d/init.d/mysql…ん
    <%%KEEPWHITESPACE%%> 3月 21 11:11:38 localhost systemd[1]: mysqld.service: control ...
    <%%KEEPWHITESPACE%%> 3月 21 11:11:38 localhost systemd[1]: Failed to start SYSV: My...
    <%%KEEPWHITESPACE%%> 3月 21 11:11:38 localhost systemd[1]: Unit mysqld.service ente...
    <%%KEEPWHITESPACE%%> 3月 21 11:11:38 localhost systemd[1]: mysqld.service failed.
    Hint: Some lines were ellipsized, use -l to show in full.
    
    

    メッセージが最後まで表示されない。オプションをつけて最後まで表示する。

    
    # systemctl status mysqld.service -a
    ● mysqld.service - SYSV: MySQL database server.
    <%%KEEPWHITESPACE%%> Loaded: loaded (/etc/rc.d/init.d/mysqld; bad; vendor preset: disabled)
    <%%KEEPWHITESPACE%%> Active: failed (Result: exit-code) since 水 2018-03-21 11:12:16 JST; 2min 28s ago
    <%%KEEPWHITESPACE%%> Docs: man:systemd-sysv-generator(8)
    <%%KEEPWHITESPACE%%> Process: 1217 ExecStart=/etc/rc.d/init.d/mysqld start (code=exited, status=1/FAILURE)
    
    3月 21 11:12:16 localhost systemd[1]: Starting SYSV: MySQL database server....
    <%%KEEPWHITESPACE%%> 3月 21 11:12:16 localhost mysqld[1217]: /etc/rc.d/init.d/mysqld: 行 16: /etc/sysconfig/network: そのようなファイルやディレクトリはありません
    <%%KEEPWHITESPACE%%> 3月 21 11:12:16 localhost systemd[1]: mysqld.service: control process exited, code=exited status=1
    <%%KEEPWHITESPACE%%> 3月 21 11:12:16 localhost systemd[1]: Failed to start SYSV: MySQL database server..
    <%%KEEPWHITESPACE%%> 3月 21 11:12:16 localhost systemd[1]: Unit mysqld.service entered failed state.
    <%%KEEPWHITESPACE%%> 3月 21 11:12:16 localhost systemd[1]: mysqld.service failed.
    
    

    /etc/sysconfig/network ファイルが無いとの事でした。

    空ファイルを作れば解決しました。

    
    touch /etc/sysconfig/network
    
    

  • CentreCOM AR260 で IP Unnumbered設定

    アライドテレシス

    CentreCOM AR260 V2

    • IP Unnumbered を行う場合はNAT機能をOFFにしなければならない。
      2時間もハマりました。

    [システム管理] -> [サービスの有効/無効] -> [ファイアウォール] -> [NAT] からチェックを外す。


  • ホスト名検索/nslookup

    東日本大震災で作業環境が安定しないのでウェブツールを作ってみました。

    ホスト名検索/nslookup


  • PHP5.3でPHP Parse error: syntax error, unexpected T_ENDWHILE

    PHP 5.3にアップデートしたらWordPressのトップページが真っ白になりました。

    Apacheのエラーログを確認してみました。

    # tail /var/log/httpd/error_log
    [Fri Mar 18 0:22:03 2011] [error] [client *.*.*.*] PHP Parse error:  syntax error, unexpected T_ENDWHILE in /home/webusers/dagejp/public_html/wp-content/themes/black-hat/index.php on line 45
    #
    

    テンプレートファイル内でエラーが出ているらしいです。確認したところ endwhile の行でエラーが出ているようです。

    endwhileはPHP5.3で対応していないのかもしれない。真偽を調査するのも面倒だったのでデザインテンプレートを変更して対応。


  • CakePHPでセッションIDが変わってしまう。(モバイル)

    CakePHPで構築したシステムでモバイルページを開発していたところ、セッションIDが頻繁に変わることに気が付きました。

    モバイルサイト向けにURLにPHPSESSIDのようなものを出して、ページ間でセッションIDを引き継いでいたところ、ページを遷移する間にセッションIDがコロコロと変わってしまう現象を発見しました。

    どうやらCakePHPはセキュリティの為にセッションIDを変更する処理が組み込まれているようです。モバイルサイトでは上記の仕様だとブラウザの「戻る」で戻って更新したりするとセッション切れ状態になるので非常に困ります。

    下記の修正で解決しました。

    Configure::write('Security.level', 'high');
    

    ↓ セキュリティレベルを high から medium へ変更。

    Configure::write('Security.level', 'medium');
    

    で、セッションIDが変わらなくなりました。


  • LVMパーティションを拡張する。

    自宅のXen仮想サーバー機でLVMパーティションのキャパシティがオーバーしました。
    このままでは仕事にならないので、LVMパーティションの容量を拡張します。

    LVMパーティションを拡張する。

    ・現在のサイズに8GBを追加で割り当てる。
    
    # lvextend -L+8G /dev/VolGroup00/LogVol02
    

    ・パーティションを50GBに拡張する。

    # lvextend -L 50G /dev/VolGroup00/LogVol02
    

    ext2/ext3 のファイルシステムをチェックする

    # e2fsck -f /dev/VolGroup00/LogVol02
    

    ext2 / ext3 ファイルシステムをリサイズする

    # resize2fs /dev/VolGroup00/LogVol02
    

    *)同時にフォーマットもされる。


  • EC-CUBEで商品情報が登録できなくなった

    快適な新サーバーが開通したので稼働中のEC-CUBEを新サーバーへ移管しました。そして今日、商品マスタを登録しようとしたところ次のようなエラーが発生し、登録できませんでした。

    システムエラーが発生しました。
    大変お手数ですが、サイト管理者までご連絡ください。

    data/logs/site.log を確認したところ、次のようなエラーメッセージが残されていました。

    INSERT INTO dtb_products(name,status,product_flag,main_list_comment,main_comment,point_rate,deliv_fee,comment1,comment2,comment3,comment4,comment5,comment6,sale_limit,sale_unlimited,deliv_date_id,note,update_date,creator_id,main_list_image,main_image,main_large_image,sub_image1,sub_large_image1,sub_image2,sub_large_image2,sub_image3,sub_large_image3,sub_image4,sub_large_image4,sub_image5,sub_large_image5,file1,file2,sub_title1,sub_comment1,sub_title2,sub_comment2,sub_title3,sub_comment3,sub_title4,sub_comment4,sub_title5,sub_comment5,create_date) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,Now(),?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,Now())
    DB Error: constraint violation
    
    INSERT INTO dtb_products(name,status,product_flag,main_list_comment,main_comment,point_rate,deliv_fee,comment1,comment2,comment3,comment4,comment5,comment6,sale_limit,sale_unlimited,deliv_date_id,note,update_date,creator_id,main_list_image,main_image,main_large_image,sub_image1,sub_large_image1,sub_image2,sub_large_image2,sub_image3,sub_large_image3,sub_image4,sub_large_image4,sub_image5,sub_large_image5,file1,file2,sub_title1,sub_comment1,sub_title2,sub_comment2,sub_title3,sub_comment3,sub_title4,sub_comment4,sub_title5,sub_comment5,create_date) VALUES ('test','2','00000','test','test','11',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'11',NULL,'1',NULL,Now(),'2','07291930_4c51585f108ce.gif','07291931_4c51586425a77.gif',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,Now())
    [nativecode=1048 ** Column 'note' cannot be null]
    

    確認する限りだと  dtb_products テーブルの note という項目にNULLを入れよ

    うとして失敗しているように受け取れます。テーブル定義を調べたところ、note は NULLを許可していないご様子。 結果 mysql にキックされていたようです。

    旧サーバーの dtb_products テーブルを確認いたしましたところ、 note にはNULL ではなく ” (空) データが入ってました。

    たぶん、今まで ” が挿入されようとした時そのまま空データとして挿入されていたところ、データベース接続ライブラリのバージョンアップなどのせいで、” ではなく NULL を挿入するような仕様になってしまっていたのだと思います。

    dtb_products.note にNULLを許可するようにして対応しました。

    mysql> ALTER TABLE dtb_products CHANGE COLUMN note note text DEFAULT NULL;
    
    

  • MySQLでインポート/エクスポートするための権限付与

    MySQLのコンソールからCSVにエクスポート、CSVからインポートする際に権限が無い、と叱られたので、FILE権限を付与し、ディスクへのアクセス権限をあたえる。
     
    
    エラー内容。
    
    
     -> INTO OUTFILE "~/mst_item_single.csv" FIELDS TERMINATED BY ','
     -> OPTIONALLY ENCLOSED BY '"';</pre>
    ERROR 1045 (28000): Access denied for user 'eccubemanager'@'localhost' (using password: YES)
    mysql> ;
    ERROR:
    No query specified
    

    MySQL のコンソールにて。

    GRANT FILE
    ON *.*
    TO hogehoge@localhost;
    

  • Samba3で一般的なファイルサーバー構築完全版 – その他設定 p.3

    << | 1 | 2 | 3 |

    前回でSambaサーバー自体の設定は完了しました。

    今回は、iptables設定や自動起動スクリプトの設置等、まわりの設定を行っていきます。

    (CentOS / Fedora / RH*の方のみ)
    まずは、使用するポートを開けましょう。

    使用するポートは、次の4つです。

    nmbd : 137/UDP、138/UDP
    smbd : 139/TCP、445/TCP

    nmbdは、マイネットワークでマシンをブラウジングする機能を提供します。
    smbdは、本来のファイル転送の機能を提供します。
    ファイル転送のみであれば、139/TCP(もしくは445/TCP)のみを開けば機能します。

    私は普段NetBIOS over TCP/IPしか使わないので139/TCPのみしか開放していませんが、4つ全てのポートを開けておけば確実でしょう。今回は紹介しませんが、SWATを利用される場合は 901/TCP も開いておきましょう。

    ■ iptablesの設定 (CentOS / Fedora / RH*)

    # vi /etc/sysconfig/iptables
    

    この行を追加
    ・ /etc/sysconfig/iptables

    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
    -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 137:138 -j ACCEPT
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 139:445 -j ACCEPT
    -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
    

    SWAT利用の場合は901/TCPも

    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
    -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 137:138 -j ACCEPT
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 139:445 -j ACCEPT
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 901 -j ACCEPT
    -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
    
    
    # service iptables restart
    
    

    ■ ライブラリのパスを通す (CentOS / Fedora / RH*)

    ここまで来たら後はsambaを起動するだけですが、configure オプションに –prefixを設定したのでライブラリのパスが通っていない可能性があります。

    試しに nmbd を起動してみて次のようなエラーが出たらパスを通しましょう。

    # /usr/local/samba3/sbin/nmbd
    /usr/local/samba3/sbin/nmbd: error while loading shared libraries: libtalloc.so.1: cannot open shared object file: No such file or directory
    

    ライブラリのパスを通す。

    (CentOS / Fedora / RH*)
    # echo "/usr/local/samba3/lib" > /etc/ld.so.conf.d/samba.conf # ライブラリのパスを設定
    # ldconfig # パスをキャッシュ化する。 # 設定したパスを通す
    

    パスを通したら起動できるかを確認。
    無事にライブラリが読み込まれると起動します。

    
    # /usr/local/samba3/sbin/nmbd
    
    

    何も表示されなければ起動してます。
    起動したら止めておいてください。

    
    # killall nmbd
    
    

    ■ 動作確認

    nmbd、smbd を起動します。

    # /usr/local/samba3/sbin/nmbd
    # /usr/local/samba3/sbin/smbd
    

    起動したらWindowsからアクセスしてみます。
    マイコンピュータかIEを開いてアドレスバーのところに次のように入力します。

    \\[sambaサーバーのIPアドレス]\

    既にファイルサーバーとして機能するはずです。

    プロセスは一度落としておきます。

    
    # killall nmbd smbd
    
    

    ■ 自動起動スクリプト

    ■ OS起動時に起動してくれさえすればいい場合 (RHクローン/*Linux/*BSD)

    ・ vi /etc/rc.local

    # nmbd
    if [ -x /usr/local/samba3/sbin/nmbd ]; then
      /usr/local/samba3/sbin/nmbd -D
    fi
    # smbd
    if [ -x /usr/local/samba3/sbin/smbd ]; then
      /usr/local/samba3/sbin/smbd -D
    fi
    

    ■ RHのクローンをお使いでchkconfigでプロセスを管理したい場合。

    chkconfig用の起動スクリプト作成。

    ・ vi /etc/rc.d/init.d/samba

    
    #!/bin/sh
    #
    # Startup script for samba
    #
    # chkconfig: 345 85 15
    # description: samba
    
    # Source function library.
    . /etc/rc.d/init.d/functions
    
    SMBD='/usr/local/samba3/sbin/smbd'
    NMBD='/usr/local/samba3/sbin/nmbd'
    
    SMBPID='/usr/local/samba3/var/locks/smbd.pid'
    NMBPID='/usr/local/samba3/var/locks/nmbd.pid'
    
    case "$1" in
    start)
      echo -n "Starting samba"
      $SMBD -D
      $NMBD -D
      echo
      ;;
    stop)
      echo -n "Shutting down samba"
      PIDS=`cat $SMBPID`
      PIDS="${PIDS} `cat $NMBPID`"
      kill $PIDS
      echo
      ;;
    restart)
      $0 stop
      $0 start
      ;;
    *)
      echo "Usage: $0 {start|stop|restart}"
    
    exit 1
      esac
    
    exit 0
    
    # chmod +x /etc/rc.d/init.d/samba
    # chkconfig --add samba # chkconfigに追加
    # service samba start # 起動してみる
    # ps ax | grep samba # 起動できてる?
    1737 ? Ss 0:00 /usr/local/samba3/sbin/smbd -D
    1739 ? Ss 0:00 /usr/local/samba3/sbin/nmbd -D
    1740 ? S 0:00 /usr/local/samba3/sbin/smbd -D
    1742 pts/0 S+ 0:00 grep samba
    
    # chkconfig samba on  # OS 起動時に service samba start を実行
    

    これで一通り作業は終了です。

    # service samba start
    # service samba stop
    

    でプロセスを管理できます。

    << | 1 | 2 | 3 |


  • Samba3で一般的なファイルサーバー構築完全版 – smb.conf設定 p.2

    << | 1 | 2 | 3 | >>

    Samba サーバーの設定に入ります。
    前回で SWAT も同時にインストールしましたが使いません。

    今回は、基本的なファイルサーバーを構築するのに最低限必要なパラメータのみしか設定しませんので、空のファイルから作成します。サーバーアプリケーションの本質/構造を手っ取り早く理解する為にもそちらの方が良いです。

    英語で説明が書かれたサンプルも用意されています。
    ./samba-3.2.7/examples/smb.conf.default

    ■ Samba用UNIXユーザの追加

    ファイルサーバー用にUNIXユーザーを追加します。
    ここで追加するユーザーは、ファイルがアップロードされた時にそのファイルの所有者として設定されます。
    ファイルサーバーのパス(ドキュメントルート)もこのユーザのホームディレクトリ内に設置することとします。

    # adduser -u 200 -d /home/samba samba
    

    ・共有フォルダ作成

    # mkdir /home/samba/public
    # chown samba /home/samba/public
    # chgrp samba /home/samba/public
    

    もし /var/samba/public ディレクトリをファイルサーバーのドキュメントディレクトリとしたければ、samba ユーザのホームディレクトリを /var/samba としてください。

    (/var/samba/public をドキュメントルートとする場合)
    # adduser -u 200 -d /var/samba samba
    # mkdir /var/samba/public
    # chown samba /var/samba/public
    # chgrp samba /var/samba/public
    

    ■ ログディレクトリの作成

    # mkdir /var/log/samba
    

    ■ 設定ファイルの作成

    # vi /usr/local/samba3/lib/smb.conf
    

    取り合えず完成形。

    ・/usr/local/samba3/lib/smb.conf

    [global]
    workgroup = MYGROUP
    server string = Samba Server
    security = share
    hosts allow = 192.168.200.
    unix charset = UTF-8
    dos charset = CP932
    netbios name = linux
    guest account = samba
    log file = /var/log/samba/log.%m
    max log size = 50
    dns proxy = no
    
    [public]
    path = /home/samba/public
    public = yes
    only guest = yes
    writable = yes
    

    1つずつ説明していきます。

    smb.conf には、「セッション」と「パラメータ」との2種類の要素が存在します。

    上記の設定内容だとセッションは、[global] と[public]という部分に当てはまります。global は特殊なセッションで、Sambaサーバー全般に関わる設定を記述する部分です。public は、Windows共有でいうところの共有フォルダとなります。このセッション名は任意です。publicでもshareでもmyspace構いません。
    共有フォルダは後からいくつでも増やすことができ、それに対するパスも自由に指定できます。

    そして、パラメータとは、それらのセッションに対して値を設定していくものです。
    work group や path がそれに当たります。

    では、それぞれ設定していきます。
    まずは global セッションから。

    ■ 設定ファイルの修正 – [global]セクション

    ■ workgroup : ワークグループ名

    NetBIOS (Windowsネットワーク) のワークグループ名を指定します。既存のWindowsクライアントと設定を合わせてください。大体「WORKGROUP」とか「MYGROUP」とか「HOME」とかになってます。

    ・確認する方法

    マイコンピュータ、右クリック => プロパティ
    -> 「システムのプロパティ」ダイアログボックスが表示されます。
    「コンピュータ名」タブをクリック
    ->「ワークグループ」と表示されます。

    それがNetBIOSのワークグループ名です。
    わかりやすい名前に変更しても良いでしょう。

    ■ server string : サーバーの説明

    「マイネットワーク」でネットワーク上のマシンを一覧表示した時に、サーバー名の下に表示されるコメントっぽい文字列です。

    ■ security : セキュリティモード

    認証なしのゲストユーザーのみで使用する場合は「share」を指定してください。
    PAMやsambapass等によってユーザ単位の認証機能を利用する場合は「user」を指定してください。

    ■ hosts allow : 許可ホスト

    その名の通り、接続を許可するホストです。
    192.168.1.* からの接続を許可したい場合は次の様に指定する。

     hosts allow = 127. 192.168.1.
    

    ※)最後のドットを忘れない事! 基本的にSambaは、NetBIOS over TCP/IP をサポートしているので、制限を掛けずにグローバルに出すと、全世界からアクセスが可能になります。ローカルに設置したとしてもセキュリティの為に hosts allow は設定しておきましょう。

    ■ unix charset : Unix文字セット

    Unix上の文字コードです。 日本語等のマルチバイトを含む名前のファイルやディレクトリを受信した際に、どの文字コードを使ってファイルシステムへ保存するか、という指定になります。 (※ファイルの中身ではありません。ファイル名です。)

     unix charset = UTF-8
    

    と指定した場合、WindowsクライアントからSambaサーバーに「てすと.txt」というファイルがアップロードされる時、Sambaはそのファイル名をCP932(日本語Shift-JIS)からUTF-8へ変換してからファイルシステムへ保存します。 UNIX上ではUTF-8で「てすと.txt」と保存される事になります。 unix charset に関しては、OSごとに合わせれば良いのではないでしょうか。 CentOS、Fedora、RH*等、デフォルトのローケルにUTF-8が使われているOSならば「UTF-8」を、FreeBSD、NetBSD、 OpenBSD等、デフォルトのローケルにEUC-JPが使われているOSならば「EUC-JP」を指定します。 とは言っても、無理にローケルに合わせなくても正常に動作はします。ただ、ローケル以外の文字コードを指定した場合、ターミナルから ls とした時に日本語が文字化けします。

    ■ dos charset : Dos文字セット

    Sambaがクライアントにファイルの一覧を出力する時に、どの文字コードを使って出力するか。という指定になります。 Windowsクライアントからファイルを参照したい場合は、 CP932(日本語Shift-JIS)を指定する必要があります。 クライアントが*BSDのみとか、Linuxのみの場合は、UTF-8やEUC-JP等で良いと思います。 いちいちCP932にコンバートする必要がなくなりますから。

    ■ netbios name : NetBIOS名

    Sambaサーバーに割り当てるNetBIOS名(コンピュータ名)です。

    ■ guest account : ゲストアカウント

    「samba用UNIXユーザの追加」で追加したUNIXユーザ名を指定します。

     guest account = samba
    

    「user=guest : pass=なし」というアカウントでログインした時にマップされるUnixユーザです。 マップされたユーザは、ファイルやディレクトリを保存する時に、その所有者として設定されるユーザとなります。

    ■ log file : ログファイル

    ログファイルを指定します。

     log file = /var/log/samba/log.%m
    

    「%m」にNetBIOS名が置き換えられます。 接続、読み取り、書き込み等の記録を保存します。

    ■ max log size : 最大ログサイズ

    log file パラメータに指定したログファイルの最大サイズをKB単位で指定します。

    ■ dns proxy : DNSプロキシ

    NetBIOS名をDNS経由で解決するか。 今回は特にセキュリティに神経質ならなくても良いような内容なので、 no にしています。

    ■ 設定ファイルの修正 – [public]セクション

    public セッションの設定です。 「public」という文字は任意です。share や myspace 等に変更しても構いません。

    ■ path

    共有フォルダのパス(ドキュメントルート)。 アップロードされたファイルの保存場所となります。 guest account で指定したUNIXユーザが書き込み可能である場所を指定する必要があります。(security = share時)

    ■ public ( = guest ok )

    パスワードなしでのアクセスを認める。securityに share 以外のパラメータを指定した場合、無視されます。

    ■ only guest

    ゲストアカウントでのみ接続を許可する

    ■ writable

    書き込みを許すか。yesにしないとファイルをアップロードできません。 次回は、その他設定、動作確認と自動起動設定です。

    << | 1 | 2 | 3 | >>