タグ: Linux コメントスレッドの表示切替 | キーボードショートカット

  • 西川 洋平 6:56 PM | 2014年3月11日 パーマリンク |
    タグ: Linux,   

    PDOを使ってのDB接続時のエラー 

    CentOs上のphpからPDOを使ってSQLServerに接続しようとしたところ、以下のエラーが表示されて繋がらないとのことで軽い気持ちで解析を手伝っていたら、unixODBCだったりFreeTDSだったりと複雑な環境もあり、・・・・・・ハマった。

    ◆エラー・・・というよりExeptionのメッセージ
    [unixODBC][FreeTDS][SQL Server] Unable to connect: Adaptive Server is unavailable or does not existtest

    ◆ソース

    ?php
    $dsn = 'odbc:AAAA';
    $user = 'XXX';
    $password = 'YYY';
    
    try {
        $dbh = new PDO($dsn, $user, $password);
    } catch (PDOException $e) {
        echo 'Connection failed: ' . $e->getMessage();
    }
    ?

    ◆解決した方法
    今回の問題はSELinuxとやらの設定だった。参考→ ここ
    httpd_can_network_connect がoff(無効)になっているのを有効に変えただけ。

    設定の確認コマンド

    # getsebool httpd_can_network_connect
    httpd_can_network_connect --> on  (有効の場合)
    httpd_can_network_connect --> off (無効の場合)

    設定の変更コマンド

    # setsebool httpd_can_network_connect 1

    ※getseboolで確認だったので、勘でsetseboolでやってみたところできてしまった。1にしたらonになったので、0だったらoffだと思
    ※真面目に使う人はちゃんと調べましょう。

    unixODBCでも、FreeTDSでも、SQL Serverでも、apacheでも、php.iniでもないとか・・・ハマれるっ!!    で、SELinuxって何?

    聞いてみたところ、SELinuxはdisableにしちゃうのが普通らしい。

     
  • 西川 洋平 10:48 AM | 2014年2月20日 パーマリンク |
    タグ: Linux   

    cronの内容確認 

    # ls /var/spool/cron/
    admin  manage  root
    
    # cat /var/spool/cron/*
    0 1 * * * /home/admin/program/example.sh
    0 2 * * * /home/manage/program/manage.sh
    0 0 * * * /root/program/test.sh

    詳しくはこちら

     
  • 西川 洋平 10:38 AM | 2014年2月20日 パーマリンク |
    タグ: Linux   

    rootユーザのメール送信先 

    前置き
    ——————–
    社内のどこかのサーバから毎日、迷惑メールが来る・・・

    差出人:Cron Daemon
    件名:「Cron [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.daily」
    宛先:root@localhost.localdomain

    って、なぜにオレに・・・
    誰かがクーロンをミスったんだろうけど・・・
    ——————–

    そもそも、rootユーザのメール送信先ってどこにあるんだろ?と思ってググッたメモ。

    以下のファイルらしいので開いてみる。

    [root@xxxx~]# cat /etc/aliases 

    最後に書かれてる・・・

     ・
     ・
     ・
    # Person who should get root's mail
    #root:          marc
    root:emura@poweredge.co.jp 

    書きかえた後は以下のコマンドを実行しないと有効にならないらしい。

    [root@xxxx~]# newaliases 

    こんなファイルみたことないんだが、いつの間に設定されたのか・・・

     
  • 西川 洋平 2:07 PM | 2014年1月14日 パーマリンク |
    タグ: Linux,   

    Mysql起動できない 

    Mysqlを起動しようとしたら、以下のようなエラーで起動できなくなっていたらしい。
    「他のMysqlデーモンが同じソケットで既に起動してんだよ、コラ」

    [root@localhost ~]# /etc/init.d/mysqld restart
    mysqld を停止中: [ OK ]
    Another MySQL daemon already running with the same unix socket.
    mysqld を起動中: [失敗]
    [root@localhost ~]#

    内容は全く理解していないが、以下のコマンドで復旧した…

    service mysqld stop
    mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak
    service mysqld start

     
  • 太田 和宏 4:29 PM | 2013年12月26日 パーマリンク |
    タグ: Linux, ,   

    LinuxからMicroSoft SQLサーバに接続する設定 

    ググるとサイトがあふれるほど出てくるけど、
    ウソが書いてあることが多いので、整理しておく。

    ◇必要なアプリをインストールする

    1. yum -y install freetds
    2. yum -y install unixODBC

    ※yumでインストした方が設定がなくて楽~♪

    ◇odbc.ini を編集

    1. vim /etc/odbc.ini

    —————————————————————(ここから
    [ODBC Data Sources]
    MS-SQL = FreeTDS ODBC Driver

    [MS-SQL]
    Driver = /usr/lib64/libtdsodbc.so.0
    Servername = MSDB
    Database = (SQLサーバ上の実際のDB名(スキーマ))
    Port = 1433
    —————————————————————(ここまで
    ※MS-SQL の部分はお好きに。。。
    ※MSDB の部分もお好きに。。。

    ◇freetds.conf を編集

    1. vim /etc/freetds.conf

    —————————————————————(ここから
    [MSDB]
    host = 192.168.150.xx
    port = 1433
    tds version = 7.2
    client charset = UTF-8
    language = english
    —————————————————————(ここまで
    ※[global] 以外のエンティティはコメントアウトする
    ※MSDB 部分は、odbc.ini の設定と揃える

    再起動等は不要なので、上記ファイルを保存したら
    いきなり下記のFreeTDS接続コマンドで実験する。

    1. tsql -S MS-SQL -U sa -P (password)

    うまく接続できると、こんな感じの表示に・・・

    locale is “ja_JP.UTF-8”
    locale charset is “UTF-8”
    using default charset “UTF-8”
    1>
    1>use master
    2>go
    1>select @@version
    2>go
    Microsoft SQL Server 2005(Intel X86)
    May 3 2005 23:18:38
    Copyright (c) 1988-2003 Microsoft Corporation
    Personal Edition on Windows NT 5.2 (Build 3790: Service Pack 2)

    (1 row affected)
    1>

    ダメだったら、上記の2個のファイルをよく見直すこと。
    特に、実験コマンドの「MS-SQL」の部分は間違えやすいので注意!

    次に、ODBC経由接続の実験をする。

    1. isql -v MS-SQL sa (password)

    うまく接続できると、こんな感じの表示に・・・

    +—————————————+
    | Connected!   |
    | |
    | sql-statement    |
    | help [tablename] |
    | quit |
    | |
    +—————————————+
    SQL>

    ここまでうまくいったら、PHPから接続可能らしい・・・がっ!?
    (ただし、ODBC経由なのでcakeとかORMからだとこれだけじゃダメらしい)

      「PHPからの接続は知~らね(´・ω・`)」(N氏 談)

     
  • 太田 和宏 1:57 PM | 2013年12月17日 パーマリンク |
    タグ: Linux   

    Linuxにおけるexpect機能について豆知識 

    Cloudサーバ上のDBバックアップを自動化したいという要望に対する処理で発見したこと。

    【想定】
    □potal.poweredge.co.jp側のシェル(cronでAM4:00/日 起動)
    1.バックアップ必須のスキーマに対してDBDumpをしてdumpファイルを作成
    2.上記ファイルをtarコマンドで圧縮
    3.scpコマンドでstaff.poweredge.co.jpに転送
    ※scpコマンドはインタラクティブ(対話形式)なため、expectを利用する

    □staff.poweredge.co.jp側シェル(cronで1分毎起動)
    1.転送ディレクトリを監視
    2.対象ファイルを見つけたら、tarコマンドで解凍
    3.対象ファイルを共有フォルダ(/var/www/html/webdav/all/100.backup)に移動

    上記の想定でcron設定したが、”なぜか”動作せず・・・(´・ω・`)?

    【原因】
    potal.poweredge.co.jpサーバ側のシェルがエラーになり実行時エラー
    expectの実行時にエラーになることが判明。interact は cron ではダメらしい。
    interact ですが、man を読むとこう書いてありました。

    interact [string1 body1] … [stringn [bodyn]]
    は、現プロセスの制御をユーザーに渡す。
    結果、現プロセスに送られたキーストロークと現プロセスの標準出力と
    標準エラー出力が復帰する。

    標準出力て・・・orz ダレが返事するのかね??
    なので、interactを利用しない方式に修正・・・

    ◇以下は、各シェルの中身
     □potal.poweredge.co.jp側(/root/bkup_db.sh)
    ———————————————————————–
    #!/bin/bash

    1. 変数指定

    USER=root
    PASSWORD={PASSWORD}
    BASEDIR=/tmp/DBBKUP
    WIKIDIR=/var/www/html/wiki/
    TARGET=root@staff.poweredge.co.jp
    PSWD={PASSWORD}

    #DB格納対象外ファイルのバックアップ&転送処理+ファイル圧縮
    tar zcvf $BASEDIR/wikisrc_bk.tar.gz $WIKIDIR/LocalSettings.php $WIKIDIR/images $WIKIDIR/skins $WIKIDIR/extensions

    #データベースバックアップ処理
    #mensetsu
    mysqldump -h localhost -u $USER -p$PASSWORD mensetsu_db -c > $BASEDIR/mensetsu_db_bk.sql

    #redframe
    mysqldump -h localhost -u $USER -p$PASSWORD redframe -c > $BASEDIR/redframe_bk.sql

    #redmine
    mysqldump -h localhost -u $USER -p$PASSWORD db_redmine -c > $BASEDIR/db_redmine_bk.sql

    #wikidb
    mysqldump -h localhost -u $USER -p$PASSWORD wikidb -c > $BASEDIR/wikidb_bk.sql

    #wordpress
    mysqldump -h localhost -u $USER -p$PASSWORD wordpress -c > $BASEDIR/wordpress_bk.sql

    #wr_db_2013
    mysqldump -h localhost -u $USER -p$PASSWORD wr_db_2013 -c > $BASEDIR/wr_db_2013_bk.sql

    #転送対象ファイルを圧縮して1つにする
    tar zcvf ./dbbkup.tar.gz $BASEDIR

    #バックアップファイル転送
    expect -c ”
    set tomeout 120
    spawn scp -r ./dbbkup.tar.gz $TARGET:/root
    sleep 3

    expect {
    “Are you sure you want to continue connecting (yes/no)? ” {
    send “yesr”
    expect “password:”
    send “${PSWD}r”
    } “password:” {
    send “${PSWD}r”
    }
    }

    expect {
    send “quitn”
    }

    ———————————————————————–
    今回のミソは、このシェルの最後の 「send “quitn”」を追加すること。
    NGだったシェルには、ここに 「interact」 とだけ書いてあった。
    「これだけかよ・・・」って思うかもしれないけど、知らないとハマるよ・・・
    ということで豆知識(´・_・`)

     
  • 西川 洋平 11:13 AM | 2013年11月7日 パーマリンク |
    タグ: Linux,   

    SVN最新版取得のシェル 改 

    var/www/html/hoge にcakeのwepアプリを追加するとして・・・

    1.hoge直下に”update_log”というディレクトリを作成。
    2.hoge直下に”update.sh”を作成(下記参照)
    3.「sh var/www/html/hoge/update.sh」でシェル実行
    以降は3.を実行すれば最新版を持ってこれる。

    update.sh
    新バージョン

    #!/bin/sh
    
    REPOS=http://192.168.150.31/repos/XXXX/trunk
    DIR=$(cd $(dirname $0); pwd)
    LOGDIR=$DIR/update_log
    
    if [ ! -d $LOGDIR ]
    then
        mkdir $LOGDIR
    fi
    
    #
    #before checkout
    #
    rm -rf $DIR/app/tmp
    
    #
    #exec checkout
    #
    svn co --force $REPOS $DIR >> $LOGDIR/update_`date +%Y%m%d_%H%M%S`.log
    
    #
    #after checkout for cakePHP
    #
    rm -fv `find $DIR/app/tmp -type f`
    chown -R apache:apache $DIR/*

    旧バージョン

    #!/bin/sh
    SVN="http://192.168.xxx.xxx/repos/hoge/trunk"
    DIR=$(cd $(dirname $0); pwd)
    
    rm -fv `find $DIR/app/tmp -type f` > /dev/null 2>&1
    svn checkout $SVN $DIR >> $DIR/update_log/update_`date +%Y%m%d_%H%M%S`.log
    rm -fv `find $DIR/app/tmp -type f` > /dev/null 2>&1
    chown -R apache:apache $DIR/*
     
  • 西川 洋平 11:27 AM | 2013年5月1日 パーマリンク |
    タグ: Linux, , , phpmotion   

    PE-TUBE(phpmotionのインストール) 

    基本は、http://www.kurobuti.com/linux_server/?page_id=543 のとおりで

    問題なし。

    ※ただし、phpmotionのrpmは登録制なので注意(Freeだけど)

     

    【上記サイトの内容で不足している点】

    ■手順(6)のドキュメントルートをApacheのデフォルト(/var/www/htmlフォルダ)から変更すると、修正箇所が激増する(というか、エラーを頼りに修正していくしかなくなる)のでやめた方がいい。ちょっとカッコ悪いかもしれないけど。。

    ■手順通りだと手順(12)のチェック画面でエラーが出力される。

    ※「_PHP enable_dl」がOffのままでエラーになる

    この表示が出たら /etc/php.ini  ファイルの enable_dl = Off をOnに変更すると直る

    最後の最後で、phpmotionデフォルトルート配下の /setup フォルダを削除

    しないと、完了しない。(余計なお世話だと思うが)

    当然、フォルダ名変更でも問題なし。

     

    ■動画のHOMEは、http://localhost(IPアドレス)/  でアクセスする

    ■管理者画面は、http://localhost(IPアドレス)/siteadmin/ でアクセスする

    ※動画のアップロードは、何か1個でもカテゴリを作っておかないと失敗する

    ※アップロードできるファイルサイズは、php.ini のpost_max_size = 8M を

    サイズアップしないとダメ

    ※アップロードする動画形式は、flvがいいんじゃないかな。。。

    ※動画はアップしてからリストに表示されるまでに数分かかる(変換していると思われる)

     

     
  • 西川 洋平 7:14 PM | 2013年4月30日 パーマリンク |
    タグ: Linux,   

    svnのリポジトリ移行 

    svnの移行時のメモ。簡単だった。。

    1. 移行元のリポジトリのダンプファイル作成
    2. [root@xxxxxx]svnadmin dump /var/www/svn/hogeproject > hogeproject.dump
      
    3. 作成したダンプファイルを移行先に転送
    4. 移行先に新規リポジトリ作成
    5. [root@yyyyy]svnadmin create /var/www/svn/hogeproject/
      
    6. 作成したリポジトリにダンプファイルロード
    7. [root@yyyyy]svnadmin load /var/www/svn/hogeproject/ < hogeproject.dump
      
    8. リポジトリがroot所有になってしまうので、apacheに変更しておく
    9. [root@yyyyy]chown -R apache:apache /var/www/svn/hogeproject
      

    これだけ。

    ちなみに、、、
    2のサーバ間でのファイル転送は以下のコマンドでできるらしい。
    以下を実行してパスワードを入れれば、転送してくれる。
    scp 【ファイル名】 【ユーザー名】@【移行先サーバアドレス】:【移行先パス】

    [root@xxxxx]scp hogeproject.dump username@192.168.XXX.XXX:/var/www/svn/hogeproject/
    
     
  • 西川 洋平 10:56 PM | 2013年2月12日 パーマリンク |
    タグ: Linux,   

    SVN最新版取得のシェル 

    svnでコミットしたら自動的に公開サーバー側をupdateしてくれるpostcommitが上手く動かなかったので、暫定でsvnから最新バージョンにupdateするシェルで対応してみた。意外と使えたのでメモ。公開するサーバーにSVNが入ってる時しか使えないけど・・・

    ここではsvnのTESTSystem/trunkで、(DocumentRootのpath)/TESTSystemを更新する

    1. 更新したいディレクトリの直下にシェルを作成(ここではupdate.sh)
      #!/bin/sh
      rm -rf /var/www/html/TESTSystem/(path)/cache/* ←※1
      svn checkout file://(svnのpath)/TESTSystem/trunk (DocumentRootのpath)/TestSystem/ ←※2
      chown -R apache:apache (DocumentRootのpath)/TESTSystem/* ←※3

      ※1update時にキャッシュなどを削除したければ、checkoutの前にこんなコードを付け加える。

    2. ※2svnからチェックアウト(最新版の取得)してきているだけ

      ※3とりあえず、apacheユーザーに変更しておいた

    3. ルート権限でシェルを叩けばupdate完了
      [root@localhost /]$sh /var/www/html/TestSystem/update.sh
     
c
新規投稿作成
j
次の投稿 / 次のコメント
k
過去の投稿 / コメント
r
返信
e
編集
o
コメント表示 / 非表示
t
トップへ移動
l
ログインへ
h
ヘルプを表示 / 非表示
Shift + ESC
取り消し