LAMP 스택에 대해서

LAMP 스택은 웹사이트를 운영하기 위한 소프트웨어 번들들을 이야기한다. Linux, Apache, MySQL or MariaDB, PHP 들을 묶어서 이야기한다. Linux는 운영체제, Apache는 웹서버, MySQL or MariaDB 는 데이터베이스, PHP는 동적웹 등을 위한 프로그래밍 언어이다. LAMP 스택을 주로 사용하는 곳으로는 워드프레스와 그누보드, 제로보드, 페이스북, 기타 중소 사이트들이 있다


Linux

리눅스는 운영체제로 서버 쪽에 주로 쓰인다. 서버 쪽에 주로 리눅스가 쓰이는 이유는 서버 같은 환경에서 사용하기 좋게 설계되었기 때문이다.

가격도 저렴하고(RHEL의 경우는 소프웨어와 서비스 비용을 받는다.), 멀티 유저를 사용하기 편한 환경이며, 상대적으로 리소스나 시스템 효율도 좋은 편이다, 상대적을 리눅스나 맥 OS에 비해 필요한 리소스가 적은 편이다.

윈도우나 맥 OS를 서버로 사용 못하는 것은 아니다, 하지만 윈도우는 윈도우 서버 OS 라이센스 비용도 필요하고, IIS등 기본적인 프로그램들이 지원되지만, 상대적으로 많은 리소스를 필요로 하고 사용하기 불편한 편이다.

맥 OS 역시 사용하지 못하는 것은 아니지만, 애플의 정책상 이런저런 제약들을 받는 편이다.

주로 사용하는 리눅스 OS 계열로는 데비안계열과 RHEL 계열이 있다.

RHEL 계열 같은 경우에는 페도라 – CentOS Stream – RHEL – Oracle Linux, Rocky Linux 순으로 업데이트 된다. 이 업데이트 순서는 뒤로 갈수록 안정적이고, 보수적이게 된다, 원래 CentOS는 RHEL을 포킹해서 만들었으나 CentOS를 단종시키고 Stream이라는 이름으로 변경하여 업데이트 순서가 바뀌었다. RHEL의 경우 RedHat Enterprise Linux로 대규모 서버 등을 사용할 때 주로 쓰게된다. CentOS가 RHEL의 포킹에서 정책이 변경됨에 따라 그에 대한 대안으로 오라클 리눅스와 록키 리눅스가 나오게 되었다

데비안계열 같은 경우에 데비안은 자유소프트웨어를 중요시하고 있어 독점적으로 제공되는 드라이버 같은 것들이 포함이 안 되어 있기도 한다, 데비안 Stable 버전 같은 경우에는 꽤나 안정적이고, 긴 업데이트 주기를 가진다, 데비안의 Unstable 버전을 포크해서 만드는 것이 우분투인데 입문자용 리눅스로 꽤 많이 환영을 받았으나 요새는 많이 복잡해지고, 특히 최근 와이파이 드라이버 관련해서 문제가 많아, 페도라를 추천하는 편이다.

원래 RHEL 계열이 서버에서 주로 쓰였으나 최근 클라우드나 웹서버 계열에서는 우분투도 많이 채택하는 편이다.


Apache

아파치는 웹서버 소프트웨어 중에 하나이다. 웹서버와 웹어플리케이션 서버의 차이점은 웹서버는 클라이언트가 보낸 HTTP를 해석하고 HTML, CSS, JS 등의 파일을 송수신하는 역할을 하고 웹어플리케이션 서버는 요청에 따라 데이터베이스를 조회하거나, 데이터를 가공하거나, 결과값을 계산하는 등의 역할을 한다, 아파치 같은 경우 모듈형식으로 이루어져 있으며, 모듈들을 임포트 하는 형식으로 사용한다 보통은 SSL 사용이나, 포트 지정, 사이트 경로 지정등을 하기 위해 많이 설정들을 만지게 된다.

NGINX, 엔진엑스라는 소프트웨어와 함께 많이 사용하는 중이다.

아파치 같은 경우에는 쓰레드/프로세스 기반으로 새로운 요청이 들어올 때마다 쓰레드/프로세스를 생성한다 그래서 대량 접속시 효율이 급격하게 떨어진다. 다양한 모듈을 사용할 수 있고, 자체적으로 동적 컨텐츠를 어느정도 처리할 수도 있다.

엔진엑스 같은 경우에는 비동기 이벤트 방식을 기반으로 새로운 요청이나 이벤트가 생길 때마다 비동기로 처리하는 방식이다. 모듈이 다양하지 않으며, 경량화에 따른 속도와 보안에 훨씬 중점을 두었다.


MySQL

