웹 사이트를 테스트하기 위해 로컬 Apache/Nginx 서버가 필요하지 않은 이유
Disclaimer: when I say "local webserver" I'm referring to software with advanced features installed globally on your machine. Throughout this article, you'll see that we'll indeed use servers too to fulfill our needs but the requirement is to have almost zero configuration and to run our resources in isolation.
21세기 초에 우리가 웹 사이트를 개발하려고 할 때, 우리는 보통 로컬에 PHP, MySQL, PhpMyAdmin이 있는 아파치를 설치한다.어셈블리에서).이 설정은 아파치의 프로필로 무엇을 실현하느냐에 따라 몇 시간에서 며칠이 걸릴 수 있습니다.
EasyHP나 WAMP를 설치하여 많은 시간을 절약할 수도 있지만, 이 도구들은 항상 상응하는 도구를 첨부합니다. 현재 좋은 응용 프로그램/사이트는 자신의 프로젝트 디렉터리(예를 들어git 저장소)에 포함되어야 합니다.
2020년(어머나, 내가 그렇게 늙었어?!),개발 도구가 크게 개선되었다.복잡한 구성을 가진 로컬 웹 서버를 설치할 필요가 없습니다.그 밖에 크로스 기계의 같은 행위를 극대화하기 위해 프로젝트의 의존항과 자원은 분리 운행해야 하며 시스템에서 누설되지 않아야 한다.
가장 유행하는 언어로 그것을 어떻게 실현하는지 봅시다!
가장 빠르고 더럽지 않은 방식
These different methods will rely on having a static website or internal routing in your application. Any more complex routing/rewriting will, of course, require a real webserver. The same to note if you need to use a database that you cannot mock. These specific needs are handled in the next section.
다음 모든 명령은
http://localhost:8080/
에서 접근할 수 있는 서버를 만들고 있습니다. 이 서버는 현재 디렉터리에 서비스를 제공합니다. 가능한 모든 프레임워크 대체 방안을 열거하지 않았습니다. (어떻게 사용하는지 아시겠죠?)본문의 간략함을 유지하기 위해 사용할 수 있는 모든 소프트웨어 패키지.나는 Makefile (또는 다른 도구, 예를 들어 NPM scripts 을 사용하도록 권장한다. 그러면 너는 더 이상'명령이 무엇입니까?'서로 다른 항목 사이를 전환할 때의 문제.예:
그런 다음 항상 같은 명령을 사용하여 프로젝트에 입력합니다: make serve
어쨌든 우리 시작합시다
정적 웹 사이트
NPM 패키지http-server를 사용할 수 있습니다.Gzip, SSL 또는 전체 패키지 라우팅을 지원하는 매우 강력한 웹 서버입니다.프로젝트의 개발 의존 항목에 설치하고 npx http-server
를 사용하면
기타 몇 개의 웹 서버 라이브러리, 예를 들어 glance 또는 harp
Deno 항목의 경우
표준 file_server
라이브러리를 사용할 수 있습니다:
$ deno install -f -allow-net -allow-read file_server https://deno.land/std/http/file_server.ts
$ ~/.deno/bin/file_server -port 8000
PHP 5.4+ 응용 프로그램의 경우
PHP 바이너리 파일 자체를: php -S localhost:8080
과 함께 사용할 수 있습니다
또한: PHP 7로 마이그레이션하지 않은 경우
루비 프로젝트의 경우
1.9.2부터 사용ruby -run -e httpd . -p 8080
이전 버전의 경우 ruby -rwebrick -e'WEBrick::HTTPServer.new(:Port=>8080,:DocumentRoot=>Dir.pwd).start'
Python 사용
PHP처럼 Python에도 통합된 서버가 있습니다
Python 2 사용: python -m SimpleHTTPServer 8080
Python 3 사용: python3 -m http.server 8080
바둑 언어를 사용하다
spark:
사용 가능
$ go get github.com/rif/spark
$ spark -port 8080
수정에서
우리는 표준 라이브러리를 사용할 수 있다:
crystal eval 'require "http/server"; HTTP::Server.new(8000, HTTP::StaticFileHandler.new(".")).listen'
녹슨 항목에 대해
우리 가족Rustaceans을 잊지 않았어요.😉️
$ cargo install https
$ http
당신도 사용할 수 있습니다miniserve
마지막으로 불로장생약을 쓰다
elixir --no-halt --app inets -e ":inets.start(:httpd,[{:server_name,'s'},{:document_root,'.'},{:server_root,'.'},{:port,8080}])"
가장 길고 믿을 만한 방법
어쩌면 너는 이미 Docker를 알았을지도 몰라?이것은 용기 관리 도구로 현재 응용 프로그램과 그 밑바닥 창고(예를 들어 데이터베이스, 서버, 로그 관리자 등)를 운송하는 데 광범위하게 사용된다
로컬 테스트 사이트에서 생산 서버와 같은 설정으로 Docker 이미지를 만드는 것이 분명히 가장 좋고 간결한 방법이다.자원을 용기화하면 서로 다른 환경이 코드에 미치는 부작용을 최대한 줄이고 팀을 기쁘게 할 수 있습니다
우리의 예시에 대해 저는 이미지를 만드는 모든 세부 사항을 소개하지 않겠지만, Github 저장소를 만들었습니다. 예시 사이트를 포함하여 이미지를 만드는 방법을 보여 줍니다.이 예에서는 Nginx와 PHP7이 있는 docker 이미지를 소개합니다: https://github.com/pyrsmk/docker-nginx-example.단, 같은 원칙은 아파치와 그 어떠한 언어도 맞춤형으로 만들기 쉽다
내가 토론할 내용을 더 잘 이해하기 위해 저장소를 깊이 살펴보십시오
아래 내용에 대해 귀하는 install docker on your system가 필요합니다.완료되면 docker
그룹에 사용자를 추가해야 합니다:
$ sudo usermod -aG docker ${USER}
$ su - ${USER}
현재, DockerHub와 log in에 계정을 생성합니다
완성했어?이제 우리 그림이 어떤지 봅시다
이것은 우리의 것이다Dockerfile
:
이런 평론이 있으면 무슨 일이 일어났는지 이해하기 쉽지만, 여기에는 몇 가지 주의할 점이 있다.
- 우리는 Linux Alpine를 사용하여 우리의 이미지를 구축한다. 왜냐하면 이것은 매우 작기 때문에 구축과 운행 속도가 매우 빠르기 때문이다
- 설치를 위한 빠른 시작 및 우아한 종료S6-Overlay
- 디버깅 목적에만 의존하는 항목으로
bash
추가했습니다 - 우리는 모든 파일을 단독으로 처리하는 것보다 간단하기 때문에 프로필을 직접 덮어씁니다.이러한 구성 파일은 샘플 저장소 의
etc
폴더에 저장됩니다.또 다른 재미있는 파일은 Makefile
입니다. (간단하게 말하자면, 다음 예는 예시 저장소에서 온 두 makefile의 직렬입니다):
build
임무의 코드는 좀 복잡한 것 같지만, 이것은 우리가 모든 다른 임무를 자동화하고 싶기 때문이다. 왜냐하면 가장 좋은 것은 set a version number for each image we're building 때문이다.이것은 정말 필요한 것이 아니다. 이 코드는 간소화할 수 있지만, 왜 좋은 실천부터 시작하지 않는가
이 임무들이 무엇을 하는지 설명해 봅시다:
-
make build
: 현재 Docker image 버전을 표시하고 새 버전을 요청한 다음 구축합니다 . -
make publish
: DockerHub에 게시된 이미지로 팀 작업에서 유용하지만 백업도 가능합니다 -
make bash
: 이미지 (Dockerfile, 프로필 등) 를 처리할 때 디버깅이 필요할 때 유용합니다. 컨테이너에서 bash 를 실행합니다. -
make serve
: 이미지를 실행하고 내부 서버를 노출하는 것이 우리의 관심사입니다localhost:8080
.
메모리 라이브러리에서 명령을 직접 실행하지 않아야 합니다. 내 계정에 의존하기 때문입니다pyrsmk
😉️
오늘의 이벤트는 여기까지
만약 당신에게 문제가 있다면 주저하지 마세요. 왜냐하면 Docker가 끼어들기 쉬운 것이 아니라는 것을 알고 있기 때문입니다
Docker에 대한 더 많은 정보에 관심이 있다면, there are many useful official resources to read
내 것을 구독할 수 있다mailing list
만약 당신이 나의 일에 감사한다면, 당신은 나의 작은 가격의 커피를 지지하고 싶을 것이다☕️ 통과Ko-fi(기본설정) 또는Patreon
Reference
이 문제에 관하여(웹 사이트를 테스트하기 위해 로컬 Apache/Nginx 서버가 필요하지 않은 이유), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/pyrsmk/you-don-t-need-a-local-apache-nginx-server-anymore-to-test-your-website-3nh1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)