サーバ

2018年01月26日

MediaWikiで特定のページの閲覧制限を設定する

お休み前にMediawikiというWikipediaなんかで使用しているソフトウェアを使っていました。
「管理者以外に見せたくないページ」が出てきてしまったので、
無理くり対応したときの対応方法をまとめておきます。

※Mediawikiってなーに?という方は、こちらを参照。
https://www.mediawiki.org/wiki/MediaWiki/ja


①Lockdownをダウンロード・インストールする
https://www.mediawiki.org/wiki/Extension:Lockdown/ja

②<インストールディレクトリ>/extensions/Lockdown内にモジュールが配置されていることを確認する

③インストールディレクトリ内のLocalSettings.phpを修正する
  // 管理者用ページの閲覧制限設定
  // Lockdown用設定
  require_once "$IP/extensions/Lockdown/Lockdown.php"; ←Lockdownを使用するための定義(※1)
 
  // 名前空間の定義
  define("HOGE", 100); ←番号は既存のものと被らないように100とする
  $wgExtraNamespaces[HOGE] = "Hoge"; ←新しい名前空間にどんなページ名(これだとHoge:で始まるページになる)をつけるかを定義
 
  // 閲覧制限
  $wgNamespacePermissionLockdown[100]['*'] = array('sysop'); ←デフォルトの管理者以外は閲覧・修正・ページ作成などなどあらゆる操作不可(※2)

④httpd再起動

あとは、閲覧制限をかけたいページを、新しく作成した名前空間の下で作成すれば、管理者以外には閲覧制限(というより、全ての操作制限)がかかります。

※1 wgNamespacePermissionLockdownなど、Lockdownの機能を使用する定義の前に記載しないとうまく動きませんでした…。
※2 修正だけさせたくないのであれば、$wgNamespacePermissionLockdown[100]['edit'] みたいな形にすればOKです。

  参考:
  Mediawikiの名前空間: https://www.mediawiki.org/wiki/Manual:Namespace/ja
  Mediawikiのカスタム名前空間: https://www.mediawiki.org/wiki/Manual:Using_custom_namespaces/ja
  Mediawikiの利用者権限: https://www.mediawiki.org/wiki/Manual:User_rights/ja


※Mediawikiではこういう使用方法は想定されていないため、あまり推奨はされていないようです…。


riku_cha at 11:30|PermalinkComments(0)

2013年03月17日

Apacheをソースコードからコンパイルしてインストールしてみた


今更ながら、Apacheインストールしてみた。
ただし、yumで入れるとすぐ終わっちゃうので、今回はソースからコンパイルしてみた。
(ソースからApacheインストールは、きりのさんもりくちゃも初体験ですた)

インストール手順は大体こんな感じ。
(これのせっかちな人向け見ながらやった)
http://httpd.apache.org/docs/2.0/ja/install.html

①Apacheのソースをダウンロード
参考サイトでは、lynxを使っていますが、
何故かcurlを使ってダウンロード。
# curl -O -L http://ftp.riken.jp/net/apache//httpd/httpd-2.4.4.tar.gz

そしてgunzipとtarで展開。
# gunzip httpd-2.4.4.tar.gz
# tar xvf httpd-2.4.4.tar

②configureしてみるものの
# ./confugure
と、ここでエラーが。
ログ取ってなかったので実際のエラーメッセージは流れてしまったのですが、
要約すると「aprのバージョンが古いから新しいバージョンのものを入れてね」というメッセージらしい。

新しいバージョンをインストールし直すため、今入っているaprパッケージを出力。
# rpm -qa | grep apr
出力されたものを削除。
# yum remove apr apr-util apr-devel

