はてなキーワード: iptablesとは
資格学校で講師をしたことがある。人が足りないからヘルプで急遽採用された。
この記事で言う「1日目」を教えていた。大体2ヶ月のコースで1ヶ月過ぎたところ。
その学校は人が足りないのもあるが,資金繰りに相当困っていたようだ。
以前は生徒のスクリーニングを行っていたが,それをやらずパソコンの操作もわからない人をどんどん資格を取れるコースに入学させていた。
私が入ったときはLinux上級者向けコース(大体サーバ立てて初期設定やったりiptablesやるまで)が始まっていたが,
ls, cdなどをしたら何が起こるか生徒はわかっていなかった。
テキストと画面を照らし合わせてコマンドがどうなっているかを1つずつ噛み砕いていき,1ステップずつ何が起こっているかを教えたら,
少しずつわかってきたようで,自分である程度操作もできるようになった。
しかしそれでは学校のカリキュラムに沿わないので,上級者向けのことも一応テキストをなぞって写経させた。
「ここはさすがに暗記しないといけない」というところも伝えた。
生徒も危機感を持っていたようで,週に1回程度終わったら近くのカフェで色々話したりした。
その中で,やたら喋るが人生があまりうまくいかず,それを全部周りのせいにしていた生徒がいた。
時は進み,上級者向けコースも終わりを迎え,そこから次のコースに移るとのこと。
正直このレベルで送り出すことはできないと思ったが,最終試験があるので模試を行った。
結果は厳しいものだった。
次の日,事務の人に呼び出された。
いわくクレームが来て,自分はよくわからなかった,先生の教え方が悪いのかテキストが悪いのかわからないとのこと。
クレームをしたのはカフェで人生がうまく行かないのを周りのせいにしていた生徒だった。そういうことかと思った。
私に講師の仕事を紹介してくれた講師の方が監視役に付くことになり,講義を行った。
その日は普通に終わった。講師の仕事を紹介してくれた方は「あいつらがここまでできるようになったなんて」と言っていた。
しかし,私はどうしてもやる気にならなくなった。監視されながら火消しを行うのは耐えられない。さらにクレームをした人がその場にいる。
次の日が最終日だったが,学校の前に着いた段階で私は逃げた。
1人の生徒からメッセージが来た。「申し訳ありません,逃げてしまいました」と返信したところ,「いいんじゃない」と返ってきた。
なんか、最近IPv6の話題を前より見かけるようになった。それはいいんだけど、ものすごく偏ったことを言う人が増えたなぁ
IPv6では、セキュリティは端末で護るものだとか、IPv4と同じようにFWで護れないと困るとか、物凄いことを平気で言い出す人がちらほらいるなぁ...
IPv4だろうがv6だろうが、中継段、終端の両方で守るべきなのは自明だとしか思えない。
DoS系なら中継段で守ったほうが効率よく守れるし、個別攻撃なら終端で守らないと複雑度が増して守りきれない、程度のことは常識だと思うんだよなぁ。違うのかなぁ...
まぁ、鯖を管理する人たちでもiptables/ufw/firewalld/ipfw/pf/npfの設定は呪文にしか見えないだろうし、TCPの状態遷移なんて追い切れないだろうし、S/Aと言われてわかる人も少ないだろうけど、それはただの勉強不足でしかないと思うんだよなぁ。
まぁ、nginxすら分からなくてapacheから移行できないという鯖缶もいるから仕方がないんだろうけど。
(なお、apacheが悪いと言うわけではない。必要に応じて使い分ければいいのに、「知らないから」nginx(別にlighttpdでもh2oでもなんならunicornでもpumaでもいい)を使わないと言うのは、違うだろうと思うのだよな。
仕事でKubernetesというものを使わないといけないので勉強している。
1)CRIの仕様を満たすコンテナランタイムがワーカーノードのcgroupsを操作し、
2)kube-proxy(カーネルモードの場合)はワーカーノードのiptablesを操作し、
3)Envoyがサイドカーとして注入された場合は注入されたPodのiptablesを操作し、
4)K8sのコントローラとして動くxxプラグインは全部etcd上のリソースをwatchでポーリングしていて、変更通知が来たらアクションを起こすので必ずkubernetesのコアサービスの後追いをする
原子的な更新をしないとダメなもの(etcd、cgroups、iptables、仮想ネットワークインタフェース、OSのストレージのマウントポイント)の動きに注目すればきれいに理解できる気はしているんだけど、この考え方はあってるんだろうか
この企業は、真っ赤かなレッドオーシャンのとある企業向けサービスをやっておりまして、開発をやってます。
基本的に受託開発のほうがメインの会社です。受託開発のほうはSE女衒に外注したりしてます。
インフラは利用企業に必要な設定とかやります。基本外向けじゃないのでFWの設定とか、証明書の設定とか、利用数が多くなるに連れCPUの数を増やしたり、サーバーを増やしたりする必要があるとそれの計画を立てて増やす。
インフラチームがやるのはそれだけです
Linuxで何かがあったときに調べる方法のレクチャーしました。
アップデートの方法とか、iptablesの設定とか、SELinuxの設定、監査ログの見方、httpサーバーのいろんなチューニングの方法、MySQLのバックアップ計画の考え方、RHELのsystemdについての説明、OpenSSLとかBashの脆弱性があったときの脆弱性の調査、いろいろなことをこっちでやりました。
全部、アプリケーション開発側がレクチャーして手順書を作りました。
サーバーの構築も俺たちの手順書通りです。
PHPとPythonのインストールについてはアプリの都合だから、アプリ開発の責任でいいけど、httpやネットワークはインフラの仕事だと思うんですの。
インフラは何をやっているんです?
そう、インフラはお客様の言われた通りの設定をするだけチームなのです。
FWとかドメインの設定をしたあと、お客様に接する機会が多いからウチのサービスの設定とかもやることになっているのです。
じゃあインフラじゃないじゃん
Bashのコマンドも手順書に書いてあるだけのことしかしないんです。
何年か前にオブラートに包んで、もっと独自で行動するようになったらいいんじゃないですかねぇと行ったけど
業務知識があれば問題ないというスタンスでずっと変わっていないのです。
最初に作った人たちはそもそも外注の人が中心なので社内にノウハウがないんです
そういう人たちがいなくなったらどうするんでしょうね。
どうでもいいんだけど、それ以前になんで
デフォルトの設定でUDPが任意のIPアドレスに対して空いてるんだよ。
普通逆だろ。
公開サーバーの場合、指定したIPだけを開けるものであって、なんで指定しているものだけ閉じるFW設定なんだよ。
NTPに閉じた話じゃなくてLinux全体としてUDPをグローバルに対して全通過なんて設定が間違ってる。
公開NTPサーバーのIPを偽装して総当りでDDoSをNTPサーバーに対してかけられてるっていう意味じゃないよね。
だとするとNTPのポートは上位NTPに向けてしか開けないというiptablesの設定が先だとおもうんだが。
なんだろう、何を間違えたことを言ったんだろう。
これまで他の人に用意してもらったサーバで自分のプログラムを動かしたことはありましたが
自分自身で一からサーバをセットアップしたことはほとんどなかったので、いろいろとハマりました。
作業を進める上で困ったり考えたりしたことを書いていきます。
ちなみにサーバ自体はさくらのクラウド、OSにはCentOSを使用しているので、それ前提のお話になります。
最初にサーバを起動してから速やかにSSHとファイヤーウォールの設定を変更しました。
はてブなんかでも定期的に話題になっているのでおなじみですね。
・SSHやHTTP(S)など、どうしても公開しなければならないポート以外は遮断する
さらっと書きましたが、設定をミスって自分自身もログインできなくなり、何度かOSの再インストールを繰り返しています。
後から気付いた事ですが、さくらのクラウドではクラウド管理画面のリモートスクリーン経由でローカルログインできるので
別にOS再インストールしなくてもiptablesの設定を変更できたんですよね...
逆に言うといくらファイヤーウォールとSSHを設定しても管理画面にパスワードログインの環境が残ってしまうので
パスワードの管理には引き続きしっかり気を使う必要がある。ということでもあります。
httpd,php,mySQL,memcachedなど必要なサービスをインストール、設定し
作成したWebアプリのプログラムを乗せて動かしてみました。が、動作が重いような...
開発環境ではさくさく動いていたのに、本番環境ではどのページ遷移ももっさりしています。
abで計測してみたところ、開発環境のおよそ2分の1のスコアとなってしまいました。
開発環境が仮想2コアのメモリ1Gだったのに対し、本番環境が仮想1コアのメモリ2Gと
CPUの性能について半減しているのでそのせいかな、と思いつつ設定を見なおしていたところ
特に使っていないと思われたipv6を停止した途端にパフォーマンスが改善されました。
ページ遷移に伴うもっさり感が解消され、abの計測結果も開発環境と遜色ない結果が出ています。
デフォルトで有効になっていたipv6の影響により余計な処理が走っていたのかもしれません。
パフォーマンス改善に喜んだのも束の間、会員登録などの処理でWebアプリからメールを送信したところ、Gmail宛のメールがことごとく迷惑メールと判定されるという事案が発生。
spfの設定を行なう、メールの内容について吟味するなどの回避策を試してみましたが一向に改善されません。
試しにHotMailとexciteのメールアカウントに送信したところ、そちらではそもそもメールを受け付けてもらえずエラーコードが返って来る始末。
困り果てていたところ、エラーの内容からサーバのIPがspamhousにスパム送信元として登録されていることが判明しました。
postfixのホスト名の設定がデフォルトで「localhost.localdomain」などとなっており、それをそのまま使っていたためにGmailがスパム送信元として通報してしまったようです。
設定を修正し、spamhousに解除依頼を提出。事なきを得ました。
クラウドを利用すれば、サーバを停止することなく簡単な設定でスケールできるようになる。
と、自分で勝手に思い込んでいたせいなのですが、消えては困るデータの一部をmemcachedに保存する実装を行なっていました。
実際のところさくらのクラウドではサーバを完全に停止しなければプラン変更を実施できないし
そもそもサーバが落ちたらどうするんだよ。ということで、急遽KVSを変更する必要に迫られました。
速度の低下が気にかかったため、いくつかの候補を実際に動かし
phpのスクリプトから1万件のデータ読み書きを行うという形でmemcachedと比較してみたところ次のような結果に。
サービス | 1万件書込 | 1万件読込 |
memcached | 2.55秒 | 2.30秒 |
handlersocket | 21.23秒 | 2.71秒 |
InnoDB | 20.23秒 | 5.10秒 |
kyotoTycoon | 8.22秒 | 7.72秒 |
さすがに読み書きそれぞれmemcachedが最速ですが、読み出しについてはhandlersocketも負けていません。mySQLから普通にSELECTしてもmemcachedの2倍程度の時間しかかからないという結果が意外でした。
しかしながら書き込みのほうではhandlersocketもmemcachedの10倍近くの時間がかかっており、少々速度的な影響が気になってきます。memcachedの倍のパフォーマンスを記録したという記事を見たことがあるので、設定、チューニングについて生かしきれていない部分があるのかもしれないとも思いましたが、知識が不足しているところで無理をすると問題が発生した時に対処できないと考え、候補から除外することとしました。
結局、今回の用途では読み込み処理より書き込み処理のほうが圧倒的に多いことも考慮し、kyotoTycoonを採用しました。実際の利用箇所に組み込んでabで計測してみたところ、だいたい30%程度のパフォーマンス低下にとどまっており、これなら許容範囲かと考えています。
実行系と参照系に分ける形でmySQLのレプリケーションを行なっていたのですが、度々レプリケーションが停止する現象が発生しました。
一部のテーブルについて肥大する可能性が考えられたため、参照系に接続するプログラムで使わないテーブルをレプリケーションから除外していたのが原因です。
例えばtabelAをレプリケーションし、tableXをレプリケーションしないという設定にしたうえで
実行系でINSERT INTO `tableA` SELECT `value` FROM `tableX`などといったクエリを発行すると、参照系にtableXが無いためエラーが発生して止まってしまいます。
レプリケーションするテーブルを限定する場合はプログラム側でも注意を払わないと危険です。当たり前ですが。
監視といえばcactiやnagiosが定番なのかもしれませんが、設定が複雑そうで尻込みし、monitを使用することにしました。
簡単な設定でloadaverageやメモリ、HDDの使用量をチェックできるほか
httpdやmysqldなどといったサービスのプロセスを監視し、もし落ちていたら自動で起動してくれるので助かります。
パスワード保護を行うとしても、サイト全体の管理画面など自分しか使わないプログラムはWebに晒しておきたくない。
というわけで、一部のWebアプリを秘匿する設定を行いました。
管理画面のWebアプリを9999番など閉じているポートに設置した上で、SSHを利用したトンネルを掘ります。といっても
上記のようなコマンドで管理画面のWebアプリを置いたサーバへログインするだけです。
ブラウザのアドレス欄にhttp://localhost:9999/と打ち込めば、接続が開いている間のみアクセス可能になる感じですね。
サーバにログインできる人でなければ実行できないことなので、気分的にある程度安心します。
自動でログのバックアップを行いたいと考えたのですが、パスワード無しの鍵でログインして転送する形には抵抗がありました。
調べてみたところ、authorized_keysに公開鍵を記入する際の設定で、その鍵でできることを制限するという手段があるようでした。
具体的には、authorized_keysに
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="some commands" ssh-rsa AAAAB3NzaC1yc2EAAA...
などとして公開鍵を追加しておくと、その鍵でログインした直後にcommand=""の部分で設定したコマンドを実行して接続を終了する挙動となり
接続のフォワードもできなくなるため、パスワード無しでも鍵の流出に関するリスクを最低限に留めることができるというわけです。
commandの実行結果は標準出力から受け取ることができるので、例えばcommand=""の部分にファイルの内容を表示する処理を設定していたとすれば
ssh -i .ssh/no_password_key user@xxx.xxx.xxx.xxx > /path/to/file
などとしてログインの結果をファイルに書き込むだけで、簡単にファイルの転送が実現できます。
他にも大小さまざまな問題に行きあたりましたが、忘れてしまったor書ききれないのでここまでとします。
たった1つのサイトを公開するにしても問題というのは尽きないものだと実感させられました。
今は基本的な情報だけでなく、ちょっと突っ込んだ内容でも検索で解決していけるので嬉しいですね。手がかりを残してくれた先達に感謝することしきりです。
現状ではひとまずの見切りを付けて公開していますが、より堅牢で負荷に強いサーバとなるよう、随時チューニングを行なっていこうと考えています。
個人サイトや小規模な商業サイトなどプロモーションにあまりお金をかけられないサイトを主な対象とした、無料で出稿できる広告ネットワークサービスです。
既存のサービスで近いのは「あわせて読みたい」や「zenback」、各社提供のRSS相互リンクサービスなどになるでしょうか。
広告としての体裁がある分、それらより若干積極的な性質になるのではと考えています。
現時点ではサービス本体のプロモーションに苦心するという本末転倒そのものの状況でありますが、もしよろしければ見ていただけると嬉しいです。
はじめに僕はプログラムが苦手です。
ほんとに苦手です。
誰かがやってくれるんであれば絶対自分でプログラムしようなんて思いません。
寝る時もあーやってこうやったらこうなるとか考えてしまって睡眠不足になるし
9年くらい前のことです。
仕事でプログラムを使う必要があったので仕方なくparlの本を買ってきてシコシコやってました。
おなじみの「 hello world 」とかをモニターに表示させたりしました。
ものすごく簡単に理解してもらうためにこういう感じ書いてるんでしょうけど
ぶっちゃけ、本やネットの通り学習していくと大半の人が前半で飽きるか挫折します。
掲示板作ってどうするの?
自分に興味のないことをやるのって絶対続かないし覚えないんですよね!
僕もperlを学習したあとJavaを覚えようかなと本を買ってきて一通りやってみたんですけど
書かれてあるとおりに電卓とか作っても全く興味ないし作りたくもなかったので
全然頭に入ってきませんでした。
多分、すごい勢いでいろんなことを覚えていくと思います!(男ならw)
最近、そんなことをエロいWEBサービスを作りながら考えていました。
もうほんとに楽しくて、夢中になって自家発電・・いえ、プログラムしていました。
「はじめてのエロサイト」
「3日でできるエロ」
「できるエロサイト」
こんな感じのタイトルの本があったら僕だったら間違いなく買いますw
そんなわけでこれからプログラムを始めようと思っている人はエロい物をプログラムで作ってみてはいかがでしょうか?
そして、僕が今回作ったエロサービス(エロ動画検索兼ランキングサイト)
http://adultmovie-clip.com/ を作るのに必要だった知識について書いてみますので参考にしてみて下さい。
【今回作った物はどんなWEBサービスか?】
お気に入りの動画はログインなしでブックマークできるようにする。
人気ブログランキングのように外部サイトを登録できるようにし逆アクセスランキング機能をつける。
【必要な知識】
■html
http://www.tohoho-web.com/wwwbeg.htm
今回はhtml5でやってみた。
http://webdesignrecipes.com/semantic-html5-with-outline/
http://higashizm.sakura.ne.jp/jquery_first/
http://webdesignrecipes.com/jquery-beginners-guide-for-web-design/
http://helog.jp/javascript-2/jquery-javascript-2/1406/
■php
phpの基礎からできるからおすすめでかつデータベースの勉強もできる
エロデータの作成はスクレイピング(エロ動画データの収集)により行う。
例えば
該当ページをhtmlSQLで取得する。
http://tenderfeel.xsrv.jp/php/628/
http://plog.pya.jp/program/php/lesson11/sample01.html
ランキング部に利用、APIがあるのでリファラーでサイトのアクセス数をカウント
http://kota.oue.me/php%E3%81%A7google-analytics-api%E3%82%92%E3%81%84%E3%81%98%E3%82%8B%E3%80%82/
https://developers.google.com/analytics/resources/articles/gdataCommonQueries?hl=ja
■負荷対策
http://www.doyouphp.jp/tips/tips_apc.shtml
mod_evasive
DOS対策
http://www.makizou.com/archives/1341
mod_expires
http://www.ahref.org/tech/server/apacche/389.html
http://thinkit.co.jp/free/article/0707/2/6/
■サーバー関係
VPSを借りてこのサイトの通りやればWEBサーバーが構築できる。
できればメモリは1Gほしい。
無修正じゃなければKAGOYAのVPSでいいんではないでしょうか。
外部に公開しないのであればローカルでシコシコして下さい。
SSH・・・クライアント(Windows)からLinuxサーバーをリモート操作する
apache・・・WEBサーバー ※チューニング関係はググりまくって下さい。
mysql・・・データベース 全文検索を利用する場合、一旦mysqlは削除してsennaをインストール。インストールする順序に気をつける http://anond.hatelabo.jp/20110804021353
chkrootkit・・・rootkit検知ツール導入
■全文検索
経験上、サーバー代にもならないと思うので今のところ掲載しません。
以上です。
3月くらいから心身ともに疲れきっていたのでリフレッシュする意味で作ってみました。
エロサービスは以前にも何度か作っていてその時は非常に楽しくてわくわくしながらプログラムしていたので
それを思い出して、じゃあ作ってみようという感じです。
いろんな意味でw
学生が就職活動で、WEB系の会社で面接した時なんかにプログラムでどんなの作ったことある?と聞かれて
とか言っちゃうと「こいつできる」と思われるかもしれませんので(あくまで僕がそう思うだけですw)
これからプログラムをやろうと思ってる人はエロサービス作りで覚えてみて下さいw
きっとあっという間にできるようになりますw
さて最後になりますがこんなの作ってみたんでよかったら利用してみて下さい。
アニメやゲームのキャラクター情報をまとめてるサイトがないから作りたいなぁって
思ってたんだけどhtmlは初歩しか分からないしプログラミングもできないので構想するだけで作れなかった。
ゼロから4ヶ月でWEBサービスをリリースした人の記事を見つけて「自分にもできるかな!」なんて思い挑戦してみたけど理解できず挫折・・・orz
それでもWEBサイトを作りたかったので制作会社に発注してみようと思い立った。
ただのキャラクターのデータベースだけではつまらないのでコミュニティ要素なども付けて
ネットで見つけた制作会社に見積もってもらうと下記のようになった。
合計1,483,125円
以前、SNS「ウェブカレ」のサイト制作費が1千万円で安く仕上がった(潰れたけど・・・)という話があったから
なんとなく3~400万くらいかかるんじゃないかなと不安だったんだけど予想より安い見積もりだったので、
このくらいの金額ならなんとか出せる!ということで制作してもらうことにしました。
本当は何社かに見積もってもらって比較しようと思ったんだけど面倒だったのでそのまま制作をお願いすることにした。
(最初はもう少し高かったけど機能の簡略化とオープンソースのライブラリを使用してもらう事で費用を抑えてもらった。)
去年の10月の頭くらいから打ち合わせを始めて第1フェーズでワイヤーフレーム作成と仕様策定をして第2フェーズのhtml、システム開発に
移ったのは中旬だったかな?その段階で前金で4割の580,650円を支払いました。
制作会社には3回くらい打ち合せに行って、あとはメールでやり取りしていました。
当初は12月中にリリースを予定してたんだけど、なんだかんだで伸びてあらかた出来上がったのが2月の中旬くらい。
ちなみに僕はヒッキー(どれくらいヒッキーかというと外出は3日に1回くらい)なので制作してもらっている間は
↓作ったサイト
サーバはさくらのVPS 8Gを使用。CentOS5の64bit
設定した項目は以下のとおり
HDDが3つあって、普通に/var/wwwにコンテンツを入れていくとHDDが溢れそうだったので、容量の大きいものを使うように工夫したりなど。
メモリもそこそこ積んであるサーバなので、mysql、php、apcに多めにメモリを割り当てる設定をした。
本当はmyISMやInnoDBエンジンでLIKE "%word%"のようなクエリーを投げて十分なパフォーマンスが出ればいいんですけどね。
それはムリなので、全文検索エンジンとしてgroongaを使用。
groongaを使用するために先にインストールしたのはこんな感じ
この時点でいざ、groonga!と思ってgroongaをインストールしようとすると競合を起こして入らない。
epel、remiレポジトリからインストールしてあったmysqlと衝突してたのでyum remove "mysql*"で
一旦mysqlを消して、groongaレポジトリからmysqlとgroongaをインストール。
するとgroongaは入ったものの、今度はphpから使おうとしてもphp-mysqlパッケージが入らない。
あちらを立てればこちらが立たぬ状態で本当にこまった。
どうしようもないので、やりたくないけどyum-downloadonlyを使ってパッケージに含まれる設定やら、soファイルなどを直接とってきて入れた。
mysql.so、mysqli.so、pdo_mysql.soを/usr/lib64/php/modules/にコピーしたり、設定をコピーしたり、少しずついじりながら、なんとか動いてくれた。
状態としてはmysqlとgroongaはgroongaレポジトリから、phpと本来php-mysqlパッケージでインストールされるmysql.soは手動で置いたことになる。
シェルから直接mysqlにログインするときはgroongaレポジトリのやつを、phpからmysqlを呼ぶときは手動で置いたmysql.soを使うことになっている。
ちょっと心境的にしんどい。別の方法があったかもしれないけど、調べても分からず結局1日くらいかかった。
アクセスは、サイト全体(トータル)、サイト全体(当日分)、各コンテンツ日別、各コンテンツ週間、各コンテンツトータルのアクセスをとるようにしています。
検討した候補はmemcaced、apc、mysql、redis、fileあたりなんですが、
fileは候補にあがったものの、メンドウ、、どうせなら楽な既製品がいい。と思って候補から外しました。
残るはmysqlかredisだけど、redisが高速って聞いていたのでredisにしてみました。
最初全部redisに入れて、集計した結果をmysqlに入れるつもりでしたが、週間ランキングなどはINSERT INTO .. DUPLICATE ONを使って、
アクセスした週の月曜日00:00:00のタイムスタンプとコンテンツIDをキーにしたレコードを作ればそのまま週間ランキングになるなー。と思ってmysqlを使っています。
コンテンツのトータルアクセス数もコンテンツのレコードにpvという項目をつくってUPDATE table SET pv=pv+1 WHERE id = ? のようにしました。
最初難しく考えていたけど、こうすることによって大分楽になったなーといった感じ。
全文検索エンジンや対話検索、ここにこのリンクがあればなぁ。。という所に何とかしてリンクを作るのが本当に大変だった。
使い勝手を良くするために、ここにこの機能をなど、さくっと思いつくのは簡単でもそれを実現するために、あーでもない、こーでもないと
DB・プログラムとにらめっこしながら「あ!こうすればできる!でもそうすると今度はこっちが・・・」みたいなのがあったりでとても大変だった。
【お知らせ】2011/09/07
http://d.hatena.ne.jp/uniqueweb/20110906/1315285545
プログラムは全く得意じゃないけれど最近よく見かけるようになったエロ動画検索を自分でも作ってみたくて頑張ってみました。
近年、インターネットの普及によりエロ動画が自宅で簡単に見れるという素晴らしい時代になりました。
自分が若い頃はインターネットなんてものはなくエロビデオが主流でドキドキしながらレンタルビデオ屋に行き、可愛い女の子がレジにいない隙を見計らってお兄さんにパッケージを伏せて空箱を渡しビデオを借りたものでした。
お兄さんにビデオの空箱を渡そうとした時に可愛い子がレジに戻ってきて焦って渡すのをやめてものすごく変な動きをしながらエロビコーナーに引き返していくなんてことも多々ありましたw
僕のお気に入りといえば「白石ひとみ」や「あいだもも」といった女優でよく借りてました。エロビを借りるということがものすごく恥ずかしい時代?年頃?でカモフラージュに普通のビデオと一緒に借りるということもしていました。それはそれは大変な思いでオナニーしてたんです!
しかも、ビデオデッキ自体が貴重な時代でリビングに一台しかないのが当たり前でした。
深夜家族が寝静まってからヘッドフォンとビデオを抱えリビングに行き暗がりの中でヘッドフォンをテレビに差し込んでビデオの再生ボタンを期待に胸をふくらませながら押したものです。いいシーンを何回も見るためにビデオを巻き戻すんですが、ビデオを巻き戻すガチャンガチャンという機械音で家族が起きてこないか?とかそれはそれはドキドキしながら見てました。一仕事終えたあとヘッドフォンを外したらジャックが外れていて大音量で喘ぎ声が響き渡っていたなんてこともありました。誰も起きてこなかったのは優しさなんでしょうか?w
さて、大分前置きが長くなりましたがエロというものはものすごい技術発展させるものだと思います。エロのおかげで日本でビデオは普及しエロのおかげで日本でインターネットはものすごく普及したと言っていいと思います。自分もエロを通して技術の発展に貢献し自分自身のスキルアップになれば。という高い志を持ってこのサイトを制作しました。決して自らのオナニーライフの充実と性癖を充たすため作ったわけではありません・・・w
※2011.08.07 利用中のサーバーに障害が発生しているようで現在サーバーに接続できない状態となっています・・・
サイト名の由来は抜きネタからきています。抜きネーター、ヌキネーターという感じですw
エロサイトの制作工程を日記にしてみたんで良かったら読んで下さい。そしてこのサイトを使って夜いろいろと励んでくれたら嬉しいです。
まず前提条件としてお金をほとんどかけたくない。アダルトサイトであるということから
月の予算は5000円以内で考えていたのでけっこう探すのが大変でした。
日本でアダルトサイトを許可している所はかなり限られていてさらにやりたいことができるのは
専用サーバーかVPSしかないのでそうなると専用サーバーは予算オーバーなので
VPSで探すことになり検索しまくってはじめに見つけたVPSはKAGOYAのVPSだったのですがβ版で募集を締め切っていて泣く泣く諦めました。
KAGOYAはかなり評判がいいみたいなので使ってみたかった。
次に見つけたのが○○○VPS。海外サーバーで日本語サポートがあり転送量の制限なしディスク容量100G
月1300円程度で借りれるということで初期設定費用に5000円程度かかりましたが借りてみました。
結果、ここは最悪でした。
あまりの酷さに1ヶ月で解約。
よく調べてみたら評判がものすごく悪い某VPSの再販らしいです。
もう失敗したくないと思い今度は比較的有名な海外サーバーLINODE。
iptablesの設定でどうしてもうまくいかなくて拙い英語でメールしてみたら
10分しないうちに返信がきました!
メールに書かれているとおりにコマンドを入力したらあっさり解決。
担当のブライアンはなぜか分からないけどとてもフレンドリーで親切に感じましたw
LINODEは複数のディストリビューションから好きなものを選択できるので
とりあえず、64bit版を選択。
一番面倒だけど重要だということで
Tripwire
ほんとに面倒でした。
はじめはmysqlにストレージエンジンgroongaを使おうと思ったのですが
初めに借りた最悪なVPSはOSが32bit版だったのでgroongaがのソースが見つからずなぜかと思っていたら
どこかで見つけた記事で32bit版ではgroongaの性能を発揮しきれないということで32bit版の提供をやめてしまったらしいと書いてたので
じゃあ、sennaにするかということで最悪VPSでsennaをインストール。
その後LINODEに変更したのでOSに64bit版を選択し念願のgroongaをインストール。
しかし、調べてみると
プログラムもそれに合わせてその都度書き換えたので2度手間どころか3度手間4度手間でした・・・
まず
そして下記の順番でインストール
rpm -ivh mecab-0.98-tritonn.1.0.12a.x86_64.rpm
rpm -ivh mecab-ipadic-2.7.0.20070801-tritonn.1.0.12a.x86_64.rpm
rpm -ivh senna-1.1.4-tritonn.1.0.12a.x86_64.rpm
rpm -ivh MySQL-shared-5.0.87-tritonn.1.0.12a.x86_64.rpm
rpm -ivh MySQL-client-5.0.87-tritonn.1.0.12a.x86_64.rpm
rpm -ivh MySQL-server-5.0.87-tritonn.1.0.12a.x86_64.rpm
rpm -ivh MySQL-devel-5.0.87-tritonn.1.0.12a.x86_64.rpm
my.cnfの設定をして終了
で肝心の全文検索ですがデータ件数が5万件程度で少ないせいなのか、あいまい検索と比べてそれほど速さを実感できなかったです・・・
でもきっとすごく速くなったはず!
ちなみに「麻美ゆま おっぱい」で検索した場合、0.01 secで結果が返ってきました。
さて、動画データの作成ですがいくつかのエロサイト等制作記事でもあるようにスクレイピングということをします。
スクレイピングとはWEBサイトから特定の情報だけを取得することでネット上にあるサイトをクロールして必要なデータだけを拾ってデータを作るといった感じでしょうか。
スクレイピングのプログラム自体は以前にTidy関数を使って為替データを10分おきに取得するような物を作ったことがあったのでそれほど時間はかからないかなと思ったのですがけっこう時間かかりました。
スクレイピングにはTidyとhtmlSQL、それにPHP Simple HTML DOM Parserを使いました。
SQL みたいな文法で HTML を抽出する PHP のライブラリ
htmlSQLよりアツい!?jQueryみたいにセレクタでHTMLをparse(解析)する「PHP Simple HTML DOM Parser」
3つの中で抜群に使えるのはPHP Simple HTML DOM Parserだったんですが
ループ処理させるとメモリがすごいことになって今回のようなスクレイピングに向いてないみたいで
結局、htmlSQLとTidyの両方を使ってスクレイピングしました。
両方ともPHP Simple HTML DOM Parserに比べるとうまくデータの取得ができないことが多く残念な感じなんですが他に選択肢がないので・・・
使える順に並べると
といった感じかもしれません。
おおまかにデータを取得して正規表現で特定データを抜き出しました。
http://affiliate.dmm.com/link.html
利用可能な物はパッケージ画像、サンプル画像(縮小)と書かれていたのでそれに従い画像を利用。
注記に※ユーザーレビューは引用いただけません。とだけ書かれているのでそれ以外は引用ありと判断して説明文とタイトルなどを利用
女優データとジャンルデータ、DVDデータ、を紐付けたデータベースを作成し検索ワードに応じて検索結果に関連する商品を表示させるようにしました。
現状、売り上げ0で意味があるのか分かりませんけどw
エロサイトということで多少はチューニングとか設定とかしないとまずいかもと思い色々調べて設定しました。
やったこと
KeepAlive On MaxKeepAliveRequests 60 KeepAliveTimeout 3 <IfModule prefork.c> StartServers 7 MinSpareServers 5 MaxSpareServers 10 ServerLimit 30 MaxClients 30 MaxRequestsPerChild 4000 </IfModule>
様子見ということで2日間で設定してみました。
query_cache_limit=1M
query_cache_min_res_unit=4k
query_cache_size=16M
query_cache_type=1
とりあえずこんなところを設定してみましたが、爆発的なアクセスがあるわけでもないので有効なのか今のところ分かりません(-_-;)
Apache Benchでテストはしてみましたけど問題はない感じですが実際にチューニングができているか分かりません。
プログラマーとして有名なゆうすけさんのサイトとgoogleを参考にしました。
シンプルで使いやすいようにしようと思いこのデザインにしました。
クロスブラウザはIE7、firefox3、chromeで行いました。
可変ものって作ったことなかったんですがけっこう面倒なんですね。
ブックマーク機能とメニューの折りたたみ機能、検索結果の表示方法切替を作りました。
まず、ブックマーク機能ですがログインなしで気に入った動画をブックマークできるようにしました。
ブックマークに追加した動画はブックマークページで確認できるようにしました。
cookie機能を利用したらいけると思い色々調べてjquery.cookie.jsを利用。
保存したクッキー情報を呼び出してphpに渡して処理し指定要素にブックマーク一覧をloadメソッドで表示させるという感じです。
$(function(){ $("#youso").load("xxx.php"); });
メニューの折りたたみ機能は人気AV女優やAV女優別、人気タグなどをそのまま表示させるとずらっと長くなって邪魔だったのでつけました。
これには同じくjquery.cookie.jsを利用しました。
参考サイト:http://blog.caraldo.net/2009/03/newjqqookiemenu.php
検索結果の表示方法切替にはZoomer Galleryを利用しました。
参考URL:http://phpjavascriptroom.com/?t=ajax&p=jquery_plugin_zoom#a_zoomergallery
検索結果ページで表示される
[ここの画像]
××× の検索結果
44件中 1~10件目を表示
ここの画像の部分をクリックするとgoogleイメージ検索みたいに一覧でイメージ表示できるようにしてみました。
基本的に動画の埋め込みを許可しているサイトのみプレイヤー表示をしそれ以外は画像を表示し動画データへリンクするようにしました。
埋め込み部分はあらかじめそれぞれのサイトに対応したプレーヤー部分のコードを記述しVIDEOIDの部分に置き換えるような形にしました。
XVIDEOSを例にすると
XVIDEOSの場合かならず動画のurlがhttp://www.xvideos.com/videoXXXXXX/のようになりますのでXXXXXXの部分を
VIDEOID部分に置き換えるようにプログラムを組みました、
埋め込み部のソース
>||<object width="510" height="400" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" ><param name="quality" value="high" /><param name="bgcolor" value="#000000" /><param name="allowScriptAccess" value="always" /><param name="movie" value="http://static.xvideos.com/swf/flv_player_site_v4.swf" /><param name="allowFullScreen" value="true" /><param name="flashvars" value="id_video=VIDEOID" /><embed src="http://static.xvideos.com/swf/flv_player_site_v4.swf" allowscriptaccess="always" width="510" height="400" menu="false" quality="high" bgcolor="#000000" allowfullscreen="true" flashvars="id_video=VIDEOID" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></object>
||<
その他の動画サイトもURLの一部分のデータを使っているので同様の処理をしました。
実際の作業は2、3週間ですが色々調べる時間が多くて制作に2ヶ月くらいかかりました。
自分でエロ動画検索を作ってみて有名プログラマーさん達がいかに優秀なのか思い知らされました。
全くWEBの知識がない人で4、5ヶ月ですごいの作っちゃう人とかもいるみたいですし世の中広いな~と思います。
大分、色んな知識を得ることができました。
これからプラグラムを勉強しようと思う人はぜひエロサイトから入ってみて下さい。
そんなこんなで?頑張って作ってみたエロ動画検索、良かったら使ってみて下さい。
これで少しは技術の発展に役立てたでしょうか?w
P.S エロサイトを作っていてはじめは楽しくて興奮しながら作ってたのですが最後の方はエロい物を見ても全く反応しなくなりましたw
不能ではないんですけど・・・今現在も性欲が著しく減退しております・・・
そしてスーパーpre記法がうまういかないのはなぜ?はてな匿名ダイアリー初投稿で全然分からない・・・
そしてそしてプログラマーさんとかデザイナーさんとかエロい人とかお気軽にお声をおかけ下さい。
【お知らせ】2011/09/07
今度からはiptablesで弾くようにしたから、http以外でもアクセスできなくしたぞ!
206.135.108.5
190.196.23.170
208.94.173.168
213.194.149.20
86.121.126.226
193.134.218.28
193.135.56.227
72.249.191.226
次は、この辺を試すか。
mod_evasive
http://www.cafechantant.com/trac/wiki/apache_module_5_dos_prevention
それとも、特定のURLの組み合わせにアクセスしてきたIPをiptablesのブラックリストに入れるスクリプトでも書くか。