サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
画力アップ
blog.konbu.link
今年の目標は「はじめから無理と思わない」「基礎を学ぶ」なので、C言語からも逃げずに立ち向かう1年にしたい。 本日は、Linuxのスレッド内でchrootした場合の影響範囲を調べたのでまとめる。 はじめに 本エントリではLinuxでスレッドを作成して、システムコールの “chroot()” を実行した場合にスレッド内のみchrootされるのか?それとも、プロセス全体に影響するのかを調査していく。 実際に動かして確認する スレッドを作成して、chrootを実行するプログラムをC言語で作成する。 #include <stdio.h> #include <pthread.h> #include <errno.h> #include <dirent.h> #include <sys/stat.h> #include <string.h> void* thread_1(void* param); v
この記事は mruby Advent Calendar 2016 の13日目の記事です。 本エントリでは matsumotory さんが作成された、mrubyでメールの制御を行うことができる pmilter を使ってSMTPのDDoSを軽減するソフトウェアを作ってみたのでその紹介をします。 pmilterとは? pmilterはProgrammable Mail Filterの略で、SMTPサーバ(送信や受信)とmilterプロトコルで通信し、SMTPサーバの送受信の振る舞いをRubyでコントロールできるサーバソフトウェアです。 インストールや設定はシンプルでpmilterのバイナリを配置して通常のmilterのようにSMTPサーバに設定するだけです。 ### postfixの設定 smtpd_milters = unix:/pmilter/pmilter.sock そして、milterプ
はじめに 先日は 「 pmilter + postfixでプログラマブルなSMTPサーバを作る(入門編) 」の記事で pmilter の環境構築を行いました。 本エントリでは、 pmilter を活用して実際にメールの通数を制御するソフトウェアを作成しました。 smtp-access-limiter (まだプロトタイプ) smtp-access-limiterとは 任意のToやFrom、文字列などをキーとして、一定期間のメールの通数をカウントするソフトウェアです。 キーとして利用するのは、pmilterの各SMTPプロトコルフローの中で取得できるパラメータです。 また、pmilterの性質上メールがキューに入る前に処理されるので、処理できないメールを効率よく制御することができます。 ソフトウェアの紹介にあたって 今回は、pmilterで取得できるパラメータの中でも RCPT TOのフェ
pmilterとは pmilter @matsumotory が開発している mruby でコントロール可能な milter である。 ngx_mrubyやmod_mrubyなどを使ったことがある人であれば、そのようなイメージでメールの制御を行うことができる。 何ができるのか? MTAに組み込むことで、メールの様々な情報を元にmrubyで制御できる。 SMTPプロトコルの各フェーズでmrubyをフックすることができ、メールのenvelopeやヘッダ、TLSの情報や認証情報などを利用してメールの制御を行うことができる。 環境を構築する 環境 CentOS 7.2 postfix 8.14.7 ruby 2.0 SELinuxの無効化 SELinuxを無効にしないと、pmilterのsocketとpostfixが通信できなくなる。 sed -i 's/SELINUX=enforcing/SEL
はじめに こんばんは、GMOペパボの久米です。 今回は「 mruby-mtestでngx_mrubyやmod_mrubyで使うmrubyのテストコードを書く 」でご紹介しましたmrubyのテストをより便利にしていきたいと思います。 やり方を忘れないように備忘録的に記述します。 概要 本エントリでは以下のことを目的としている。 開発を行うにあたり、動作確認をより簡単に行えるようにする。 継続的インテグレーションを行いたい。 今回利用するコンポーネントは以下のような役割を担う。 docker mrubyの実行環境を即座に提供する rake 実行環境であるdockerのビルドやテストの実行などのタスクを定義して簡単に呼び出せるようにする travis-ci github.comにpushした時に自動でrakeを実行してdockerのビルドやテストの実行を行う 本エントリで何ができるようになる
はじめに こんにちは。 GMOペパボの久米です。 今回は ngx_mruby や mod_mruby で動作させるmrubyスクリプトのテストコードを iij/mruby-mtest を使って書いていきます。 通常この場合のmrubyスクリプトはngx_mruby/mod_mruby上で動作しますが、今回は mruby を単体でビルドして生成されたバイナリを使って動作させます。 環境構築 mrubyをgit cloneする cd /usr/local/src git clone https://github.com/mruby/mruby.git cd mruby ビルドするmgemを設定する mv build_config.rb build_config.rb.org vi build_config.rb こちらに必要なmgemを設定します。 今回は以下のようにしました。 MRu
はじめに こんばんは、GMOペパボの久米です。 「 httpd + mod_mrubyでプログラマブルなWEBサーバを構築する 」というエントリを書きましたが、今回は mod_mruby を使った、 @matsumotory さん が作成している http-access-limitter というリクエスト先ファイル単位での同時アクセス数を制御できるソフトウェアの導入と検証を行います。 レンタルサーバなど複数のドメインを収容している場合など、サーバの管理者が実行されるプログラムを制御出来ない、あるいはリクエスト数を想定できない時に以下のような運用課題が発生する。 サーバに収容している特定のドメインに大量にアクセスが発生し過負荷状態になる。 これは matsumoto-r/mod_vhost_maxclients を利用することで解決する。 しかし、リクエスト先ドメイン単位での同時アクセス数を
必要なコンポーネント、ライブラリをインストール yum install -y httpd httpd-devel php git zlib zlib-devel pcre-devel bison openssl-devel Ruby(rbenv環境)をインストール rbenv + ruby-buildをダウンロード git clone https://github.com/rbenv/rbenv.git ~/.rbenv git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build rbenvのPATHの設定 echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile echo 'eval "$(rbenv init -)"' >>
はじめに どうも、GMOペパボ 久米です。 そろそろ(最初から)雇用形態の話は面白くないので、これからのはじめの挨拶は何にしようか悩んでいます。 さて、今回は以下で作った ngx_mruby の性能の検証をしようと思います。 ngx_mrubyでmemcachedやmysqldのコネクションを使いまわす 性能検証の目的 ngx_mrubyからリクエスト毎にmemcachedに接続する場合と、 mruby-userdata でコネクションを使い回す場合とでどの程度の性能差が出るのかを確認したい。 前提 実行環境: MacBook Pro (Retina 13-inch、Early 2015) CPU 2.7 GHz Intel Core i5 RAM 16 GB 1867 MHz DDR3 Virtual Box上の仮想マシン 今回は測定結果の値そのものではなく、それぞれの性能差を比較す
はじめに どうも、GMOペパボ インフラエンジニア 正規雇用となりました久米です。 以下のエントリでngx_mrubyを用いたリバースプロキシを構築しました。 CentOS6で ngx_mruby + mruby-memcached + mruby-mysql をインストールした。 ngx_mrubyで転送先を外部参照するリバースプロキシを構築する 本エントリでは、ここまで作ってきたリバースプロキシの性能向上をするために 以下のことを行います。 Workerが起動したときに、mysqldやmemcachedと接続しコネクションを保持する。 リクエスト毎に行っていた接続処理を保持したコネクションを使い回すことで効率化を図る。 上記を実現するために以下の機能を使います。 matsumoto-r/mruby-userdata これをngx_mrubyに組み込むことで(デフォルトのbuild
こんばんは。 GMOペパボ試用期間の久米です。 今年の4/1付でペパボに入社しました。 主にレンタルサーバサービスの ロリポップ! のインフラエンジニアをしております。 これまで 現在24歳で18歳からISPのインフラエンジニアとして新卒入社しました。 最初の3年はlsコマンドも分からない状況で入社しつつもインターネットサービスインフラとして、主にDNSサーバやWEBサーバの構築、アプライアンス機器を使ったネットワークの構築を行いました。 後の3年は、クラウドサービスインフラとしてハイパーバイザベースの仮想化基盤の構築、Windows系サーバの構築・運用・障害対応などを行いながら、SIerのように法人向けに提案営業やSIを行っていました。 転職のきっかけ 6年も経つころには以下の様なことをしたいと思うようになったことが転職のきっかけです。 コードを書けるインフラエンジニアになりたい
Webサーバのバーチャルホストを設定 WEBサーバ共通設定 /etc/httpd/conf/httpd.conf # 以下をコメントイン NameVirtualHost *:80 web1.localの設定 /etc/httpd/conf.d/site-a.local.conf <VirtualHost *:80> ServerName site-a.local DocumentRoot /home/site-a.local/html </VirtualHost> /etc/httpd/conf.d/site-b.local.conf <VirtualHost *:80> ServerName site-b.local DocumentRoot /home/site-b.local/html </VirtualHost> /home/site-a.local/html/index.html
今回はルートユーザで作業を行います。 sudo su - Ruby (rbenv) 環境を構築 必要なライブラリをインストール yum install -y git openssl-devel readline-devel zlib-devel rbenv + ruby-buildをダウンロード git clone https://github.com/rbenv/rbenv.git ~/.rbenv git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build rbenvのPATHの設定 echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile echo 'eval "$(rbenv init -)"' >> ~/.bash_p
このページを最初にブックマークしてみませんか?
『blog.konbu.link』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く