自分用勉強記録⑥初めてのCGIデビュー

***自分の確認用に残しているため、文は支離滅裂です。ご了承ください。

さて!本日は初めてのCGIデビューということで、CGIを使ってWebページをさらに進化させようではないか!

CGI機能を楽しむには「Perl」(その他:RubyPHPなど)が必要。

調べてみると、Perlはめちゃ有名だからCentOSとかインストールした時に既に入ってるよ、だからいちいちインストールしなくてもOK!的なことが書いてあったので、おバカな私は実際にコマンドで調べもせずその情報を鵜呑みに。そのあと散々なことが待ち受けてるにもかかわらず…。

うん!Perlは既に入ってるみたいだし?CGIを使える様に設定を変更しようかな。

やることは以下3点!

CGI・HTMLプログラムの置き場所を作る

CGI設定の変更

cgi、htmlファイルの中身を記述

それでは早速①から。以下の図のようにディレクトリ・ファイルを作成。(今回、cgiディレクトリ名はcgi-bin、htmlのディレクトリ名はhtmlとした)

f:id:beginnergirl:20170912124825p:plain

お次は②CGIの設定変更(赤文字:変更箇所)

[設定ファイルを開く]

#vi /etc/httpd/conf/httpd.conf

 [変更]

ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

<Directory "/var/www/cgi-bin">

AllowOverride None

Options ExecCGICGIの実行を許可するというOptionsの設定)

Order allow,deny

Allow from all

</Directory>

~

AddHandler cgi-script .cgi「#」を削除 

 

これでおっけい!次は③へ!

今回はクライアントから名前と電話番号を入力してもらうサイトを作る。クライアントが入力したデータを受け取る方法は2つある。

⑴GETメソッド

⑵POSTメソッド

⑵がなんとなくわかりやすかったので⑵を選択。

それではinput.cgiを作成し、⑵を使って中身を書いていく。

[input.cgi]

#!/usr/bin/perl

print "Content-type:text/plain\r\n";

print"\r\n";

read (STDIN, $data, $ENV{'CONTENT_LENGTH'});

$data =~ tr/+/ /;

$data = ~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2',#1)/eg;

print $data;

実行権限を与える

#chmod +x input.cgi

次はinput.htmlを作成し中身を書いていく。

[input.html]

<html>

<body>

<form method="POST" action="/cgi-bin/input.cgi">

<p>name: <input type="text" name="name" size=20></p>

<p>number: <input type="text" name="phonenumber" size=15></p>

<p><input type="submit" value=PUT" name="submit"></p>

</form>

</body>

</html>

ファイルの作成はこれでOK。

それでは最後にwebブラウザでURLを入力してきちんと表示されるか確認!

http://192.168.56.2/input.html

 

f:id:beginnergirl:20170912131413p:plain

表示されました!htmlはできてるみたいです!

それではcgiはどうか。空欄箇所に適当に入れてPUTボタンを押すと…

f:id:beginnergirl:20170912131529p:plain

な、なんだ?????どういうこと?内部エラー、つまりVirtualboxでたてたサーバーに問題があるということ。そりゃそうだけど、だからなんだw原因がわからない。考えることまた約半日。…そういえば一番最初にperlインストール無視してたよね。もともと入ってると思ってたし。一応確認してみようかな。

whereis perl

perl:

なんてこった (笑)「perl:」の後に何も表示されない。つまりperlはどこにもないということ。もとから入ってなかったんだ…。そりゃ表示されないよね。

ということで秒でインストール。

 #yum install perl

一応サーバーを再起動させてと…再度webでURLを検索してPUTボタンを押すと…

f:id:beginnergirl:20170912132028p:plain

なんとかいけたみたい。ふー、疲れた。笑

案外、初期設定は調べないと怖い。何が入ってて入ってないのかきちんと確認しないとダメなのね。勉強になりました。

自分用勉強記録⑤初めてのWebページ表示~virtualbox編~

***自分の確認用に残しているため、文は支離滅裂です。ご了承ください。

 今日は珍しく集中力が続くのでもう一つお勉強。

前々回にApacheをインストールしたまま放置していたので、せっかくなのでvitualbox内に適当にhtmlファイル作ってそれをwebで表示させてみようかな!

そのためには設定することが2つ!

①htmlファイルを作る

httpd用のポート80番を開ける(**HPファイル管理者のWebサーバーさんの家に出向き、欲しいファイルを受け取るために玄関を開けてもらう…感じ)

 

まずは①

最初にhttpdを起動

/etc/init.d/httpd start

下のディレクトリに移動

cd /var/www/html

