HTML/CSS/JavaScriptの練習 local Webサーバ

https://seesaawiki.jp/lifewithslackzaurus/d/HTML/CSS/JavaScript%a4%ce%ce%fd%bd%ac%20%bc%c2%c1%a9%20%bb%a8%c2%bf%a4%ca%b5%ad%cf%bf のpractice100.html~practice199.html:
JavaScriptの練習(ライブラリ使わない編)。
JavaScriptハンドブック 1998.10
フォームとフレーム
https://developer.mozilla.org/en-US/docs/Web/API/Document/forms
formはこのWikiページの検索ボタンでも使っている。ただしmethod=”GET”。
<form method=”POST”、でググった。
https://developer.mozilla.org/ja/docs/Learn/Forms/Sending_and_retrieving_form_data
サーバー側: データの取得

ZaurusにApacheをinstallして、localhost接続することを考える。

httpd-2.2.4:
(/mnt/card/slackware-12.0/source/n/httpd/httpd.SlackBuild を参考に、)
$ tar xjf /mnt/card/slackware-12.0/source/n/httpd/httpd-2.2.4.tar.bz2
$ cd httpd-2.2.4
$ zcat /mnt/card/slackware-12.0/source/n/httpd/config.layout.diff.gz | patch -p1
$ CFLAGS=”-O2 -march=armv5te” CXXFLAGS=”-O2 -march=armv5te” ./configure \
\ –enable-layout=Slackware-FHS –with-mpm=prefork
\ –with-apr=/usr –with-apr-util=/usr (utilを外すとconfigエラーになる。system領域
\ もうとっくに残量100Mを切っているので、ここで800MB->1GBへ入れ替えた) \
\ –enable-mods-shared=all –enable-so –enable-pie –enable-cgi –with-pcre \
\ –enable-ssl –enable-rewrite –enable-vhost-alias \
\(–enable-proxy –enable-proxy-http –enable-proxy-ftp –enable-proxy-balancer 使わない)\
\(–enable-cache –enable-mem-cache –enable-file-cache –enable-disk-cache 使わない) \
\ –disable-speling (–enable-dav –enable-ldap –enable-authnz-ldap 使わない)\
\ –enable-authn-anon –enable-authn-alias \
\ –build=arm-linux-gnueabi
(ここでaprが無いときたので、そっちを先にinstallした)
$ make
(ここで_STACKエラー修正した。https://qiita.com/TetsujiOkuno/items/33062404da8a88be18f3
\今回の他にもOpenSSL依存の古いアプリmakeしたら同じようになるか。バイナリでinstall
\したらSegFoltエラーか。API変えんな)
$ mkdir ~/package-httpd
$ make install DESTDIR=~/package-httpd (エラーがなければ以降sudoで実行)
$ rm -rf ~/package-httpd
$ sudo mkdir ~/package-httpd
$ sudo chown -R root:root ../httpd-2.2.4
$ sudo make install DESTDIR=~/package-httpd
$ cd ~/package-httpd
$ sudo rmdir usr/bin
$ zcat /mnt/card/slackware-12.0/source/n/httpd/httpd.nossldefault.diff.gz | sudo patch -p1
(rejectしたのでマニュアルであてた)
$ zcat /mnt/card/slackware-12.0/source/n/httpd/httpd.runasapache.diff.gz | sudo patch -p1
$ sudo rm -f etc/httpd/httpd.conf~ etc/httpd/httpd.conf.rej
$ cd etc/httpd
$ sudo mv -i httpd.conf httpd.conf.new
$ sudo sh -c ‘for file in extra/*; do mv -i $file “${file}.new”; done’
$ sudo sh -c ‘cat << EOF >> httpd.conf.new
\
\# Uncomment the following line to enable PHP:
\#Include /etc/httpd/mod_php.conf
\
\# Uncomment the following lines to enable svn support:
\#LoadModule dav_svn_module lib/httpd/modules/mod_dav_svn.so
\#LoadModule authz_svn_module lib/httpd/modules/mod_authz_svn.so
\
\’
(一字一句入力するのがメンドクサイので実際はelvisでeditした)
$ cd ../..
$ sudo rmdir var/log/httpd
$ sudo mkdir -p etc/rc.d
$ sudo cp -a /mnt/card/slackware-12.0/source/n/httpd/rc.httpd etc/rc.d/rc.httpd.new
$ sudo mkdir -p etc/logrotate.d
$ sudo cp -a /mnt/card/slackware-12.0/source/n/httpd/logrotate.httpd etc/logrotate.d/httpd.new
$ sudo mkdir -p install
$ sudo sh -c ‘zcat /mnt/card/slackware-12.0/source/n/httpd/doinst.sh.gz > install/doinst.sh’
$ cd srv/httpd/htdocs/manual
$ sudo sh -c ‘for file in $(find . -type f -name “*.html”) ; do if [ -f ${file}.ja.euc-jp ]; then
\ cp ${file}.ja.euc-jp ${file}; rm -f ${file}.*; fi done ‘
$ sudo mv -i srv/httpd var/www
$ cd ~/package-httpd/srv
$ sudo ln -sf /var/www .
$ sudo ln -sf /var/www httpd
$ cd ..
$ sudo gzip -9 usr/man/man?/*
$ sudo strip –strip-unneeded usr/sbin/* usr/lib/httpd/modules/*
$ sudo makepkg ../httpd-2.2.4-arm-1.tgz
$ sudo installpkg ../httpd-2.2.4-arm-1.tgz

apr-1.2.8:
(/mnt/card/slackware-12.0/source/l/apr/apr.SlackBuild を参考に、)
$ tar xjf /mnt/card/slackware-12.0/source/l/apr/apr-1.2.8.tar.bz2
$ cd apr-1.2.8
$ CFLAGS=”-O2 -march=armv5te” ./configure \
\ –prefix=/usr –with-installbuilddir=/usr/lib/apr-1.2.8/build-1 \
\ –disable-static –with-devrandom=/dev/urandom \
\ arm-linux-gnueabi
$ make
$ mkdir ~/package-apr
$ make install DESTDIR=~/package-apr (エラーがなければ以降sudoで実行)
$ rm -rf ~/package-apr
$ sudo mkdir ~/package-apr
$ sudo chown -R root:root ../apr-1.2.8
$ sudo make install DESTDIR=~/package-apr
$ cd ~/package-apr
$ sudo strip –strip-unneeded usr/lib/*
$ sudo makepkg ../apr-1.2.8-arm-1.tgz
$ sudo installpkg ../apr-1.2.8-arm-1.tgz

apr-util-1.2.8:
(/mnt/card/slackware-12.0/source/l/apr-util/apr-util.SlackBuild を参考に、)
$ tar xjf /mnt/card/slackware-12.0/source/l/apr-util/apr-util-1.2.8.tar.bz2
$ cd apr-util-1.2.8
$ CFLAGS=”-O2 -march=armv5te” ./configure \
\ –prefix=/usr –with-apr=/usr –with-dbm=db44 –with-berkeley-db \
\ –without-gdbm (–with-ldap 使わない) –disable-static –without-sqlite2 \
\(–with-mysql=/usr 今回は使わない。berkeley-dbを使う) \
\ arm-linux-gnueabi
(ここでdb44が無いとくるはずなので、そっちを先にinstallした)
$ make
$ mkdir ~/package-apr-util
$ make install DESTDIR=~/package-apr-util (エラーがなければ以降sudoで実行)
$ rm -rf ~/package-apr-util
$ sudo mkdir ~/package-apr-util
$ sudo chown -R root:root ../apr-util-1.2.8
$ sudo make install DESTDIR=~/package-apr-util
$ cd ~/package-apr-util
$ sudo strip –strip-unneeded usr/lib/*
$ sudo makepkg ../apr-util-1.2.8-arm-1.tgz
$ sudo installpkg ../apr-util-1.2.8-arm-1.tgz

db-4.4.20:
(/mnt/card/slackware-12.0/source/l/db44/db44.SlackBuild を参考に、)
$ tar xjf /mnt/card/slackware-12.0/source/l/db44/db-4.4.20.tar.bz2
$ cd db-4.4.20
$ zcat /mnt/card/slackware-12.0/source/l/db44/patch.4.4.20.1.gz | patch -p0
$ zcat /mnt/card/slackware-12.0/source/l/db44/patch.4.4.20.2.gz | patch -p0
$ mkdir build-dir; cd build-dir
$ CFLAGS=”-O2 -march=armv5te” CXXFLAGS=”-O2 -march=armv5te” \
\ ../dist/configure –prefix=/usr –enable-shared –enable-rpc \
\ –enable-cxx –enable-compat185 \
\ arm-linux-gnueabi
$ make
$ mkdir ~/package-db44
$ make install DESTDIR=~/package-db44 (エラーがなければ以降sudoで実行)
$ rm -rf ~/package-db44
$ sudo mkdir ~/package-db44
$ sudo chown -R root:root ../db-4.4.20
$ sudo make install DESTDIR=~/package-db44
$ cd ~/package-db44
$ sudo rm -rf usr/docs
$ cd usr/include
$ sudo mkdir db44; sudo mv *.h db44; sudo ln -s db44/* .
$ sudo ln -s db44 db4
$ cd ../..
$ sudo mkdir lib; sudo mv usr/lib/libdb-4.4.so lib/
$ cd usr/lib
$ sudo ln -sf /lib/libdb-4.4.so .
$ sudo ln -sf libdb-4.4.a libdb-4.a
$ sudo ln -sf libdb-4.4.a libdb4.a
$ sudo ln -sf libdb-4.4.a libdb.a
$ sudo ln -sf libdb_cxx-4.4.a libdb_cxx-4.a
$ sudo ln -sf libdb_cxx-4.4.a libdb_cxx.a
$ sudo ln -sf libdb-4.4.so libdb4.so
$ sudo ln -sf libdb-4.4.so libdb.so
$ cd ../..
$ sudo strip –strip-unneeded lib/* usr/{bin,lib}/*
$ sudo makepkg ../db-4.4.20-arm-1.tgz
$ sudo installpkg ../db-4.4.20-arm-1.tgz

httpd(Apache)起動:
$ sudo busybox vi /etc/httpd/httpd.conf (Deny -> Allow 一時的に変更)
$ sudo sh /etc/rc.d/rc.httpd start
httpd: Could not reliably determine the server’s fully qualified domain name.
\ using 127.0.0.1 for ServerName
$ ps ax | grep http
23695 ? Ss 0:00 /usr/sbin/httpd -k start
23696 ? S 0:00 /usr/sbin/httpd -k start
23697 ? S 0:00 /usr/sbin/httpd -k start
23698 ? S 0:00 /usr/sbin/httpd -k start
23699 ? S 0:00 /usr/sbin/httpd -k start
23700 ? S 0:00 /usr/sbin/httpd -k start
curlどころかpingも通らない。
https://teratail.com/questions/78257
loにIPアドレスが無かったら自分で付ければいいだけだった。ムダにジタバタした
件(https://seesaawiki.jp/lifewithslackzaurus/d/%a5%c0%a5%df%a1%bc%a5%a4%a5%f3%a5%bf%a1%bc%a5%d5%a5%a7%a1%bc%a5%b9%a4%f2%ba%ee%a4%c3%a4%c6%a4%df%a4%eb )
$ sudo busybox ifconfig lo 127.0.0.1 netmask 255.0.0.0
http://localhost/にFirefoxからアクセス、It works! を確認した。
FC2と同じような設定にする、Upしたファイルを持ってくる、と思ったがここでC3x00
にftpを入れてなかったことに気付いた。installする。busyboxのftpget/putもいいけど、
他にも操作したいことがあるし。https://seesaawiki.jp/lifewithslackzaurus/d/ftp

FC2の設定を予想してマネる:
FTP – oldcygwin.web.fc2.comへftp接続してidとpasswdでlogin。HP用に作ったファイルを転送する。
WEB – oldcygwin.web.fc2.comへhttp接続、HPが表示。web.fc2.comがfc2.comのwebサーバと思われる。
\ 他に、blog.fc2.comはfc2.comのblog用のwebサーバと思われる。というか他もほとんどwebサーバ
\ で、HTML/CSS/JavaScriptとCGI/SSIを駆使してるんだろう。
参考書籍や参考URLの説明で使っている例示を、fc2.comに置き換えて記してみる。
FTPアーカイブの基本設定
NameServerの設定
FTPアーカイブ専用のサーバを持ち、これにftpというホスト名を与えているサイトは少なく、たいていはWebサーバと兼用させたりしています。このようなアクセスを可能にするには、namedの別名機能を利用します。/etc/namedb/named.hosts
ftp IN CNAME web.fc2.com.
(oldcygwin.web.fc2.com. IN CNAME web.fc2.com. を追加?)
名前アドレスベースのバーチャルホストでは 1 つの IP アドレスで複数の Web サーバを公開することができます。
\NameVirtualHost 192.168.10.104:80
\<VirtualHost 192.168.10.104:80>
\ ServerName oldcygwin.web.fc2.com
\ ServerAdmin oldcygwin@web.fc2.com
\ DocumentRoot d:/pg/Apache/Apache24/htdocs_oldcygwin
\</VirtualHost>
\<VirtualHost 192.168.10.104:80>
\ ServerName newcygwin.web.fc2.com
\ ServerAdmin newcygwin@web.fc2.com
\ DocumentRoot d:/pg/Apache/Apache24/htdocs_newcygwin
\</VirtualHost>

(namedやftpdまでC3x00にinstallする気はないので、Apacheとhostsだけでlocalhostでこんな
\感じの設定にしてみよう。ApacheてWinでも使えるのかVScompileして。しないけど)
$ sudo busybox vi /etc/httpd/httpd.conf
\Include /etc/httpd/extra/httpd-vhost.conf
$ sudo busybox vi /etc/httpd/extra/httpd-vhost.conf
\NameVirtualHost localhost:80
\<VirtualHost localhost:80>
\ ServerAdmin oldcygwin@web.fc2.com
\ DocumentRoot /home/oldcygwin
\ ServerName oldcygwin.web.fc2.com
\ ServerAlias www.oldcygwin.web.fc2.com
\ ErrorLog /var/log/httpd/oldcygwin.web.fc2.com-error_log
\</VirtualHost>
\<VirtualHost localhost:80>
\ ServerAdmin newcygwin@web.fc2.com
\ DocumentRoot /home/newcygwin
\ ServerName newcygwin.web.fc2.com
\ ServerAlias www.newcygwin.web.fc2.com
\ ErrorLog /var/log/httpd/newcygwin.web.fc2.com-error_log
\</VirtualHost>
$ tail -n 5 /etc/hosts
\127.0.0.1 darkstar.example.net darkstar
\127.0.0.1 oldcygwin.web.fc2.com oldcygwin
\127.0.0.1 newcygwin.web.fc2.com newcygwin
$ curl http://oldcygwin.web.fc2.com/
\TEST
$ curl http://newcygwin.web.fc2.com/
\TEST2
(localhostでApache起動してる時はネットの方のFC2には接続できないのと、loはhttpsできない
\のに気をつけないといけない。hosts優先だろうから大丈夫か、FC2には行かないか。httpsでき
\ないのはssl設定してないせいだったが、ローカルだしいいかそのうちで。htmlファイルをUp
\しても大抵のサイトはhttpsに変換してるようだし)

参考書籍:
Software Design 2016年10月号 Webサーバはなぜ動くのか? HTTP,CGI,サーブレット,Node.js,Railsを一挙解説
https://gihyo.jp/magazine/SD/archive/2016/201610
通常では、毎回リクエストが発生するたびにプロセスを起動していたのではプロセスが起動するまでのコストがかかります。基本は事前に接続可能な分だけをforkしておいて、リクエストが来るたびにfork済みのプロセスに割り当てるpreforkという方法が使われています。
(ローカルで一人で使う分にはprefork要らんかった)

Linux徹底構築ガイド―ネットワークサーバー構築編 1999.5

ドメインとDNS(DomainNameSystem)
DNSは、ネットワークを論理的な階層構造とみなし、各階層にNameServerと呼ばれる特別なホストを起きます。それぞれのNameServerは置かれた階層に応じたホスト名とIPアドレスの対応表を持ち、、(NameServerも1つのホスト)
ドメイン名は、”組織名.組織の種別.国の略称”の書式(米国のみ”国の略称”はなし)で表記します。
NameServerには自身が権限を持つドメインについての情報が置かれ、そのドメインに関する問い合わせに応答します。しかし、他のドメインや、ドメインの下にあるサブドメインがある構成では、、
ドメイン/サブドメインとインターネットDNS
またこのマシン(ローカルネットとインターネットを中継するNameServer)は、プライベートIPアドレスを使うローカルネットと、公式のIPアドレスを必要とするインターネットの間に立ち、IPアドレスの変換も行います。

SlackwareでわかるLinuxネットワーク構築術 1999.3
https://www.kinokuniya.co.jp/f/dsg-01-9784810190014
◆DocumentRoot — Apacheが配布する…
◆UserDir — 各ユーザーが自分のWebサイトとして使用できるディ…
order命令は、allow命令およびdeny命令が実行される順番を指定する。最初に実行さ
れる命令は、基本の許可属性に設定され、他の命令は除外される。
(設定ファイルについては基本的な内容は上の本と似たようなもの(少し詳しい)で、最初はhostsしかなかったとかいろいろ面白い話が…。が、TCP/IPのヘッダー等部分的に原理的な説明だったりで題名と内容が一致しにくいというか濃淡がある、上の本の方はネットを使うのに適量適所の説明(むしろ分かりやすいか)。どっちも古すぎて?仮想ホストが書いてない)

参考URL:
https://ja.wikipedia.org/wiki/.com
世界中のどこの会社でも.comドメインを登録できるが、一部の国では国別コードトップレベルドメイン(ccTLD)の下に同様の目的のセカンドレベルドメインを設定している。オーストラリアのcom.au、中国のcom.cn、ギリシャのcom.gr、インドのco.in、インドネシアのco.id、日本のco.jp、メキシコのcom.mx、ネパールのcom.np、パキスタンのcom.pk 、韓国のco.kr、スリランカのcom.lk、台湾のcom.tw、イギリスのco.uk、ベトナムのcom.vnなどである。
https://www.websuccess.jp/saorin/post-5618/
co.jpとcomの違いは何ですか
https://www.javadrive.jp/apache/virtual/index2.html
Apacheで名前ベースのバーチャルホストを利用する
https://qiita.com/jinnai73/items/638dcc1434d47b12e6ba
Apache httpdで作るHTTPSサーバ

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です