반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 컴퓨터 강좌
- Windows via c/c++
- kernel
- getopts
- UNIX
- UNIX Internals
- OS 커널
- Symbol
- FreeBSD
- newSQL
- TiKV
- 함수포인터
- 약어
- 전처리기
- go
- 한빛미디어
- Golang
- Preprocessor
- Pointer
- SQLite
- 포인터변수
- 긴옵션
- 구조와 원리
- DBMS
- TiDB
- 커널
- 포인터
- Programming
- bash
- DBMS 개발
Archives
- Today
- Total
sonumb
Go - php와 같은 동적 스크립트를 실행하는 간단 웹서버 본문
개요
테스트 목적으로 심플한 php 스크립트를 구동하고 결과를 알고 싶은데, WAS나 웹서버를 설치하고 설정하는 것은 번거롭다.
go에서 "net/http"를 이용해 간단한 http 서버를 작성/구동할 수 있다.
https://jeonghwan-kim.github.io/dev/2019/02/07/go-net-http.html
그렇다면, php와 같은 스크립트 파일의 실행하며, 그 결과를 출력하는 httpd도 만들 수 있을까? 답은 그렇다이다.
정말정말 간단한 소스코드는 아래와 같다.
소스코드
아래 소스는 "주소:8080"의 경로는 "/"이며, 클라이언트가 해당 주소에 접속하면, 경로 "/" 에 대해 연결된 스크립트 파일을 실행하여 그 결과를 출력을 수행한다.
package main
import (
"log"
"net/http"
"net/http/cgi"
)
func main() {
http.Handle("/", &cgi.Handler{
Path: "/usr/bin/php-cgi",
Dir: "./",
Env: []string{
"SCRIPT_FILENAME=F2_TBDEV3054.php5",
"REDIRECT_STATUS=trash",
},
})
// Assumes ../app/app is running in ../app directory
//http.Handle("/go-fcgi", &fcgi.Handler{
// Dialer: &fcgi.NetDialer{
// Network: "unix",
// Address: "../app.socket",
// },
//})
//http.Handle("/go-cgi", &cgi.Handler{
// Path: "../app/app",
// Dir: "../app/",
// Args: []string{"cgi"},
//})
//
//// Assumes ../app/index.py is running in ../app directory
//http.Handle("/py-fcgi", &fcgi.Handler{
// Dialer: &fcgi.NetDialer{
// Network: "unix",
// Address: "../app-py.socket",
// },
//})
//http.Handle("/py-cgi", &cgi.Handler{
// Path: "../app/index.py",
// Dir: "../app/",
// Args: []string{"cgi"},
//})
log.Println("port:8080")
err := http.ListenAndServe(":8080", nil)
if err != nil {
log.Fatal(err.Error())
}
}
실행 및 결과
$ go run report_httpd.go
2021/11/25 15:19:31 port:8080
PHP Warning: getdate(): It is not safe to rely on the system's timezone settings.
You are *required* to use the date.timezone setting or the date_default_timezone_set()
function. In case you used any of those methods and you are still getting this warning,
you most likely misspelled the timezone identifier.
We selected the timezone 'UTC' for now, but please set date.timezone to select
your timezone. in /home/sonumb/testdir/public_html/F4_1.php5 on line 3
크롬으로 주소:8080으로 접속한 뒤 결과물은 아래와 같다.
반응형