③aprをインストール
aprのソースをダウンロード。
(※インストールするときのURLはhttp://apr.apache.org/ で調べることができます)
# curl -O -L <apr.apache.orgで調べたURL>//apr/apr-1.4.6.tar.gz
そしてgunzipとtarで展開(①を参照)してインストール。
# ./configure
# make
# make install

④apr-utilとapr-iconvをインストール
それぞれ以下のコマンドでソースをダウンロード。
# curl -O -L <apr.apache.orgで調べたURL>//apr/apr-util.1.5.1.tar.gz
# curl -O -L <apr.apache.orgで調べたURL>//apr/apr-iconv-1.2.1.tar.gz
そして展開。

# ./configure
したら、「--with-aprオプション使ってね」というエラーが。
http://memorva.jp/memo/linux/apache.php
調べてたら↑のサイトで
「--with-aprオプションで/usr/local/aprを指定しないとutil入らないよ」という記述発見。
ということで、
# ./configure --with-apr=/usr/local/apr
終わったら、makeしてmake install。

⑤pcreをインストール
もう一度Apache本体のソースを./configureしてみたものの、
今度は「configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/」というエラーが。
さっぱりなので調べてみると、どうやらperlのライブラリ?らしい。
これがないとApacheのインストールが進まないので、pcreをインストール。
手順はhttp://d.hatena.ne.jp/yohei-a/20120809/1344490042 を参照。
(ただし、りくちゃさんはどうしてもcurlを使いたかったので、
ソースはftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ からダウンロード。
上に記載されているサイトを指定してもうまくいきませんでした。。。)

⑥ようやくApacheをインストール
今度こそエラー吐きませんように、と祈りながら./configureしたら、
祈りが通じたのかコマンドが正常終了。
というわけでコンパイルとインストール。

⑦Apache自動起動設定
aprインストールの際に参考にしたサイト(http://memorva.jp/memo/linux/apache.php)に
自動起動スクリプトが載ってたのでほぼ丸コピしてスクリプト作成。
しかし、chkconfigってなんだ??
ということで、調べてたらこのサイト(http://www.pochinet.org/linux0A050.htm)に説明が。
 chkconfigの部分では、chkconfigでonになるランレベル、startの番号、stopの番号を指定。
 例えば、sshdだと「chkconfig: 2345 55 25」となっている。
# chkconfig --add httpd2
# chkconfig --list | grep http
 →ランレベル:3,4,5でchkconfigがonになったことを確認
rc.dのリンクファイル名を見てみる
(サービスがどのランレベルでon/offなのか、onの場合の番号、offの場合の番号がわかるようになっている)
# cd /etc/rc.d
# ls -l rc[0-6].d/*httpd2
リンクが出力されるはず。
そのリンクファイルの名前が、chkconfigの状態と番号、対応するサービス名を表している。
うわぁ、なんか某案件ですごく見たことあるわぁ…(;'ω')コマンドでリンク設定してたよ…

⑧Apacheを起動してみる
自動起動設定が終わったので実際に動かしてみる。
# service httpd2 start
エラー:/etc/rc.d/init.d/functionのパーミッションがおかしい
確認したら/etc/rc.d/init.d/functionのパーミッションが755になってなかった(´・ω・`)
というわけで、パーミッション変更して
# service httpd2 start
すると、何かエラーが。
AH00557:http://d.hatena.ne.jp/foldrr/20090203/1233593584
AH00558:http://d.hatena.ne.jp/uriyuri/20100511/1273575287

servernameとかhostsとかhttpd.confの設定をせずにApacheを動かそうとするとこんなエラーを吐くらしい。
(冷静になって考えてみると、サーバ名とかわからなかったりするんだからそうだよね)


でも一応動いているので、ブラウザで表示できるか(外から見れるか)を確認。
→見れない(´・ω・`)
きりのさん「ファイアウォール止めてみよう」
# service iptables stop
# service ip6tables stop

「It works!」
キタ━(゚∀゚)━!!

というわけで、無事に動作確認まで終わりました。
長かった・・・・


ちなみにカフェでOSインストール~aprインストールしてたんですが、その時の写真。

156040_494986623892393_1779273482_n

その日はsurface発売日だったので、surface(輸入版)を使用して作業。
近くにいた若いお姉さんに「えっ何この人怖い…」的な目で見られながらの作業でしたw

surface便利だからみんな買うといいよ!!((



次のネタはnginxになるかもしれないしならないかもしれない。。


riku_cha at 01:12|PermalinkComments(0)

2012年08月21日

Hyper-V上でCentOS6.3インストールしてIP設定したよ

作ってもらった環境を使って、Hyper-V上にCentOS6.3をインストールしてIP設定してみた。
はまったのでブログに書き書き。

といっても、先に一緒に作業してたきりのさんが書いていたので、詳細はこちらへどうぞ。

tech facilities
http://techfacilities.blogspot.jp/2012/08/centos-63hyper-v-2008r2hyper-v.html?spref=tw


じゃあ私は何を書こうか?という問題があるのですが、
「そうだ、時系列書こう。」
ということで作業の時系列を書いていこうと思います。




1.OSのインストール
Hyper-V上でCentOS6.3(2012.8.18現在、最新のもの)をインストール。
後々ZabbixでHA組みたいね、ということで、2台分インストール。
Hyper-Vについては、全然触ったことがないので正直よくわからないけど、
VMと同じく、後からメモリやらHDDやらCPUやらを簡単に追加できるっぽい。

2.Hyper-V 統合サービス (Integration Services) v3.2のインストールを試みる
 ⇒install.shを実行してみたが失敗。どうやら対応していないらしい。

3.Hyper-V 統合サービス (Integration Services) v3.3のインストールを試みる
 ⇒install.shは失敗。しかし参考サイトに記載されたrpmコマンドをそのまま実行したところ、無事にインストール成功。
参考サイト:http://www.thecloudbuilderblog.com/blog/2012/8/7/installing-hyper-v-integration-services-on-centos-63rhel-63.html

4.ネットワークインターフェース(ethX)にIPアドレスを設定
詳細はきりのさんのサイトを参照。
作業するまでわかってなかったことといえば、/etc/sysconfig/networkとか/etc/sysconfig/network-scripts/ifcfg-eth0はファイルが存在しないので、ファイルは自分で作成する必要あり。
そういえば、昔こんなことをやったようなきがするなぁ・・・←

5.ネットワークサービスの再起動
ここで何も出力がなかったので、本当に再起動されているのかがわからなかった。
(実際ここで「これって本当に再起動されてんの!?」って感じではまってた)
なので、出力がない場合はecho $?でリターンコードを見ることをオススメ。

6.IPアドレス設定確認
ifconfig -aでIPアドレスが設定されていることを確認。
もしもここで設定されていないようであれば、何かの設定がおかしいので設定し直しが必要。



これが終わった段階で夕飯(肉じゃが)となりましたww
次までにてきとーなサーバ立てて、同じ設定してみようかしら。。。。



riku_cha at 16:28|PermalinkComments(0)TrackBack(0)

2012年05月29日

プロセスとかsysctlとか


最近、プロセスのdefunct状態に頭を抱えているりくちゃです。こんばんは。
プロセスのdefunct状態…つまりゾンビプロセス。
これ、なんとかしてkillできないかなー、がそもそもの発端。

1.普通にkill
 →消えない
2.シグナル9を送ってみる
 →消えない
  (実行した後に「ゾンビには効かないよ」って書いてあるのに気が付いたorz)

ここまで調べてサポセンに泣き付いてみた。
 →「親プロセスkillするかrebootしてね☆」とのこと。
   psコマンドで親を調べて、親プロセスkillってみたらあっさり(まぁそうだよね)。
   プロセス確認のためにpstreeコマンドなんかも使ってみてました。
   プロセスの親子関係が一目瞭然。でも私はpsの方が好きです。


========================
その他教えてもらったこと。
~せっかくなのでいろいろきいてみた~

(´・ω・)「プロセスいくつまで上がるとかどこかで確認できますー?」
 →「/etc/sysctl.conf内のkernel.max_pid見ればわかりますよー」
 →あれ、書いてない(・ω・`;)
 →/proc/sys/kernel/max_pidで確認できました
これについては、帰ってきてから会社の先輩とtwitterで話しつつがちゃがちゃやってました(先輩も付き合わせた)。
一時的に設定を変えたいときはsysctl -wでパラメータと値指定して実行とかechoでそのまま流し込むでOK。
永続的に変えたいときは/etc/sysctl.confにパラメータと値を記述、で再起動すると/proc/sys/以下の該当するパラメータの値が書き換わるらしい。
動きは分かったけど半信半疑なので今度試してみるよ!(今日はもう眠い)

参考サイト:
http://www.atmarkit.co.jp/flinux/special/proctune/proctune02a.html
http://linux.mini13i.com/?kernel%2F%A5%B7%A5%B9%A5%C6%A5%E0%A5%D1%A5%E9%A5%E1%A5%BF

(´・ω・)「プロセスが上限値まで達したときにコマンド実行するとどうなるんですかー?」
 →「『もういっぱいいっぱいです』(要約)ってメッセージ出ますよー」
いつか試してみたい。

(´・ω・)「defunctって増えすぎるとプロセス上がんなくなる以外に影響ってあるんすかー?」
 →「ないっすよー。でもよろしくないので調査してdefunct消してねー」
========================

毎回しょうもないこと聞いちゃってすみません(´・ω・`)
でもきにしない!それがりくちゃクオリティ(`・ω・´)b


riku_cha at 23:55|PermalinkComments(0)TrackBack(0)

2012年05月23日

ssh接続設定


WindowsにVMWare入れて、その上にCentOS導入。
で、インストールしたんだけどさっそくここで問題発生。

VMWare⇔Windows間の移動がとても面倒。

りくちゃさんはすごく面倒がりなので、これはちょっといけてない。
というわけで、VMでCentOS立ち上げれば、あとはteratermで繋ぎに行けるように設定してみた。
初心者だとここで躓くと思うので。

参考サイト様
Humpty Dumpty
http://yaplog.jp/basset_hound/archive/24

大体このサイトのとおりにやれば設定できます。
りくちゃがちょっと設定してみたのはここ。

参考サイト様では以下のようになっているのを
#PermitRootLogin yes  ←rootでのログインを禁止
PermitRootLogin no


こう変えた
PermitRootLogin yes

なんでそうしたかっていうと、sshで接続しに行ったときに、rootで入れなかったから。
(逆かと思って、サイトの通りにnoにしたら入れなくてびっくりした)
rootで入れた方が便利だし。ワイルドだし。
セキュリティ的にはよろしくないけど。VMだしまぁいいや。



riku_cha at 21:08|PermalinkComments(0)TrackBack(0)