HTMLファイルを作成(中身は適当…笑)

#vi index.html

<!DOCTYPE html>

<html lang=“ja”>
<head>
<meta charset=“UTF-8”>
<title>beginnergirl</title>
</head>
<body>
beginnergirl
</body>
</html>
次は②
ポートのことが書いてる?ファイルを開く
#vi  /etc/sysconfig/iptables

色々出てくるが、その中に下のやつを追加

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

編集できたら再起動。これを忘れると全部パーになるので必ず再起動する。

/etc/init.d/iptables restart

これでhttpd用のポートを開くことができました!やった!

(参考サイト:CentOS6でポート開放をする - 見果てぬ夢

 

さて、最後の仕上げ、webからvirtualbox内に作ったindex.htmlが表示されるか確認。ブラウザにhttp://192.168.56.101(ゲストOSのIPaddress)/index.html(作成したファイル名)と入れる。

f:id:beginnergirl:20170909235834p:plain

完成!

成功です!今日はこれで終わり!いい夢が見れそう。。。

自分用勉強記録④初めてのゲストOSへssh接続~virtualbox編~

***自分の確認用に残しているため、文は支離滅裂です。ご了承ください。

前回に引き続きVirtualboxのお勉強。

今回はホストOSからゲストOSへssh接続できる様にするというもの。

右手にお菓子を握りながら、いざ。

まずはsshするためには3つ方法があることを知る。

(参照サイト:ローカルPCとVirtual Boxの仮想マシンとのネットワーク接続)

1.NAT + ポートフォワーディング設定

2.ホストオンリーアダプター

3.ブリッジアダプター

この中で一番おすすめなのは2番らしい。ということで2番を実行。

まず下図が2番の方法を読んで私が想像したもの…。

(参考サイト:仮想化ソフトウェア VirtualBox の使い方

 

f:id:beginnergirl:20170909190808p:plain

想像図

**訂正(ホストOS側の赤丸部はeth1ではなくvboxnet0、ゲストOSの赤丸部はそのままeth1)

 

ざっと図の説明をすると、NATだとゲストOSはNATルータを通過して外部ネットワークまで行ける。でも外部からゲストOSへは入れない。その対策として、ホストOSとゲストOS間のみの通信を許可するホストオンリーアダプターを採用することにより、外部・内部で行き来できる様になりました〜!ということなのかな。グミうまうま。

 

悩んでても仕方ないのでとりあえずコマンドを叩くことに。virtualboxを開き、仮想マシンを起動。前回でeth0の設定は終わっているので無視。ホストOSとゲストOSのeth1の設定をすればssh接続できるはず。

 

[ホストOSのeth1設定]

Virtualbox>環境設定>ネットワーク>ホストオンリーネットワーク>vboxnet0>アダプター(IPv4アドレス:192.168.56.100 IPv4ネットマスク:255.255.255.0)>DHCPサーバー(サーバーを有効化のチェックを外す) 

[ゲストOSのeth1の設定を確認]

vi /etc/sysconfig/network-scripts/ifcfg-eth1

[ゲストOSのeth1変更]

#ONBOOT=no

ONBOOT=yes

IPADDR=192.168.56.101

NETMAST=255.255.255.0

これでホスト・ゲストOSのeth1の設定は完了です。ここで注意するのはホストOS側のeth1も忘れてはならないということ。私は余裕で忘れていました☆始め、ホストOSと同じアドレスをゲストOSにつけていたため、ネットワークをrestartした時に

#/etc/init.d/network restart

~

Bringing up interface eth1:Determining if ip address 192.168.56.100 is already in use for device eth1...

Error,some other hosthost (~) already uses address 192.168.56.100 [FAILED]

となりました。な、なんでだろうとがっくししてていましたが、ホームパイ食べてたらふっと浮かんで、あれ?ホストとゲストの両方にアドレスつけないといけないんじゃないの?だとしたら両方とも同じアドレスはまずいよね。じゃあホストにつけたアドレスの一個次の192.168.56.101をゲストにつけてみよう!…ということで[変更]の様になりました。笑

再度restartかけると[FAILED]のところが無事に[OK]に!さっそくsshできるか確認! 

 

[ホストOS上コマンド]

ssh (ログインするユーザ名)@192.168.56.101

Last login:Sat Sep 9 15:00 2017

できました!ミッションクリアです☆

自分用勉強記録③初めてのvitrualbox

***自分の確認用に残しているため、文は支離滅裂です。ご了承ください。 

 

大学の夏休みが終わる前にいろんなことに手をだしてみようということで今度はvirtualboxをいじってみる。

 

ということで早速virtualboxをインストール、からのcentOS6.9をインストール。

ふむ、ここまでは問題なし。途中でミラーサイトとか出てきたけど笑顔でスルー。

これが後からとてつもなく私を苦しめる。

 

さてさて、環境は整ったことだし、早速vitualboxを起動してこの中にさっきインストールしたcentos6.9を入れて…。完璧じゃん!!わたし天才wwww

よし!ホストOSとゲストOSと接続も設定できてる!じゃあwebページでも表示させてみたいしApacheでも試しに入れてみるかな!!!!!

#yum install httpd

Loaded plugins:fastestmirror
Setting up Update Process
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=6&arch=i386&repo=os&infra=stockerror was
14:PYCURL ERROR 6 - “Couldn’t resolve host ‘mirrorlist.centos.org’ “
Error:Cannot retrieve repository metadata (repomd.xml) for repository:base.Please verify its path and try again
お、おう。とりあえずエラーだということは理解。
色々調べること約半日。数々のサイトを参考にするものの該当するものがない!なんで!泣きそう!しかしここで神様降臨。下のサイト様のおかげで解決しました。

 

見つけた瞬間ほんとに、ほんとに、土下座しました。感謝しかありません。

結局どこが違っていたのかというと 、CentOS-Base.repoのある部分を変更する必要がありました。私は上記サイト様と同様(CentOSのversionによって変更部分が異なる?私はver6.9)に、変更。

 

CentOS-Base.repo開く

#cat /etc/yum.repos.d/CentOS-Base.repo

 

変更(付け足し部:

[base]

mirrorlist=https://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra

#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/

#baseurl=http://ftp.riken.jp/Linux/centos/$releasever/os/$basearch/

同じ様に[update][extras][centosplus][contrib]も同じ箇所を変更。

なんかmirror.centos.orgがもう機能しない様になったとかなんかで繋がらない様になってるから、代わりにftp.riken.jpに変更しましょかという話らしい。詳しくは知らない。笑

なんとか変更完了、再度アップデートしてみる。

Complete!

いけた!

あと、もう一つ別にOS立てて同じことしてみたら今度また繋がらない事態が起きたけど、これは一番最初に設定すべき/etc/sysconfig/network-scripts/ifcfg-eth0の"NOBOOT"をnoからyesに変更してなかったせいでネットワークの自動起動がされていなかったことが原因。

あー、疲れた。

 

自分用勉強記録②レンタルサーバーへ初めてのsshログイン

**自分の確認用に残しているため、文は支離滅裂です。ご了承ください。 

さてさて本日はさくらレンタルサーバをお借りしてサーバのお勉強をサクッとしちゃいますかな…といっても怖いところはできるだけいじらず確実なところだけ。

ssh接続してみたいなーと思ったので、挑戦。

 

まず、さくらレンタルサーバに契約すると下の様なメールが送られてくる。これは後から必要になってくるのでメモメモ…。

FTPサーバ名 :beginnergirl.sakura.ne.jp
FTPアカウント : beginnergirl
FTP初期フォルダ : www
パスワード : password

 

次にterminalを開き、入力。

 ssh beginnergirl@beginnergirl.sakura.ne.jp

beginnergirl@beginnergirl.sakura.ne.jp 's password:

 

上記の様にパスワードを聞かれるので、メールに書いていたサーバパスワードを入力。

 

Welcome to FreeBSD!

と表示された!できた!

 

何度か試してやっとは入れたんだけど、なんでだろう。最初は同じ様にしても全く入れなくてパスワードを入力すると

Permission denied,please try again

の連続。発狂。時間が経って入力するとssh接続できる様になってた。なんで?笑

 

次回はこれに公開鍵だの秘密鍵だのなんとかして遊びたいな〜。(詳しくは知らない、というかなにそれ状態。笑)

 

 

自分用勉強記録①初めてのroot権限

**自分の確認用に残しているため、文は支離滅裂です。ご了承ください。

 今日はroot権限のお勉強。

早速root権限に入ろうとキーを連打。

 

$su

password:

su:Sorry

 

はい、いきなりパニック。

というかできたんじゃね?(できてない)

調べると、そもそも初期設定してないんだからそりゃ入れないよという(殴)

それじゃ初期設定いたしますね、へへへすんません

 

$ sudo passwd root
Changing password for root.
New password:
Retype new password:

 

これで無事に入ることができました。めでたし。

念のため・・・

 

$su

password:

sh-3.2#

 

入れたー。入るだけでこんな魂すり減るとか…なにこれ辞めたい(笑)