タグ

ブックマーク / kohkimakimoto.hatenablog.com (13)

  • シェルスクリプトの代わりにPythonを使う - オープンソースこねこね

    これまで、開発や運用時に使う、ちょっとしたコマンドラインツール、自動化スクリプトは、主にBashのシェルスクリプトで実装していたのですが、最近このような用途にはPythonを使うようにしています。 Bashスクリプトへの不満 スクリプトの実装方針 ポータビリティ重視のための縛りPythonプログラミング Tips __future__モジュールでバージョン2、3両方に対応させる バージョン2、3で異なるモジュールを、同じ名前で読み込む バージョン2、3を判別する関数を用意する よく使うスニペット 文字に色をつける 赤い文字でエラーメッセージを出力して終了する 外部コマンド実行する テキストをファイルに出力する ファイルに実行権限をつける スクリプトの同時、多重起動防止する コマンドライン・オプションの解析 HTTPリクエスト まとめ Bashスクリプトへの不満 Bashのスクリプト実装にお

    シェルスクリプトの代わりにPythonを使う - オープンソースこねこね
  • MySQL server version for the right syntax to use near 'delimiter ... というエラーで少しハマった件 - オープンソースこねこね

    PHPMigrate - PHPでマイグレーションツールを作った というMigrationプログラムを自作したのですが、このプログラムでMySQLのトリガを作成するSQLを実行したら、 mysql server version for the right syntax to use near 'delimiter ... というエラーがでて動作しませんでした。PHPからPDOでMySQLに接続してSQLを実行しているだけなんですが。 で、ちょっと調べたら、トリガ作成の時に使用してるdelimiterというコマンドが問題で、これはSQLではなくて、mysqlのクライアント/usr/bin/mysqlが用意しているコマンドとのこと。は~。どうりで動かんわけだ。 とはいえdelimiterを使えないのはちょっと困るので、SQLの実行をPDOの代わりにmysqlコマンドで行うことができるようにPH

    MySQL server version for the right syntax to use near 'delimiter ... というエラーで少しハマった件 - オープンソースこねこね
    k-holy
    k-holy 2017/03/28
    今更これにはまった…事実上、PDOベースのライブラリじゃトリガやファンクションは作成不可ということか
  • CentOS7でサーバを構築する際におこなっている基本設定 - オープンソースこねこね

    以前書いた CentOS6でサーバを構築する際におこなっている基設定 - オープンソースこねこね のCentOS7バージョンです。調査中の内容もあるので、情報は随時更新する予定です。 ※ここではサーバのロールにかかわらず行う基的な作業をまとめています。通常この環境の上にWebサーバ(httpd, nginxなど)やDB(MySQLなど)をインストールすることになります。 ※文中のコマンドは基的にrootユーザで行っているものとします。一般ユーザを使い必要に応じて都度root権限を使うようにしている方はsudoをつけるなど、コマンドを読み替えてください。 デフォルトターゲットの確認 サービスの起動設定の確認 ディクスサイズの確認 ロケールの設定 タイムゾーンとNTPの設定 ネットワーク関連の設定 ホスト名 ネットワーク・インターフェースの確認 IPアドレスの確認 ネットワークの疎通確

    CentOS7でサーバを構築する際におこなっている基本設定 - オープンソースこねこね
  • CentOSにLet's EncryptのSSL証明書を導入する - オープンソースこねこね

    やってみたので、手順をまとめました。実施したのはCentOS6+Apache2.2という、やや古い環境ですがCentOS7とかでも基的には同じはずです。 Let's Encryptの概要 手順 クライアントコマンドのインストール HTTPサーバの用意 クライアントコマンドを実行して証明書を取得 取得した証明書使うためのHTTPサーバの設定 自動更新のための設定 その他 Basic認証をかけたサイトにLet's Encryptを使う サードパーティツール CentOS6のpythonのバージョンが古い いろいろ参考にさせていただいたサイトなど Let's Encryptの概要 Let's Encryptは無料のSSL証明書を発行する認証局。 特徴は料金無料であるのと、専用のクライアントコマンドを使って証明書の発行を行う点。またワイルドカードの証明書は発行できない。有効期限が3ヶ月で、更新も

    CentOSにLet's EncryptのSSL証明書を導入する - オープンソースこねこね
  • PHPでcronのように定期実行をするプログラムを書いた - オープンソースこねこね

    kohkimakimoto/workerphp · GitHub 自分で使う分には最低限、必要な機能を実装できたので紹介します。以下のようなPHPファイルを記述してPHPのコマンドラインから実行するとプロセスが起動しっぱなしになりcront_timeで指定したスケジュールでジョブを定期実行してくれます。 <?php require_once __DIR__.'/vendor/autoload.php'; $worker = new \Kohkimakimoto\Worker\Worker(); // job for every minute. $worker->job("hello", ['cron_time' => '* * * * *', 'command' => function(){ echo "Hello world\n"; }]); // job runs a shell co

    PHPでcronのように定期実行をするプログラムを書いた - オープンソースこねこね
    k-holy
    k-holy 2016/09/13
  • Goでプロビジョニングツールを作った - オープンソースこねこね

    GitHub - kohkimakimoto/cofu: Minimum configuration management tool written in Go.github.com CofuというサーバプロビジョニングツールをGoで実装しました。Itamaeを参考に作りました。実装言語の違い(ItamaeはRubyによる実装)はありますが、外部仕様、内部実装、共にかなり似せて作ってあるので、ItamaeまたはItamaeが参考にしているchefを使ったことがあると、理解は簡単かと思います。特徴をざっくり説明すると、 ローカルでのプロビジョニングのみ対応。SSHなどでのリモートサーバのプロビジョニングはサポートしない Goなので実行ファイル一個で動く。導入が簡単 レシピはLuaのDSLで記述する 今のところ動作プラットフォームはRedHat(CentOS)のみをサポート あたりでしょうか。

    Goでプロビジョニングツールを作った - オープンソースこねこね
  • CentOS6でサーバを構築する際におこなっている基本設定 - オープンソースこねこね

    2016年にもなって今さらという感じですが、CentOS6でサーバを構築する際の自分がやっている初期の基設定、確認事項をまとめておこうと思います。 CentOS6のサポート期限が2020年までで、自分が今後メインに使っていく環境もCentOS7などに移行しようと思っています。遅まきながらローカルのVirtualBoxにCentOS7をいれていろいろ試していますが、CentOSは6と7で大幅な変更がなされ、今まで普通に出来ていたことを一から学び直す必要があったりしてツライ日々ではあります。 このように徐々にCentOS6から離れていくことになるので、そのあたりの記憶が急速に失われていく前に、今まで書いたメモなどを元に情報を整理しておこうかと思い立ったのがきっかけです。 ※ここではサーバのロールにかかわらず行う基的な作業をまとめています。通常この環境の上にWebサーバ(httpd, ngi

    CentOS6でサーバを構築する際におこなっている基本設定 - オープンソースこねこね
  • sshのラッパーコマンドを作った - オープンソースこねこね

    GoでSSHコマンドに便利機能を追加したコマンドを作りました。 2017/04/11 追記: この記事の内容は古くなっています! 2017/04/11時点の最新の仕様は、次の記事を参照してください SSHラッパーコマンドEsshのv1.0.0をリリースしました - オープンソースこねこね 追記ここまで。以下は2015/11時点の古い情報となります。 github.com 機能として Luaで~/.ssh/configに相当する設定を書ける。 zshの補完機能を使って、接続先一覧を出す。 サーバ接続時にフックを仕込める。自分はスクリーンの色を変えるの使っている。 複数のリモートサーバにまとめてコマンドを実行する。 といったところです。詳細はリポジトリのREADMEを見ていだければと思います。 ビルド済みバイナリをリリースページにおいてあるので、インストールはダウンロードして解凍してパスの通っ

    sshのラッパーコマンドを作った - オープンソースこねこね
    k-holy
    k-holy 2015/11/24
  • 第77回PHP勉強会でAltaxをとりあげていだだきました - オープンソースこねこね

    4/28にEngineYardさんで行われた第77回PHP勉強会で、私がオープンソースで作っているAltaxというPHPデプロイツールをとりあげていただきました。とっても嬉しかったのでブログに書いちゃいます。PHP勉強会についての詳細はリンク先を参照ください。 第77回PHP勉強会が開催されました セッションの内容が動画でアップされてあったので先日拝見させていただきました。 登壇者の木村さんには丁寧な資料を作っていただき、デモまでして頂いて感謝の限りです。 第77回 PHP勉強会で発表してきました : ぐりぺん 自分が作っているプログラムが衆人の前で実行される場面を見るというのは、なんだか緊張と気恥ずかしさみたいなものがあって、動画を再生しているPCの前でニヤニヤ、もじもじしてしまいました。俺きめぇ。 さて、セッション内であがっていた話題などについて、いくつか言及させていただきたいと思いま

    第77回PHP勉強会でAltaxをとりあげていだだきました - オープンソースこねこね
  • Composerがパッケージのstabilityを解決するしくみ - オープンソースこねこね

    PHPとComposerで先日composer/composerのdev-masterに依存したプログラムを作っていたら、composer installのときに以下のようなエラーがでてインストールできない問題にぶちあたりました。 Your requirements could not be resolved to an installable set of packages. Problem 1 - kohkimakimoto/altax v3.0.6 requires composer/composer dev-master -> no matching package found. ... 解決方法はcomposer.jsonに"minimum-stability": "dev"と"prefer-stable": trueを指定するか、対象のパッケージに"composer/compo

    Composerがパッケージのstabilityを解決するしくみ - オープンソースこねこね
  • TravisCIでSSHクライアントのテストをする。 - オープンソースこねこね

    AltaxというPHPで並列SSHするデプロイツールを作っているのですが、 これのSSH接続部分のテストは当然SSHサーバが必要で、そのへんをTravisでどーやるのかわからず、ずっと悩んでいました。 で、調べていたら、 https://github.com/libgit2/libgit2/pull/1774 が検索に引っかかって、これを見ながらやってみたらうまくできたので、メモしておきます。 やり方 以下のようなシェルスクリプトを用意します。 setup_ssh_server.sh #!/bin/sh sudo apt-get update -qq sudo apt-get install -qq libssh2-1-dev openssh-client openssh-server sudo start ssh ssh-keygen -t rsa -f ~/.ssh/id_rsa -N

    TravisCIでSSHクライアントのテストをする。 - オープンソースこねこね
  • PHP Webアプリケーションから非同期にコマンドを実行するライブラリをつくりました。 - オープンソースこねこね

    こんなの作りました。 BackgroundProcess Webのプロセスから重い処理を実行したいのだけど。。。 PHPCSVファイルなどから一括で大量のデータ投入を行いたいときがあります。 これをWebアプリケーションのプロセスでやろうとすると、処理時間が長いため、だいたいプロセスがタイムアウトしてエラーになってしまいます。困ったものです。 こういうとき、代わりにコマンドラインのプログラムとして実装したりするんですが、任意のタイミングで処理したい場合、コマンド実行する以上サーバにターミナルでログインできる技術者しかデータ投入作業ができなくなってしまいます。 もっとだれにでもできるように、やっぱりWebアプリケーションのインターフェースが欲しくなるのが人情です。 Webアプリから非同期にコマンドを実行する この要件を満たす簡単な方法は、以下のようなコードでWebプロセスから外部コマンドを

    PHP Webアプリケーションから非同期にコマンドを実行するライブラリをつくりました。 - オープンソースこねこね
    k-holy
    k-holy 2013/09/04
    PHPで書いたバッチスクリプトをこれでWebから管理して素敵なPHP生活に?
  • Altax PHP Deploy tool - PHPでデプロイツールを作った - オープンソースこねこね

    PHPでデプロイツールを作ってみました。 Altax PHP Deploytool. https://github.com/kohkimakimoto/altax なんでこんなものを作ったかというと 開発メモ#1 : Cinnamon によるデプロイ - naoyaのはてなダイアリー シンプルなデプロイツールを書いているという話 - delirious thoughts を読んで、普段PHP使いの自分としてはPHPで動くシンプルなデプロイツールがほしいかなと思ったからです。 結構まじめにつくりました。 機能 CapistranoみたいにSSHを並列に動かして、定義したタスクを実行します。 1ファイルだけで動作します。 タスクはPHPで記述します。 インストール インストールスクリプトがあるので、それを実行してください。 $ curl https://raw.github.com/kohki

    Altax PHP Deploy tool - PHPでデプロイツールを作った - オープンソースこねこね
    k-holy
    k-holy 2013/04/09
    うおーこんなのがあったとは…
  • 1