Home > Tags > Command
Command
Apacheでよく使うコマンドと設定項目
- 2008-12-25 (木)
- Linux
設置環境はFedoraを想定しています。
注:ソースからインストールした場合や他の環境だと一部ファイルのパスが違うところがあります。
今後も少しずつ書き足し・修正していきます。
コマンド
- 起動
- # /etc/rc.d/init.d/httpd start
または、
# service httpd start - 終了
- # /etc/rc.d/init.d/httpd stop
または、
# service httpd stop - 再起動
- # /etc/rc.d/init.d/httpd restart
または、
# service httpd restart - 自動起動に設定
- # chkconfig httpd on
- 自動起動の確認(Run level 3:on)
- # chkconfig --list httpd
- 設定の反映
- # /etc/rc.d/init.d/httpd reload
- ディレクトリの所有者の変更
- # chown <ユーザ名>. /var/www/html/
- ディレクトリをApache実行ユーザに変更
- # chown -R apache:apache /var/www/html/cgi-bin/
httpd.confの設定
- 設定ファイルhttpd.confのパス
- /etc/httpd/conf/httpd.conf
- 外部設定ファイル*.confを置くパス
- /etc/httpd/conf.d/*.conf
・起動時に読み込まれる
・AliasとDirectoryを合わせて用いる場合が多い - DocumentRoot
- ルートディレクトリの設定
e.g. DocumentRoot "/var/www/html" で
www.example.com/へのアクセスは/var/www/htmlのインデックスページとなる。 - Alias
- Alias <ドメイン以下のURLパス> <サーバ内のディレクトリパス>
e.g. Alias /blog /var/www/blog
の場合は、http://www.example.com/blog/にアクセスした際、サーバの/var/www/blog/内の既定のインデックスファイルが読み込まれる。 - Directoryタグ
- .htaccessを許可する場合
- AllowOverride All
- IPアドレスによるアクセス制限
-
Order Deny,Allow Deny from all Allow from 127.0.0.1 Allow from 192.168.1.0/24
↑はlocalhost、イントラネット以外からのアクセスを拒否
e.g.
<directory "/var/www/html">〜<directory>
属性にディレクトリパスを指定している。
.htaccessによるパスワード認証
.htaccessファイル内の設定例
SSLRequireSSL # SSL経由のアクセス AuthUserFile <認証するユーザリストのパス> AuthGroupFile <パス> AuthName "<ページ名>" AuthType Basic # 認証タイプ require valid-user
認証するユーザの登録
初回は
# htpasswd -b -c <保存先> <ユーザ名> <パスワード>
二件目以降は既にファイルが作成されているので-cを抜く
# htpasswd -b <保存先> <ユーザ名> <パスワード>
ここで作成したファイルのパスを上のAuthUserFile項目に書く。
- Comments: 0
- Trackbacks: 0
Python: ファイル読み込み時の例外の扱い例 - try、except、else、finallyブロック
- 2008-09-18 (木)
- Python
ファイルのパスや名前のミス、パーミッションの権限が無い等が原因でファイルを読み込めない場合があります。そのような場合、すなわち例外が発生した際にそこで処理を中断して、発生した例外に合わせた処理ブロックにジャンプする構文が、try:~except Error:~構文です。
今回は、コマンドライン引数で英文テキストファイル名を指定し、スクリプト内でファイル内容を読み込み、単語数をカウントし出力するスクリプトを以って、オプションのelse、finallyブロックを含めた例外ブロックの扱いを確認します。
ただし、ここでの「単語」とは、1つの空白文字で区切られた文字列とします(簡単に)。
ソースコード
# -*- coding: UTF-8 -*-
import sys
script_name = sys.argv[0]
try:
arg = sys.argv[1]
f = open(arg, 'r')
except IndexError:
print 'Usage: %s TEXTFILE' % script_name
except IOError:
print '"%s" cannot be opened.' % arg
else:
print arg, 'contains', len(f.read().split(' ')), 'words.'
f.close()
finally:
print 'n"%s" process end.' % script_name
quit()
print 'Not reach this line.'
コードの説明
tryブロック
まず、例外を発生させる恐れのある行は、tryブロック内に書きます。
ここで発生しそうなのは、コマンドライン引数が格納されているリストへのアクセス部分であるsys.argv[1]です。[]演算子で存在しない要素を参照するエラー、もとい例外が発生する恐れがあります。
また、ファイルを開くopen(arg, 'r')も冒頭の理由で例外を発生させるかもしれません。
exceptブロック
exceptブロックは、tryブロックで例外が発生した場合にのみ実行されるブロックです。その為、例外が発生しない場合は実行されません。
発生する可能性のある例外のタイプ毎にexceptブロックを書けば、そのタイプ毎の例外への対処処理を書くことが出来ます。
except TYPE_AError:
TYPE_AErrorが発生した際のとある処理...
except TYPE_BError:
TYPE_BErrorが発生した際のとある処理...
elseブロック (オプション)
elseブロックは全てのexceptブロックの後に書きます(任意なので書かなくても構わない)。
elseブロックはtryブロックで例外が発生しなかった場合にのみ実行されるブロックです。今回は、ファイルの読み込みとクローズに使用しています。
finallyブロック (オプション)
finallyブロックはtryブロックで例外が発生するしないに関わらず実行されるブロックです(任意なので書かなくても構わない)。
実行結果
読み込むテキストファイルを以下のaLine.txtとします。
aLine.txt
Unless I set the standard where I am in any level, I'll be puzzled about what I should do from now on.
コマンドラインで適切な引数を与えた場合
$ python excp01.py aLine.txt aLine.txt contains 22 words. "excp01.py" process end.
存在しないファイル名を引数を与えた場合
$ python excp01.py texfile.tex "texfile.tex" cannot be opened. "excp01.py" process end.
コマンドライン引数を与えなかった場合
$ python excp01.py Usage: excp01.py TEXTFILE "excp01.py" process end.
例外オブジェクト名をpython処理系に聞いてみる
どんなメソッドや関数、演算子が、どのような例外を投げるのか予測が付かない場合があるかと思います。
そんな場合でもとりあえずスクリプトを実行してエラーを確認してみましょう。
SyntaxError: invalid syntax以外のエラーがある場合、例えば、
$ python excp01.py Traceback (most recent call last): File "excp01.py", line 5, inarg = sys.argv[1] IndexError: list index out of range
のような場合は、最終行の行頭のIndexErrorが例外名となります。
何でも例外任せにしていいの?
計算量からみてあまり良いとは言えません。今プログラムのコマンドライン引数の確認を、
if len(sys.argv) != 2: ホニャララ
とすると整数の比較ですみますが、例外のキャッチに任せると、例外インスタンスを生成し送出するという、結構な計算量がかかります。ネットワーク接続やファイル読み書きなどのIOでは有効ですが、それ以外では積極的に使わないほうがいいかもしれません。
ドキュメント
- Comments: 0
- Trackbacks: 0
FedoraにGUI環境GNOMEをyumでインストール
- 2008-09-15 (月)
- Linux
Fedoraのセットアップ時にGUI環境(GNOME, KDE)をインストールしていないが、セットアップ後にyumコマンドでGNOMEをインストールする手順を以下に示します。
XとGNOMEのインストール
以下のコマンドを打ち込みます。
# yum groupinstall "X Window System" "GNOME Desktop Environment"
もしKDEをインストールする場合は、
yum groupinstall "X Window System" "KDE (K Desktop Environment)"
何事も無ければ、大体230MBぐらいD&Iしますので、他のことでもしながら待ちます。
しかし、以下のようなエラーが出た場合、
Error: Missing Dependency: policycoreutils = 2.0.31-7.fc8 is needed by package policycoreutils-gui
Error: Missing Dependencyは依存関係の問題です。上の例では、policycoreutils-guiをインストールするのに必要なpolicycoreutils(2.0.31-7.fc8)が無いですよーと言っています。
念のため、以下のコマンドで必要なものがインストールされているか調べます。
# yum info policycoreutils
仮にインストールされている場合、そのバージョン番号も表示されますので、その番号が必要とされているものと一致しているかどうか確認します。ここでは2.0.31-7.fc8ですね。
一致していない場合は、yumでupdateか再インストール(removeとinstall)しましょう。もし、一致しているのに上記のエラーが出た場合でも、yum updateで一回システム全体をアップデートしてみてください。その後再度、
# yum groupinstall "X Window System" "GNOME Desktop Environment"
を行えば、インストールが始まります。
Fedora起動時にXを立ち上げる
毎回コマンドでstartxと打ってX Window SystemとGNOMEを立ち上げるのも手間ですので以下のファイルを修正して、起動時にGNOMEセッションが使えるようにします。
ファイル/etc/inittabの18行目付近にある
id:3:initdefault: を
id:5:initdefault: に書き換えます。
その後、再起動すればOKです。
日本語入力環境(scim)などのインストール
以下のyumコマンドをroot権限で実行しインストールてください。
# yum groupinstall 'Japanese Support' <中略> Installing: scim-anthy i386 1.2.4-2.fc8 fedora 365 k scim-lang-japanese i386 1.4.7-7.fc8 fedora 23 k Installing for dependencies: im-chooser i386 0.5.3-1.fc8 fedora 82 k scim i386 1.4.7-7.fc8 fedora 475 k scim-bridge i386 0.4.14-1.fc8 updates-newkey 99 k scim-bridge-gtk i386 0.4.14-1.fc8 updates-newkey 39 k <後略>
再起動すれば、「半角/全角」キーで日本語入力が可能になります。
………大学ではLinuxメインですが、自宅ではWindowsでCygwin、MinGWや仮想OS、クロスプラットフォームなboostライブラリとかを用いながら騙し々々開発していました。が、もうそんなことやってられる段階でなくなったので(socket, threadまわりの評価の為)今回デプロイ用のサーバに一応の開発環境を整えました。
あんまり大学での作業を持ち込みたくないんだけれどなぁ。スケジュール見直そうかな。
- Comments: 0
- Trackbacks: 0
Python: テキストファイルの行頭に行番号を追加
- 2008-09-08 (月)
- Python
コマンドラインで指定されたテキストファイルの行頭に行番号を追加し、そのデータを新たなファイルに書き出すスクリプトです。
ソースコード
#!/usr/bin/python
# coding: UTF-8
import sys
argvs = sys.argv
argc = len(argvs)
if (argc != 3):
print 'Usage: $ python %s target_file making_file' % argvs[0]
quit()
f = open(argvs[1])
lines2 = f.readlines()
f.close()
nf = open(argvs[2], 'w')
i = 1
for line in lines2:
nf.write('%3d: %s' % (i, line))
i = i + 1
nf.close()
仮にこのソースコードをfile05a.pyというファイルで保存した場合、使用する際はプロンプトに以下のように打ち込みます。
実行結果
プロンプト
> python file05a.py file05a.py file05a-l.txt
この結果、生成されたファイルが下記になります。
file05a-l.txt
1: #!/usr/bin/python
2: # coding: UTF-8
3:
4: import sys
5:
6: argvs = sys.argv
7: argc = len(argvs)
8: if (argc != 3):
9: print 'Usage: $ python %s target_file making_file' % argvs[0]
10: quit()
11: f = open(argvs[1])
12: lines2 = f.readlines()
13: f.close()
14: nf = open(argvs[2], 'w')
15: i = 1
16: for line in lines2:
17: nf.write('%3d: %s' % (i, line))
18: i = i + 1
19: nf.close()
- Comments: 0
- Trackbacks: 0
Python: コマンドライン引数の取得 - sys.argv変数
- 2008-07-26 (土)
- Python
コマンドラインで与える引数によってプログラムの挙動を変えたいという場面はよくあります。Python ではコマンドライン引数は sys モジュールの argv 属性に文字列を要素とするリストとして格納されています。そして、リストの先頭要素(sys.argv[0])はスクリプトファイル名となっています。
ソースコード
# coding: Shift_JIS
import sys # モジュール属性 argv を取得するため
argvs = sys.argv # コマンドライン引数を格納したリストの取得
argc = len(argvs) # 引数の個数
# デバッグプリント
print argvs
print argc
print
if (argc != 2): # 引数が足りない場合は、その旨を表示
print 'Usage: # python %s filename' % argvs[0]
quit() # プログラムの終了
print 'The content of %s ...n' % argvs[1]
f = open(argvs[1])
line = f.readline() # 1行読み込む(改行文字も含まれる)
while line:
print line
line = f.readline()
f.close
text.txt
It is meaningless only to think my long further aims idly. It is important to set my aims but at the same time I should confirm my present condition. Unless I set the standard where I am in any level, I'll be puzzled about what I should do from now on.
実行結果
引数を指定しない場合
$ python argv01.py ['argv01.py'] 1 Usage: # python SCRIPTNAME.py filename
引数を指定した場合
$ python argv01.py text.txt ['argv01.py', 'text.txt'] 2 The content of text.txt ... It is meaningless only to think my long further aims idly. It is important to set my aims but at the same time I should confirm my present condition. Unless I set the standard where I am in any level, I'll be puzzled about what I should do from now on.
リファレンス
- Comments: 0
- Trackbacks: 0
Home > Tags > Command