linux
linuxはオープンソースのOSです。
各ディレクトリの役割
/bin | 基本コマンド |
/boot | 起動に必要なファイル |
/dev | デバイスファイル |
/etc | 設定ファイル |
/home | ユーザーのホームディレクトリ |
/lib | 共有ライブラリ |
/mnt | 一時的なマウントポイント |
/opt | 追加アプリケーション |
/proc | プロセス情報 |
/root | root用ホームディレクトリ |
/sbin | システム管理用コマンド |
/tmp | 一時ファイル |
/usr | 各種プログラム |
/var | 変更させるデータ |
#ls / bin dev initrd.img media proc selinux tmp vmlinuz boot etc lib mnt root srv usr cdrom home lost+found opt sbin sys var
ファイアウォール ipatables
まず初めにセキュリティの設定
sshやhttp,webminなどのポートを許可し、その他の接続を破棄する。
# vi iptables # iptables -P INPUT ACCEPT # iptables -P FORWARD DROP # iptables -P OUTPUT ACCEPT # iptables -F # iptables -A INPUT -p tcp --dport 80 -j ACCEPT # iptables -A INPUT -p tcp --dport 21 -j ACCEPT # iptables -A INPUT -p tcp --dport 110 -j ACCEPT # iptables -A INPUT -p tcp --dport 25 -j ACCEPT # iptables -A INPUT -p tcp --dport 22 -j ACCEPT # iptables -A INPUT -p tcp --dport 10000 -j ACCEPT # iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # iptables -P INPUT DROP # /etc/init.d/iptables save Saving firewall rules to /etc/sysconfig/iptables: [ OK ] # service iptables restart Flushing firewall rules: [ OK ] Setting chains to policy ACCEPT: nat mangle filter [ OK ] Unloading iptables modules: [ OK ] Applying iptables firewall rules: [ OK ] #
ログファイルの管理
/var/log/httpd/access_log Apacheのアクセスログ /var/log/yum.log yumパッケージのログ /var/log/message システムメッセージのログ
マウント
外付けストレージ(CD-ROMやUSB機器など)を認識
$ mount iso0960 /dev/dba /media/ $ mount vfat /dev/dbc /media/HD-XXXX 認識したディレクトリの中身を一時ディレクトリにすべてコピー $ cp /media/* /temp/
ネットワーク設定
networkの設定ファイル$ vi /etc/sysconfig/network NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=www.exsample.com GATEWAY=192.168.0.1 $ vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 ONBOOT=yes BOOTPROTO=none NETMASK=255.255.255.0 USERCTL=no PEERDNS=no GATEWAY=192.168.0.1 TYPE=Ethernet IPADDR=192.168.11.11 $ vi /etc/resolv.conf nameserver 192.168.11.11 $ service network restart
yum
yum-fastestmirror
自動的に一番早いサーバからパッケージを取得する
yum install yum-fastestmirror yum update
Telnet
リモート操作
$ rpm -q telnet-server #yum -y install telnet-server
SSH
暗号通信でのテキストベースリモート操作
SSHHTTPD
apache WEBサーバ
apache + mod_perl で perlスクリプトを高速化
# yum -y install mod_perl
# vi /etc/httpd/conf/httpd.conf
SetHandler perl-script PerlHandler ModPerl::Registry PerlSendHeader On
cron
時間帯を指定してプログラムを自動実行させるvi /var/crontab
記述 実行間隔 分 時 日 月 曜日 ユーザ コマンド 59 23 * * * 毎日23:59 */5 * * * * 5分おき */10 1 * * * 1:00~1:59の間に10分おき 0 2-9/3 * * * 2:00 5:00 8:00 0 1 * * 1 毎週月曜1:00 30 2 1,15 * * 1日と15日の2:30 例: 05 9 * * Sun root /home/www/get_rss.sh 毎週日曜9:05にシェルスクリプトを実行
FTP
vsftpd
Very Secure File Transfer Protcol Daemon
ファイル転送
rpm -q vsftpd yum -y install vsftpd
NTP
Network Time Protcol
サーバの時刻をネットワークを介して調整するプロトコル。
yum -y install ntp chkconfig ntp on
DHCP
Dynamic Host configuration Protcol
クライアントPCにIPアドレスを自動的に割り当てるプロトコル。
yum -y install dhcp chkconfig dhcpd on
LDAP
Lightweight Directory Access Protcol
ユーザ認証管理を行うプロトコル。
LDAPNFS
マウントしたシステムファイルをローカルのように扱い、共有ディレクトリ化する
パッケージの確認$ rpm -q nfs-utils nfs-utils-x.xxxxxNFSの設定ファイル
$ vi /etc/exports 共有するディレクトリ 許可するIPアドレス(読み書き許可のモード) /home 192.168.0.2(rw) ro ...読み込み専用 rw ...読み込み・書き込み両用
ファイアウォールでNFSのポートを許可
NFSアクセスを許可するためにファイアウォールの設定を行う必要がある。 お互いのIPアドレスの発信元を指定して許可すること。NFSサービスの起動と自動起動
$ service nfs start $ chkconfig --level 345 nfs on
NFSクライアントの設定
NFSを起動してイルサーバのIPアドレス:ディレクトリ マウントする対象ディレクトリ mount 192.168.0.1:/home /home
Samba
LinuxをWindows互換のファイル共有をできるようにして、ファイルサーバにする。
sambaのインストール
yum -y install samba
パッケージの確認
$ rpm -q samba samba-common-x.xxxx samba-x.xxxx samba-client-x.xxxx system-config-samba-x.xxxxSambaの設定ファイル
$ vi /etc/samba/smb.confSambaの設定ファイル
$ vi /etc/samba/smb.conf # 共有化するディレクトリを指定 path = /public # アクセスできるIPアドレスの指定 hosts allow = 192.168.3. # 書き込み可能に witable = yes # encrypt passwprds = yesサンバ Sambaサービスの起動と自動起動
$ service smb start $ chkconfig --level 345 smb on
WebDAV
webコンテンツの編集やリビジョン管理を行う機能
Webmin
WINDOWSからGUIでLinux操作
WEBMINはブラウザからLinuxのシステム設定管理を行うことが出来るツールだ。
http://www.webmin.com/# cd /usr/local/rpm # rpm -ivh webmin-x.xxxx-noarch.rpmhttp://exsample.com:10000/にブラウザでアクセス。
DNS BIND
BINDのインストール
yum -y install named
BINDの確認
yum search named yum update bind bind-chroot bind-
設定ファイルのコピー
ワイルドカードを使ってサンプル設定ファイルを一括コピーする。
# cd /usr/share/doc/bind-9.3.4/sample/etc/ # cp named.* /etc # cd /usr/share/doc/bind-9.3.4/sample/var/named/ # cp local* named.* /var/named/
設定ファイルの実行権限を変更。
# cd chown root.named /etc/named.* /var/named/named.* /var/named/local* # cd chmod 640 /etc/named.* /var/named/named.* /var/named/local* # restorecon /etc/named.*
設定ファイルを編集。
BIND起動
# service named start named を起動中: [ OK ]
named.conf
//内向きの設定 view "internal" { . . . zone "exsample.com.internal.zone"{ } //外向きの設定 view "external" { . . . zone "exsample.com.external.zone"{ } }
ゾーンファイルの設定
ドメインにIPアドレスを指定する$ vi exsample.com.zone www IN A 192.168.0.1 smtp IN A 192.168.0.2 web IN CNAME wwwnamedの起動と自動起動
$ service named start $ shkconfig --level 345 named on動作確認
$ host exsample.com 詳細表示 $ host -a exsample.com $ nslookup exsample.com
プロキシサーバ
yum -y install squid
CYGWIN
WINDOWS上でLinuxコマンドを使うことができるソフトです。Xen
仮想化
Linux上でWindowsを起動など、異なるOSをゲストOSとして起動させる。
必要なもの
IntelVertualTechnologyに対応しているBIOSマザーボード
512MB以上のメモリ
http://www.cl.cam.ac.uk/Research/SRG/netos/xen/downloads.htmlxen-xxxxxxx.bin.tar
xen-xxx-install-xx.tar.gz
#tar zxvf xen-xxxx-install.tar.gz cd xen-xxxx-install sh ./install.sh depmod -a xxxxx-xen
対話式LINUXコマンド TCL
ただ命令を送信するだけでなく、パスワード入力の返信が帰ってくる対話式のコマンドもスクリプトから実行することが出来る例: ティンクルファイル実行 ./test.tcl testfile testuser testpass #!/usr/bin/expect -f spawn htpasswd [lindex $argv 0] [lindex $argv 1] 命令文を引数付きで実行する expect "New password:" コマンドから帰ってくる言葉に一致したら… send "[lindex $argv 2]" 再び引数を与えて送信する expect "Re-type new password:" send "[lindex $argv 2]" expect eof
VMware Player - 仮想マシンを実行する
http://www.vmware.com/jp/products/player/ WINDOWS上でさらに別のOS(Linuxなど)を立ち上げることができる。 linux fedora自宅サーバの公開
公開用のドメインを取得
https://www.dyndns.com/必要事項を記入して登録するとメールが送られるので48時間以内にメールに書かれているURLにアクセスする。(このメールは迷惑メールに飛ぶことがあるので注意)
ログイン後の画面
ドメイン登録画面
エラーと対処法
./configure すると、以下のようなエラーが出る
./configure configure: error: no acceptable cc found in $PATH
gccか開発ツールがないので、コンパイラできない。gccパッケージをインストールすること。
yum -y install gcc* yum -y groupinstall "Development Tools"
FastCGI
cgi高速化
http://www.fastcgi.com/wget http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz tar zxvf fcgi-2.4.0.tar.gz cd fcgi-2.4.0 ./configure make make install yum install httpd-devel
# yum -y install gcc* Loading "fastestmirror" plugin Loading mirror speeds from cached hostfile * base: centosa3.centos.org * updates: centosv.centos.org * addons: centosa3.centos.org * extras: centosk2.centos.org Setting up Install Process Parsing package install arguments Resolving Dependencies --> Running transaction check ---> Package gcc-gfortran.i386 0:4.1.2-42.el5 set to be updated --> Processing Dependency: libgfortran = 4.1.2-42.el5 for package: gcc-gfortran --> Processing Dependency: libgfortran.so.1 for package: gcc-gfortran ---> Package gcc-gnat.i386 0:4.1.2-42.el5 set to be updated --> Processing Dependency: libgnat = 4.1.2-42.el5 for package: gcc-gnat --> Processing Dependency: libgnat-4.1.so for package: gcc-gnat --> Processing Dependency: libgnarl-4.1.so for package: gcc-gnat ---> Package gcc-objc.i386 0:4.1.2-42.el5 set to be updated --> Processing Dependency: libobjc.so.1 for package: gcc-objc --> Processing Dependency: libobjc = 4.1.2-42.el5 for package: gcc-objc ---> Package gcc-objc++.i386 0:4.1.2-42.el5 set to be updated ---> Package gcc.i386 0:4.1.2-42.el5 set to be updated --> Processing Dependency: libgomp.so.1 for package: gcc --> Processing Dependency: glibc-devel >= 2.2.90-12 for package: gcc --> Processing Dependency: libgomp = 4.1.2-42.el5 for package: gcc ---> Package gcc-c++.i386 0:4.1.2-42.el5 set to be updated --> Processing Dependency: libstdc++-devel = 4.1.2-42.el5 for package: gcc-c++ ---> Package gcc-java.i386 0:4.1.2-42.el5 set to be updated --> Processing Dependency: libgcj-devel = 4.1.2-42.el5 for package: gcc-java --> Running transaction check ---> Package libobjc.i386 0:4.1.2-42.el5 set to be updated ---> Package libgnat.i386 0:4.1.2-42.el5 set to be updated ---> Package libgcj-devel.i386 0:4.1.2-42.el5 set to be updated ---> Package glibc-devel.i386 0:2.5-24.el5_2.2 set to be updated --> Processing Dependency: glibc-headers = 2.5-24.el5_2.2 for package: glibc-devel --> Processing Dependency: glibc-headers for package: glibc-devel --> Processing Dependency: glibc = 2.5-24.el5_2.2 for package: glibc-devel ---> Package libstdc++-devel.i386 0:4.1.2-42.el5 set to be updated ---> Package libgfortran.i386 0:4.1.2-42.el5 set to be updated ---> Package libgomp.i386 0:4.1.2-42.el5 set to be updated --> Running transaction check ---> Package glibc-headers.i386 0:2.5-24.el5_2.2 set to be updated --> Processing Dependency: kernel-headers for package: glibc-headers --> Processing Dependency: kernel-headers >= 2.2.1 for package: glibc-headers ---> Package glibc.i686 0:2.5-24.el5_2.2 set to be updated --> Processing Dependency: glibc-common = 2.5-24.el5_2.2 for package: glibc --> Running transaction check ---> Package kernel-headers.i386 0:2.6.18-92.1.22.el5 set to be updated ---> Package glibc-common.i386 0:2.5-24.el5_2.2 set to be updated --> Finished Dependency Resolution Dependencies Resolved ============================================================================= Package Arch Version Repository Size ============================================================================= Installing: gcc-gfortran i386 4.1.2-42.el5 base 3.1 M gcc-gnat i386 4.1.2-42.el5 base 11 M gcc-java i386 4.1.2-42.el5 base 2.9 M gcc-objc++ i386 4.1.2-42.el5 base 2.8 M Updating: glibc i686 2.5-24.el5_2.2 updates 5.2 M glibc-common i386 2.5-24.el5_2.2 updates 16 M Installing for dependencies: gcc i386 4.1.2-42.el5 base 5.2 M gcc-c++ i386 4.1.2-42.el5 base 3.4 M gcc-objc i386 4.1.2-42.el5 base 2.6 M glibc-devel i386 2.5-24.el5_2.2 updates 2.0 M glibc-headers i386 2.5-24.el5_2.2 updates 611 k kernel-headers i386 2.6.18-92.1.22.el5 updates 854 k libgcj-devel i386 4.1.2-42.el5 base 1.4 M libgfortran i386 4.1.2-42.el5 base 230 k libgnat i386 4.1.2-42.el5 base 989 k libgomp i386 4.1.2-42.el5 base 82 k libobjc i386 4.1.2-42.el5 base 101 k libstdc++-devel i386 4.1.2-42.el5 base 2.9 M Transaction Summary ============================================================================= Install 16 Package(s) Update 2 Package(s) Remove 0 Package(s) Total download size: 62 M Downloading Packages: (1/18): libgomp-4.1.2-42. 100% |=========================| 82 kB 00:05 (2/18): gcc-java-4.1.2-42 100% |=========================| 2.9 MB 01:48 (3/18): libgfortran-4.1.2 100% |=========================| 230 kB 00:09 (4/18): glibc-common-2.5- 100% |=========================| 16 MB 00:27 (5/18): glibc-2.5-24.el5_ 100% |=========================| 5.2 MB 00:08 (6/18): kernel-headers-2. 100% |=========================| 854 kB 00:01 (7/18): libstdc++-devel-4 100% |=========================| 2.9 MB 02:19 (8/18): gcc-c++-4.1.2-42. 100% |=========================| 3.4 MB 01:51 (9/18): gcc-4.1.2-42.el5. 100% |=========================| 5.2 MB 03:22 (10/18): glibc-headers-2. 100% |=========================| 611 kB 00:01 (11/18): glibc-devel-2.5- 100% |=========================| 2.0 MB 00:03 (12/18): gcc-objc++-4.1.2 100% |=========================| 2.8 MB 01:17 (13/18): libgcj-devel-4.1 100% |=========================| 1.4 MB 00:31 (14/18): libgnat-4.1.2-42 100% |=========================| 989 kB 00:22 (15/18): gcc-objc-4.1.2-4 100% |=========================| 2.6 MB 01:17 (16/18): gcc-gnat-4.1.2-4 100% |=========================| 11 MB 06:18 (17/18): gcc-gfortran-4.1 100% |=========================| 3.1 MB 01:49 (18/18): libobjc-4.1.2-42 100% |=========================| 101 kB 00:05 Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Updating : glibc-common ####################### [ 1/20] Updating : glibc ####################### [ 2/20] Installing: libobjc ####################### [ 3/20] Installing: libgnat ####################### [ 4/20] Installing: libgfortran ####################### [ 5/20] Installing: libgomp ####################### [ 6/20] Installing: kernel-headers ####################### [ 7/20] Installing: glibc-headers ####################### [ 8/20] Installing: glibc-devel ####################### [ 9/20] Installing: gcc ####################### [10/20] Installing: gcc-objc ####################### [11/20] Installing: libstdc++-devel ####################### [12/20] Installing: gcc-c++ ####################### [13/20] Installing: libgcj-devel ####################### [14/20] Installing: gcc-gfortran ####################### [15/20] Installing: gcc-gnat ####################### [16/20] Installing: gcc-objc++ ####################### [17/20] Installing: gcc-java ####################### [18/20] Cleanup : glibc ####################### [19/20] Cleanup : glibc-common ####################### [20/20] Installed: gcc-gfortran.i386 0:4.1.2-42.el5 gcc-gnat.i386 0:4.1.2-42.el5 gcc-java.i386 0:4.1.2-42.el5 gcc-objc++.i386 0:4.1.2-42.el5 Dependency Installed: gcc.i386 0:4.1.2-42.el5 gcc-c++.i386 0:4.1.2-42.el5 gcc-objc.i386 0:4.1.2-42.el5 glibc-devel.i386 0:2.5-24.el5_2.2 glibc-headers.i386 0:2.5-24.el5_2.2 kernel-headers.i386 0:2.6.18-92.1.22.el5 libgcj-devel.i386 0:4.1.2-42.el5 libgfortran.i386 0:4.1.2-42.el5 libgnat.i386 0:4.1.2-42.el5 libgomp.i386 0:4.1.2-42.el5 libobjc.i386 0:4.1.2-42.el5 libstdc++-devel.i386 0:4.1.2-42.el5 Updated: glibc.i686 0:2.5-24.el5_2.2 glibc-common.i386 0:2.5-24.el5_2.2 Complete!