LoginSignup
0
0

More than 3 years have passed since last update.

GO言語を使って自分のPCでWEBサーバー構築

Posted at

モジュールについて学習している中、ここに来てプログラミング入門者である私に初めての課題が課せられました。自分のパソコンを使い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から順にコーディングして行きましょう

hellom.png

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」ディレクトリは以下内容です。
helloi.png

index.html
<!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)の結びつけます。
hellos.png

style.css
body {color: #5f2bc0}

main.goを動かしてサーバーを立ち上げてみましょう!

go run main.go

ターミナルでrunコマンドを叩き、enterキーで実行してみると。ブラウザ上でhttp://192.xxx.xxx.xx(IPアドレスなど、ローカルホスト):3030/にアクセスすると↓
はじめまして.png
「はじめまして!!!!!!」と表示されました。サーバー上では常に動き続けているので、消したい場合はターミナル上でgo runのコマンドをCtrl(コントロール)+Cでinterrupt(中断)すれば、止まります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0