モジュールについて学習している中、ここに来てプログラミング入門者である私に初めての課題が課せられました。自分のパソコンを使いWEBサーバーを立ててみて下さいというものでした。今まで動画や参考書に頼りっぱなしで、自分の力でなんとかするとなると、まず何からしていいのかさっぱりでした。まず、自分のパソコンをサーバーにするで検索をかけましたが知見が足りなすぎて、いろんなところを行ったり来たり。ヒントを頂き、Qiitaでなんとかそれらしき記事を発見! 早速作業にとりかかりました。GOには標準でHTTPパッケージが用意されているようで、自分のIPアドレスを使用し、ローカル環境で静的コンテンツを作ることができます。
mkdir HELLO
cd HELLO
では、ディレクトリ(コンピュータのファイルシステムにおいて、ファイルをグループ化するための特殊なファイルで、整理・管理する場所)をターミナル画面で作成していきます。
touch main.go
mkdir -p start/stylesheets
touch start/index.html start/stylesheets/style.css
エクスプローラー(ホームディレクトリ)に「HELLO」ディレクトリ(フォルダ)を作成し、その中にメインコードになる「main.go」とコンテンツ(結びつく内容)に当たる「start」ディレクトリ、その中には基本レイアウトであるHTML
「index.html」と装飾であるCSS
「stylesheets」ディレクトリ内の「style.css」をそれぞれ作成します。
###では、main.goから順にコーディングして行きましょう
package main
import (
"log"
"net/http"
)
func main() {
fs := http.FileServer(http.Dir("start"))
http.Handle("/", fs)
log.Println("Listening...")
http.ListenAndServe(":3030", nil)
}
変数fsにディレクトリを指定し、IPアドレスを利用するルーティング設定をする("/"というアクセスがきたら「start」ディレクトリのコンテンツを表示)http.Handle は表示する「URL」と「URL」に対応する http.Handler を DefaultServeMux に登録する関数になります。Liten関数を使い3030通信用ポートを確保し、サーバーを立ち上げさせます。「start」ディレクトリは以下内容です。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="/stylesheets/style.css">
</head>
<body>
<h1>はじめまして!!!!!!</h1>
</body>
</html>
外部リソースを指定する際に使用する「link」でモジュール(ここで言うと、main.go,index.html,style.css)の結びつけます。
body {color: #5f2bc0}
#main.goを動かしてサーバーを立ち上げてみましょう!
go run main.go
ターミナルでrunコマンドを叩き、enterキーで実行してみると。ブラウザ上でhttp://192.xxx.xxx.xx(IPアドレスなど、ローカルホスト):3030/
にアクセスすると↓
「はじめまして!!!!!!」と表示されました。サーバー上では常に動き続けているので、消したい場合はターミナル上でgo run
のコマンドをCtrl(コントロール)+Cでinterrupt(中断)すれば、止まります。