MySQL은 데이터베이스 소프트웨어 중에 하나이다. MySQL은 가장 대중적이고 간편하게 쓸 수 있는 관계형 데이터베이스 툴이다. 대규모 사이트의 경우 유료인 오라클 DB를 사용하거나 그 대안인 티베로를 사용하지만 일반적인 경우에는 MySQL을 사용한다. MariaDB 같은 경우 MySQL이 오라클에 인수된 뒤로 불분명한 라이센스 문제를 해결하려고 MySQL 5.5 버전에서 포크 되었다 MariaDB의 경우 대부분의 명령어들과 환경들이 MySQL에서 호환된다.

https://db-engines.com/en/ranking/relational+dbms

DB 소프트웨어 점유율을 표시한 사이트인데 22년 5월 29일 기준으로 1위 오라클 DB, 2위 MySQL, 3위 MSSQL(Microsoft SQL server), 4위 PostgreSQL이다, MS SQL 같은 경우 주로 윈도우 서버에서 쓰이고, PostgreSQL 같은 경우 스타트업 같은 곳에서 많이 사용한다, PostgreSQL 를 사용하는 대표적인 플랫폼으로는 마스토돈이 있다.

관계형 데이터베이스는 칼럼과 로우로 이루어진 표에 데이터들을 저장하는 것으로, 게시글 내용이라던지, 유저 ID 정보라던지, 팔로우 팔로잉 관계 이런 것들을 저장하게 된다. 보통 미디어 같은 경우 오브젝트 스토리지나 upload 폴더등에 사진을 다 저장한 뒤 DB에 미디어 경로와 게시글의 관계를 저장하여 불러오는 경우가 흔하게 사용된다.


PHP

PHP는 웹사이트에 특화된 프로그래밍 언어이다. PHP 같은 경우 웹사이트를 만드는데 특화되어 있으며 따로 컴파일이 필요없다는 장점이 있다, LAMP 스택에서는 동적 컨텐츠를 위해 데이터 베이스와의 연동에서도 쓰이고, 그것들을 HTML 문서로 만들어 아파치에 전달한다. phpMyAdmin이라는 툴을 통해 MySQL을 웹에서 수정하고 관리하는 것도 가능하며, PHP 내부에 HTML 문서 양식으로 작성하여 기본 웹사이트 레이아웃을 만드는 것도 가능하다. 하지만 4, 5버전에서는 문법이 일관성이 없고, 자유로워 유지보수 하기 꽤 어렵다는 단점 있다. 7버전에 와서는 많이 개선 되었으나 여전히 이제는 어쩔 수 없이 쓰는 언어가 되어 가고 있다. PHP의 경우 프랑스에서 가장 많이 쓰이고 있으며 한국에서는 레거시 유지보수 및 비 IT 회사 웹사이트 제작에 주로 쓰이고 있다

국내 웹호스팅 같은 경우 PHP는 대부분 지원하는 편인데, 비 IT 회사 중소 웹사이트 등이 주로 고객층인만큼 그누보드나 워드프레스를 개조한 사이트를 FTP를 통해 업로드 하면 바로 웹사이트를 볼 수 있기 때문이다, 따로 Nodejs처럼 명령어로 서버를 실행 시키고 설치하고 이런 작업들을 아예 하지 않아도 된다

신입으로 배우는 것은 많이 비추하는 여론이 강하며, PHP를 사용했던 분들 또한 자바 스프링 등으로 넘어가려고 하고 있는 듯하다, 수요가 아예 없지는 않아서 항상 그렇듯 프리랜서로 일하시는 분들 같은 분들은 제법 번다고도 들었었다.

웹쉘 공격이라고 하는 것도 주의해야한다. 공격자가 게시글 업로드 등을 통해 PHP 파일을 업로드 하여 서버 권한 탈취나 악성 프로그램등을 실행 시킬 수 있으며, 사진 파일 등을 필터링 하고, 업로드 되었더라도 실행하지 못하게 막는 조치 등이 필요하다.


LAMP 스택은 내 사이트 만들기가 유행이었던 2010년쯤까지 많이 쓰이고 있고, 여전히 워드프레스나 그누보드를 이용한 개인 게시판, 블로그, 비 IT 중소 웹사이트등을 만드는데 많이 사용하고 있다, 하지만 시대가 변함에 따라 페이스북 같은 웹앱이 대두되기 시작했고, 점차 프론트와 백엔드의 구분이 생기기 시작하면서 완전한 주류에서는 벗어나고 있다, SI 같은 경우에는 JSP와 스프링의 조합으로 많이 쓰는 편이 되었고, 스타트업에서는 리액트와 스크립트 언어(Nodejs) 등을 주로 쓰고 있으니 말이다.

LAMP 스택 중에 PHP를 제외한다면 여전히 많이 쓰이고 있고, PHP 또한 여전히 많이 쓰이고 있고, 나도 간간히 볼 일이 있어 정리해보고 싶어서 이 글을 썼으며, 나도 아마 메인 스택으로 삼지는 않아도 간단히 할 정도로 알아는 두어야 하지 않나 싶다.

댓글 남기기