MediaWikiのソースを表示
新しいページはコチラ
移動:
案内
,
検索
== '''Media Wikiとは?'''== このページの仕組みそのものです。<br /> ウィキペディアは公式に活動している百科事典になりますが、その百科事典のシステムそのものが、<br /> 自由に入手できるものとしてソースが公開されています。ライセンスとかの詳細はMedia Wikiで検索して表示されるページを参照されたし。<br /> 個人的に立ち上げる時の手順<br /> 0.自分が使っているWebサーバに導入されているMySQLとPHPのバージョンを確認する。<br /> 1.ソースをダウンロードする。自分の場合はXREAの341番目のサーバなので1.19.8を使っています。<br /> 2.入手したファイルを解凍して、サーバにWikiのシステムを保存するディレクトリを作って、アップロード。<br /> ※このとき作成したディレクトリの下にindex.phpが存在するような形式でコピーします。<br /> 3.そしたらWebのアドレスURI+作成したディレクトリ+index.phpにアクセスしよう。インストールのためのウィザードが始まる。<br /> 4.質問に間違いの無いように適宜を応えるようにウィザードをすすめる。<br /> ※このとき難しいと感じる部分はMySQLへのアクセスIDとかパスワード。データベースの名前やレコードの接頭句とかだと思います。<br /> でも、この程度の質問に答えられないなら、まぁ勉強した上で使われることをお勧めします。きっとこの先、不勉強による問題に直面し、 対応ができなくなります。Webサーバ毎にルールは違うし、レンタルサーバなら、一緒に使っているみんなに迷惑がかかります。 大丈夫、レンタルサーバ屋さんと契約しているなら、サポートセンターになんていれたらいい?って聞けばきっと教えてくれます。たぶん。 5.最後まで質問に答えきれたら、LocalSettings.phpっていうのがダウンロードされますので、これを自分のPCに一旦保存して、サーバのindex.phpと同じ階層に アップロードしましょう。<br /> 6.あとは…もう一度 3.の項目でアクセスしたURIへ再度アクセスすると今度はWikipediaのような画面に遷移します。<br /> 7.編集するにはひょっとしたら4.の項目で設定したIDやパスワードが必要な状態になっているかもしれませんが、その場合はログインして、みんなに伝えたい何かを書き込みましょう。<br /> 8.書き込みのルールは少しだけ複雑ですが、本家Wikipediaによる記述のルールを勉強して、優れたデザインを追い求め、スタイリッシュな記述を目指しましょう。<br /> <br /> 簡単に書きましたが、そういうことです。<br /> == '''SyntaxHighlight_GeSHiをインストール'''== SyntaxHighlight_GeSHiをインストールするとWikimedia内でプログラムコードの記述をした際に手間をかけることなく<br /> シンタックスハイライトをしてくれます。<br /> 1.まずは必要なソースコードをダウンロードしよう。 :○http://svn.wikimedia.org/viewvc/mediawiki/trunk/extensions/SyntaxHighlight_GeSHi/<br /> :のリポジトリから<br /> :SyntaxHighlight_GeSHi.class.php <br /> :SyntaxHighlight_GeSHi.i18n.php <br /> :SyntaxHighlight_GeSHi.local.php <br /> :SyntaxHighlight_GeSHi.php <br /> :をダウンロードする。Rev.という列に書いてある数字のLinkをクリックするとRevision XXXXXX - (show annotations) (download) <br /> :とあるので、Downloadボタンを押して表示されたテキストをコピペして、それに対応するファイル名で保存しましょう。<br /> :*自分だけなのかもしれませんが、Downloadのリンクの上で右クリックして対象をファイルに保存とかってやると、<br /> :ファイルの中身がソースコードではなく、違う情報のものにすりかわるという罠にはまりました。<br /> :○http://qbnz.com/highlighter/<br /> :からGeSHiをダウンロードしましょう。こちらは右側とかにあるDownloadsのリンクをクリックすると<br /> :Download GeSHi-X.X.X.XX.zip (X.X MB)というリンクがあるので、こちらからダウンロード。<br /> :※GeSHiとは、Generic Syntax Highlighterの略で、こちらの方がプログラムのソースコードにいろいろな着色や協調をしてくれるエンジンで、<br /> :PHPファイルの方がMesiaWiki用にちょっと加工してくれるプログラムになっているようです。<br /> :<br /> 2.このファイルを :extensions<br /> :└/SyntaxHighlight_GeSHi<br /> :: ├SyntaxHighlight_GeSHi.php<br /> :: ├SyntaxHighlight_GeSHi.i18n.php<br /> :: ├SyntaxHighlight_GeSHi.class.php<br /> :: └/geshi<br /> ::: ├geshi.php<br /> ::: ├/geshi<br /> ::: ├/docs<br /> ::: └/contrib<br /> なるようにして、index.phpがあった階層にあるExtensionフォルダの中にアップロードします。<br /> 3.index.phpと同じ階層にあるLocalSetting.phpの最終行に :require_once("extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.php"); をペロッと記述し、LocalSetting.phpを更新します。 あとは使ってみるべし。 == '''スタイルシートを変更'''== 1.http://xxxxxx.xx/xxxxx/index.php/Special:Userrights にアクセスして、ユーザに管理者・ボット・ユーロクラット権限を付与します。<br /> 2.http://xxxxxx.xx/xxxxx/index.php/MediaWiki:Common.css にアクセスして、Common.cssを記事を編集するかのように編集します。<br /> CssのファイルでFTPで直接操作すると死ねる結果が待っていますのでWikiのシステムを使いましょう。<br /> たとえば、以下のようなスタイルを適用すると文字を大きくしたりフォントを設定できたりします。 <syntaxhighlight lang="css" line start="1"> body { font-size:18px; font-family:'ヒラギノ角ゴ Pro W3','Hiragino Kaku Gothic Pro','メイリオ',Meiryo,'MS Pゴシック',sans-serif; } </syntaxhighlight> == '''131011事件:WikiMediaシステム半壊状態です。''' == PHP5を利用するMediaWiki Ver1.19にはSafeMode(セーフモードとかsafe_modeとかとも書けます。)とかっていうモードがあるらしくて、 そのせいで画像のサムネイルが作れないため、大量のエラーを吐き出すページがありました。 その際はエラーにびっくりせずに。そのまま、ご帰宅いただければとのたまっておりました。 当時の時系列メモ(2件)<br /> 13-10-11<br /> ImageMagickが動作していない模様。LocalSettings.phpとGlobalFunction.phpいろいろ変えたけど動ていない気がする。<br /> 連休明けに考えてみようと思う。フォルダ生成はftpに任せたのでその辺のUID関係の問題はクリアしたと思う。<br /> convertのありかはあってる。あとは何だ?xreaが何か別のセキュリティ仕様変更をやったのやもしれん。<br /> シングルクォートつけてきたり、引数の無効かとかはクリア。つうか、これどうやってデバッグするんだ。<br /> ものすごい地味な方法でやってるんだけど…。xreaでできないと意味ない気がするし。<br /> 自分のPCにPHPインストールしたり、あんまり使わないから嫌だ。ってそこか。<br /> あと変に動かすと、MediaWikiのシステムそのものが破綻するという罠もあるのが凄まじい。<br /> こんな巨大プロジェクトの構造。理解しきれない気がする。<br /> 一人でしか使わないからファイルロックとかあんまり意味ないのに無駄に凄い技術が仕込まれてたり<br /> 考えさせられる。<br /> なんだこのPHP5の高すぎるセキュリティ。素人集団がサーバ使う向けの仕様のような気がする。<br /> あ、それがxreaか<br /> フフフ♪<br /> ・サムネイル生成までの道筋を改めて追う。<br /> ・ImageMagickのコマンド実行するところまで来ているか確認する。<br /> ・だとしたらどんなコマンドを実行しようとしているのかをつかむ。<br /> ・imagesのtmpフォルダにしこたまたまったtransform_xxxxx-1.jpg達の後始末をどうするか考える。<br /> ・あとはFlashを埋め込んだり、動画を埋め込んだりできるようにしたいかも<br /> たぶん2年くらいかかる。<br /> <br /> メモ<br /> 13-10-17<br /> ま、なんやかんやで、Safemodeの回避方法はわかりました。要するにPHPではなくPerlを使えということですな。<br /> 意味ねぇ。PHPの崇高な思想による機能はプログラミングのインタラクティブ性を大いに損なうものであると思います。<br /> そんなに楽しくないプログラミングさせるなら、いっそのことサーバごと吹き飛んでしまえばいいと思った。<br /> 恐ろしいほど、Mediawikiへの変更を加えたので、ここでは伝授することができません。お許しを。<br /> 要するに最初から全部作った方がはえー気もする。2年くらいかかる予定でしたが、まぁ一週間ありゃなんとでもなるってことですね。<br /> <br /> 総括<br /> http://php.net/manual/ja/features.safe-mode.functions.php<br /> 上記リンクに記載されている関数はSafeModeでは使えません。重要な関数がびっしりでてくるので、リンク先を見た後はかなりげんなりします。<br /> 要するに、危険な関数だからUIDが一致しないとだめよ。ってこと。<br /> ん?つまり?<br /> 普通は、ftpでログインしてあらかじめ作ったおいたフォルダにphpのファイルを置くと思います。 そうするとUIDはftpでログインしたときのUIDがフォルダに付きます。そして、phpを実行しているときはUIDがXREAだとApacheを実行するUIDで<br /> 食い違うことになります。つまりSafemodeの機能が働いて、関数は動きません。となると動的(PHP実行による処理)に、ディレクトリを生成したり<br /> 動的にディレクトリを削除することもできません。その他、いろいろなことが出来ません。<br /> その結果、一般に配布されているようなphpで高度なコンテンツマネージメントシステムはだいたい、そのままでは動きません。<br /> それは、どういうことか?<br /> サーバ屋さん的にはphpのエンジン設定の権限によりsafemodeを切ることもできるが、この機能を有効にしているってことは、<br /> そのサーバ屋さんを利用しているユーザ同志によるモメゴトのもとになるようなPHPのコマンドを実行させないということが、<br /> ユーザ個人にとっては使いにくいんでしょうけど、それよかモメゴトが消えるんならそれでOKOK。サーバ屋としてもなんら影響ないし、業績に響かない。<br /> むしろ、ありがたい。ということなんだと思います。<br /> 結果、プログラミングを熟知している人だけが、高度なシステムを改造して、使うし、問題も起こしにくい。<br /> そういうことになっているのかもしれません。あるいは、そういった機能を欲しない無欲なユーザに使ってもらえている<br /> というあたりなのでしょうか?想像ですけど。<br /> <br /> で、回避策なんですけど。思うに余計に危なっかしい案ではありますが、<br /> 一つはphpのftpに関連する関数を使う。どこかにソースのどこかにftpのIDとかパスワードとかを書くんで、スペシャルなハッキング技術をお持ちの人なら、<br /> まぁ簡単にやられる可能性もあります。dbへのアクセス情報とかはMediaWikiやその他システムで入力してるんで、そう簡単ではないでしょうけれども。リスクが少し大きくなります程度。<br /> 加えて、phpからcgiを呼び出してフォルダの生成や削除をする。という処理をさせる。これもうまいことチェック機能をいれとかないと、危ない。<br /> あるいは<br /> xreaに限れば、phpをcgi版で動かす。という宣言を.htaccesを配置、記述する。php.iniを配置、記述する<br /> という対策があります。<br /> ftpでフォルダを作るのは出来るかもしれない。<br /> ただしftpだけで制御するには疲れるかもしれない。なぜならfopen関数で第二引数に'x'を指定する場合は<br /> ファイルがなければ、フォルダも全部作って、ファイルを作るっていう便利な関数だから。<br /> そうするとphpからcgiを呼び出して、同じようにフォルダの生成や削除をするという処理をさせる必要があります。<br /> これもスーパーハッカーなら、このcgiを利用して、呼び出し方をして、ファイルの削除しまくりとかできるわけです。<br /> そんなスーパーハッカーいるのかどうかは知りませんが。<br /> で、そのセキュリティ的な対策は各自やっていただくとして、セキュリティ的な提案とやりかただけを語るならば、<br /> safemodeで影響を受ける関数の置き換え処理の記述をします。MediaWikiの場合。かなりの数の置き換えが必要になります。やれる人はやってみて。<br /> 例えば、今回の目的ではないですが、chmod関数を置き換える場合だと。<br /> chmod関数の引数が$this->pathだとしたら<br /> <nowiki>file_get_contents('http://xxxxx.xx/xxxxx/yyyyyyy.pl?Path='.$this->path&Secure=xxxxxxxxx);</nowiki> として.plや.cgiを実行する関数に置き換えます。<br /> 動作結果がどうなるかわからないので、呼び出し結果がチェックができないのが辛いところです。<br /> 実行した後にチェック用のファイルを生成させたりして、読み込んでみるという方法もありでしょう。自分はそこまでやってませんが…<br /> Perlもわかる!という人にしかできない技です。<br /> …の部分には必要に応じてuse関数で、外部の関数を読みこむ宣言をしないとダメでしょう。Copyの関数とかね。<br /> さらには、第三者に実行されたときのために、呼び出し元が自分のサーバであることの確認処理もいれた方がいい。<br /> でyyyyyyy.plっていうファイルにchmodを実行するPerlスクリプトを書く。<br /> <br /> 例えば<br /> <syntaxhighlight lang="Perl" line start="1"> #!/usr/local/bin/perl print "Content-Type: text/html\n\n"; … $formInput = $ENV{'QUERY_STRING'}; @InputData = split (/&/,$formInput); foreach $tmp (@InputData) { ($name,$value) = split (/=/,$tmp); if ($name eq 'Path'){ $path = $value; } elsif($name eq 'Secure'){ $secure = $value; } } if($secure eq 'xxxxxxxx') chmod 0777, 'xxxx'.$path; </syntaxhighlight> <br /> という感じです。<br /> この調子で必要となるsafemodeの影響を受ける関数の動作をperlに置き換えたものを作ります。<br /> こんな対処方法を取る人がどれくらいいるのか知りませんが…<br /> 参考になればと思います。xreaで、ここまでやるやついねぇな。<br /> Perlはさっぱりわからへんという人は、さっさと引っ越しした方がええね。<br /> わたくしめに助言できるのはココまでです。Perlを熟知している方にやって欲しいからです。自分もこれが安全か?と言われれば、それほど自信ありません。<br /> むしろ教えてほしいくらいです。<br /> こんなことやってたらxreaから追い出されたりして、そしたら最初からphpなんて使わせてもらえないと思うので、大丈夫だと思いますけど<br /> かくいう自分も最初はxreaをやめようかと思ったくらいです。もしくはMediaWikiをやめようかとも思いました。<br /> 上記のサンプルではsecureという変数を使ってパスワード的な確認も入れてます。こんなものが役に立つかどうかしりませんけど。<br /> <br /> safemodeはこんな風に余計にあがく奴がいて、むしろ危ないってことだな。だから新しいPHPの現行Versionでは廃止になったのかもしれない。<br /> でも、そのsafemodeの機能がついたサーバ500台近く抱えているxrea。恐るべし!<br /> グダグダ言ってても、だれも救われないかもしれないので、この件はこれでおしまい。<br /> <br />
MediaWiki
に戻る。
個人用ツール
ログイン
名前空間
ページ
議論
変種
表示
閲覧
ソースを表示
履歴表示
操作
検索
案内
メインページ
コミュニティ・ポータル
最近の出来事
最近の更新
おまかせ表示
ヘルプ
ツールボックス
リンク元
関連ページの更新状況
特別ページ