CentOSにApache httpdをいれたらiptablesに弾かれたでござる。
起動
# /etc/init.d/httpd start httpd を起動中: [ OK ] # ps aux|grep httpd
プロセスがちゃんと動いていたらおk。
何故彼は繋がろうとしないのか。
$ ping centos01 PING centos01 (192.168.1.1): 56 data bytes 64 bytes from 192.168.1.1: icmp_seq=0 ttl=64 time=0.536 ms ・ ・
いけてるのでtelnet
$ telnet centos01 80 Trying 192.168.1.1... telnet: connect to address 192.168.1.1: Connection refused telnet: Unable to connect to remote host
おっ。弾かれている。
tracerouteは?
$ traceroute centos01 traceroute to centos01 (192.168.1.1), 64 hops max, 52 byte packets 1 centos01 (192.168.1.1) 0.502 ms !Z 0.105 ms !Z 0.193 ms !Z
いけてるっぽい。
ぐぐってみたらFWくさい。
# /sbin/iptables -L --line-number Chain INPUT (policy ACCEPT) num target prot opt source destination 1 RH-Firewall-1-INPUT all -- anywhere anywhere Chain FORWARD (policy ACCEPT) num target prot opt source destination 1 RH-Firewall-1-INPUT all -- anywhere anywhere Chain OUTPUT (policy ACCEPT) num target prot opt source destination Chain RH-Firewall-1-INPUT (2 references) num target prot opt source destination 1 ACCEPT all -- anywhere anywhere 2 ACCEPT icmp -- anywhere anywhere icmp any 3 ACCEPT esp -- anywhere anywhere 4 ACCEPT ah -- anywhere anywhere 5 ACCEPT udp -- anywhere XXX.XXX.XXX.XXX udp dpt:mdns 6 ACCEPT udp -- anywhere anywhere udp dpt:ipp 7 ACCEPT tcp -- anywhere anywhere tcp dpt:ipp 8 ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED 9 ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh 10 REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
RH-Firewall-1-INPUTのREJECTの前にhttpとhttpsを入れればいいのかな?
# /sbin/iptables -I RH-Firewall-1-INPUT 10 -p tcp --dport https -j ACCEPT # /sbin/iptables -I RH-Firewall-1-INPUT 10 -p tcp --dport http -j ACCEPT # /sbin/iptables -L --line-number Chain INPUT (policy ACCEPT) num target prot opt source destination 1 RH-Firewall-1-INPUT all -- anywhere anywhere Chain FORWARD (policy ACCEPT) num target prot opt source destination 1 RH-Firewall-1-INPUT all -- anywhere anywhere Chain OUTPUT (policy ACCEPT) num target prot opt source destination Chain RH-Firewall-1-INPUT (2 references) num target prot opt source destination 1 ACCEPT all -- anywhere anywhere 2 ACCEPT icmp -- anywhere anywhere icmp any 3 ACCEPT esp -- anywhere anywhere 4 ACCEPT ah -- anywhere anywhere 5 ACCEPT udp -- anywhere XXX.XXX.XXX.XXX udp dpt:mdns 6 ACCEPT udp -- anywhere anywhere udp dpt:ipp 7 ACCEPT tcp -- anywhere anywhere tcp dpt:ipp 8 ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED 9 ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh 10 ACCEPT tcp -- anywhere anywhere tcp dpt:http 11 ACCEPT tcp -- anywhere anywhere tcp dpt:https 12 REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
追加したら保存。
# /sbin/service iptables save ファイアウォールのルールを /etc/sysconfig/iptables に保存中[ OK ]
いけてるかなー?
$ telnet centos01 80 Trying 192.168.1.1... Connected to centos01. Escape character is '^]'. ] <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>501 Method Not Implemented</title> </head><body> <h1>Method Not Implemented</h1> <p>] to / not supported.<br /> </p> <hr> <address>Apache/2.2.3 (CentOS) Server at localhost.localdomain Port 80</address> </body></html> Connection closed by foreign host.
CentOSにSubversionをいれてみよう
http://park1.wakwak.com/~ima/centos4_subversion0001.html
とか
http://centossrv.com/subversion.shtml
とか参考に。
リポジトリをつくる
プロジェクトをつっこむためのSVNリポジトリってのをまず作る。
リポジトリは、最初に空ディレクトリをつくってからsvnadminコマンドで作る。
# mkdir -p /usr/local/svn/repos # svnadmin create /usr/local/svn/repos
完了。見てみると空だったディレクトリになんかファイルができているようだ。
# ls /usr/local/svn/repos/ README.txt conf dav db format hooks locks
プロジェクト(モジュール)を登録してみる
適当にそれっぽいファイルを捏造する。
# cd /home/gulibow/ # mkdir -p test01/src # mkdir -p test01/lib # echo "hoge" > test01/src/hoge.txt # echo "foo" > test01/lib/foo.txt # echo "bar" > test01/lib/bar.txt # ls -R test01/ test01/: lib src test01/lib: bar.txt foo.txt test01/src: hoge.txt
こいつを、svn importで登録する。
# svn import -m 'import test' test01 file:///usr/local/svn/repos/test01 追加しています test01/lib 追加しています test01/lib/foo.txt 追加しています test01/lib/bar.txt 追加しています test01/src 追加しています test01/src/hoge.txt リビジョン 1 をコミットしました。
ちなみにrepos配下のtest01ってのはここで適当に指定した。予め作ったりとかはしてない。
成功してんだろうか・・・
指定リポジトリの中身をみるにはsvn listを使う。yum listみたいな感じ。
# svn list file:///usr/local/svn/repos test01/
おお。できてるっぽい。今度はtest01の中身をみてみる。
# svn list file:///usr/local/svn/repos/test01 -R lib/ lib/bar.txt lib/foo.txt src/ src/hoge.txt
おおー。ちゃんと入ってるっぽいな。
チェックアウトしてみよう。
# cd /home/gulibow # mkdir -p work/projects/test01 # svn checkout file:///usr/local/svn/repos/test01 work/projects/test01 A work/projects/test01/lib A work/projects/test01/lib/foo.txt A work/projects/test01/lib/bar.txt A work/projects/test01/src A work/projects/test01/src/hoge.txt リビジョン 1 をチェックアウトしました。 # ls work/projects/test01 -R work/projects/test01: lib src work/projects/test01/lib: bar.txt foo.txt work/projects/test01/src: hoge.txt
trunk, branch, tag
とりあえず適当にimportしちゃったけども・・・
Subversionではあらかじめtrunk, tag, branchってディレクトリをわけて登録しておくのが「慣例」らしい。
branchはbranch配下におくってことね。
# svn mkdir file:///usr/local/svn/repos/test01/trunk -m "create" # svn mkdir file:///usr/local/svn/repos/test01/tags -m "create" # svn mkdir file:///usr/local/svn/repos/test01/branches -m "create" # svn import -m 'import test' test01 file:///usr/local/svn/repos/test01/trunk
ゴミが残ってる気がするが気にしないw
これが正しいやりかたっぽい。
tagをうつ場合は、
# svn copy file:///usr/local/svn/repos/test01/trunk file:///usr/local/svn/repos/test01/tags/release-1.5 -m "rev1.0"
これで。
MacにVMでLinuxをいれてみる
mavenのいろいろな使い方を試そうと思ったんだがリリースとかデプロイとかリポジトリとかいろいろ試すのにやっぱVMあったほうがいいよね、ということで。
http://d.hatena.ne.jp/wadap/20080629/1214703866
このへん参考に。
なにはともあれダウンロード
WindowsのVMwarePlayerとかは無償だった気がするがMacのVMwareFusionはそうじゃないっぽい。
ただ他のやつも調べてみたがやっぱVMがいいらしい。
とりあえずトライアルで使ってみよう。
https://www.vmware.com/jp/tryvmware/?p=vmware-fusion31&lp=1
なんかダウンロードマネージャが動かなかったので手動でダウンロードした。
ちなみにサポートレスライセンスだと\5,980っぽい。思ったより安い。
http://www.act2.com/products/fusion3.html
ディストリビューションのダウンロード
は・・・なんでもいいんだけどまぁ無難にCentOSにしておこうかな。
http://www.glidenote.com/archives/185#more-185
ここでCentOSのインストールやってたので参考に。
5だとhttp://mirror.centos.org/centos/5/isos/にある。
手元のMac一応64bitなのでx86_64選ぶ。
ミラーサイト適当に選んだら、
CentOS-5.5-x86_64-bin-1of8.iso
をまずは落とす。
時間かかるので2of8を落としつつ・・・
仮想マシンにCentOSをいれる
VM立ち上げるとこんな画面になるので
Windowsまたは別のオペレーティングシステムを新しい仮想マシンにインストールします。
ディスクは使用せず続行。
するとオペレーションシステムのインストールディスクイメージファイルを使用ってのが出てくるのでさっき落としたISOを選択。
簡易インストールってのがあるんだがどう料理されるかわからんのでチェック外す。
設定のカスタマイズってのをして、ファイル名はとりあえずcentos01とかにしておく。適当だな。
なんかウィンドウがでてきてメニューがいろいろあるのでディスクサイズを20Gから8Gとかにする。20はいらんでしょ。
めんどくさくなってきたので細かいことは後でまた考える事にして、設定のウィンドウ消してスタートアップを押す。
ぬぁっ、結構ディスクいるな・・・
全部削るかまよったけどまあいいや。続行。
ディスクひとつ終わるごとに、VMのメニューから
仮想マシン>CD/DVD>ディスクイメージの選択>ディスクの接続ってやってディスクをいれかえる。
全部完了したら再起動。
VMware toolsをいれる
なんかいれといたほうがいいらしい。
rootでログインした状態で、
VMのメニューから、仮想マシン>VMware toolsのインストール>ダウンロード>インストール
[root@localhost ~]# mount /dev/cdrom /media
mountできたら適当なとこにコピーしてインストール。
[root@localhost ~]# cp /media/VMwareTools-8.4.5-332101.tar.gz /usr/local/src/ [root@localhost ~]# cd /usr/local/src/ [root@localhost src]# tar -xvzf VMwareTools-8.4.5-332101.tar.gz [root@localhost src]# ./vmware-tools-distrib/vmware-install.pl
pathとかいろいろ聞かれるが、デフォルトが[/usr/bin]みたいに表示されるのでそれをそのまま入力。
インストールが完了したら、手動で起動するかログオフするかしろっていわれるのでまぁログオフしてまた入る。
ホストのMacから入ってみよう
ここまできたら最低限のことはできてるので、試しにMacから入ってみよう。
この設定で入れるともうsshd動いてるはず。
[root@localhost ~]# ps aux|grep ssh root 2933 0.0 0.2 62608 1204 ? Ss 02:24 0:00 /usr/sbin/sshd root 8322 0.0 0.1 61144 760 pts/0 R+ 03:09 0:00 grep ssh
sshdが動いていたら、IPを確認してみる。
[root@localhost ~]# ifconfig |grep inet inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
そしたらMacから
$ ssh root@192.168.1.1
で入れる。一応外に疎通できてるかも確認しておく。
ユーザーをつくる
wheelグループにも追加しておく。
[root@localhost ~]# /usr/sbin/useradd gulibow [root@localhost ~]# passwd gulibow [root@localhost ~]# /usr/sbin/usermod -G wheel gulibow
wheelグループしかrootになれないようにする
[root@localhost ~]# echo "SU_WHEEL_ONLY yes" >> /etc/login.defs [root@localhost ~]# vi /etc/pam.d/su # Uncomment the following line to require a user to be in the "wheel" group. auth required pam_wheel.so use_uid
※pam.d/suは該当行の#を削除
sshでrootログインできなくする
[root@localhost ~]# vi /etc/ssh/sshd_config #PermitRootLogin yes ↓ PermitRootLogin no [root@localhost ~]# /etc/init.d/sshd restart
もう一度Macからsshでroot@で入ろうとすると弾かれていればOK。
あとさっき作ったユーザーでログインできて、rootになれることも確認。
yumアップデート
[root@localhost ~]# yum -y update
ホスト名も変更しておこう
ここまでやってきてあれだが。
[root@localhost ~]# vi /etc/hosts centos01 を追記 127.0.0.1 localhost.localdomain localhost centos01 [root@localhost ~]# vi /etc/sysconfig/network #HOSTNAME=localhost.localdomain HOSTNAME=centos01 [root@localhost ~]# /etc/init.d/network restart
一旦ログアウトすれば反映されてる。
Mac側のhostsに追記すれば、
$ ssh gulibow@centos01
でいけるようになってる。
入れるとこまではひとまず完了。
細かい設定とかはさておき、お疲れさまでした。
m2eclipseでmavenプロジェクトをつくってみる
m2eclipseのインストール
何故m2eclipseかは深く考えていない。前にいいよ、っていわれたので。
EclipseのHelp>Install New Softwareにhttp://m2eclipse.sonatype.org/sites/m2e を追加してインストールするだけ。
早速プロジェクトをつくってみる
File>New>Maven
からMaven Projectを選んでNext。
チェックアウトとかモジュールもあとでやってみよう。
archetypeってのがいわゆるスニペットというかテンプレートというかな雰囲気だが
とりあえずはまんまでつくってみることにしたいので
Create a simple projectにチェックしとく。
NextいくとなんかGroup IdとかArtifact Idをいれろといわれる。
グループ Id(groupId)はプロジェクトを一意に識別する名前で、プロジェクトのルートパッケージ名を指定するのが一般的です。
アーティファクト Id(artifactId)はプロジェクトの成果物の名前です。JARやWARにつける名前を指定してください。
http://d.hatena.ne.jp/Kishi/20090228/1235813480
ってあったんだけどhttp://maven.ozacc.com/みるとなんか適当くせぇ。
とりあえずgroup idをmaven-test、artifact idはmaven-sample01とかにしてpackageはjarにしてみる。
なんか空白あるけどまぁいいかってFinishするとなんかmavenがごにょごにょ動いてプロジェクトができる。
おお。できた。
依存性を追加してみる
プロジェクトのコンテキストメニューからMaven>Add Dependency
なんかcommons-langとかいれてみると候補が出て・・・こなかった。
RepositoryのIndexをUpdateしなきゃなんだがなんか失敗する。
フォーラムみてたら日によって発生とか書いてあったwので
とりあえずはpom.xmlを直接編集する方針で。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>maven-test</groupId> <artifactId>maven-sample01</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.5</version> </dependency> </dependencies> </project>
するとまたmavenがなんかごにょごにょして、commons-langが使えるようになっている!!
package maventest; import org.apache.commons.lang.StringUtils; public class Sample01 { private static final String PREFIX = "hoge_"; public static void main(String[] args) { System.out.println(new Sample01().addPrefix("test")); } public String addPrefix(String str) { if(StringUtils.isBlank(str)) return PREFIX; return PREFIX + str; } }
ちゃんとコンパイル通る。
テストもつけてみよう。今度はpom.xmlをこんな感じにしてみる。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>maven-test</groupId> <artifactId>maven-sample01</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.5</version> <scope>compile</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.3</version> <scope>test</scope> </dependency> </dependencies> </project>
junitのdependencyを追加したんだけど、今度はscopeを指定してみた。testだとテストのときしか依存性ができない。
package maventest; import static org.junit.Assert.*; import org.junit.Test; public class Sample01Test { @Test public void testAddPrefix() { String prefix = "hoge_"; String input = "maventest"; assertEquals(prefix + input, new Sample01().addPrefix(input)); } }
普通にJUnit動かすんじゃなくて、mavenのtestを実行してみる。
Run AsからMaven実行して、goalをtestにしてみる。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
おお。動いてるっぽいぞ。
今度はわざと失敗してみる。
@Test public void testAddPrefix() { String prefix = "baka_"; String input = "maventest"; assertEquals(prefix + input, new Sample01().addPrefix(input)); }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
おおおお。ちゃんと失敗した。