How To Install Linux LAMP Stack on Linux

How To Install (LAMP [ Linux, Apache, MySQL, PHP ]) Stack on Rocky Linux 9.x Version

NAME = “Rocky Linux”

VERSION = “9.3 (Blue Onyx)”

Kernel = “5.14.0-362.8.1.el9_3.aarch64”

System : Vmware fusion


LAMP?

LAMP는 LinuxApache, MariadbLPHP의 첫 글자를 따서 만든 약어로, 웹 서비스를 제공하는데 필요한 주요 오픈소스 소프트웨어 스택입니다.

1. Linux : 서버의 하드웨어와 소프트웨어 리소스를 관리하고, 다른 소프트웨어가 시스템 리소스에 안전하게 접근하도록 하는 역할을 합니다. Linux는 그 안정성과 보안성, 그리고 오픈소스라는 점 때문에 널리 사용되는 서버 운영 체제입니다.

2. Apache : 클라이언트의 HTTP 요청을 받아 정적, 동적 웹페이지를 생성하고 응답하는 역할을 합니다. 

3. MariaDB : MariaDB는 MySQL을 기반으로 만들어진 오픈 소스의 관계형 데이터베이스 관리 시스템(RDBMS)입니다. MySQL 개발자 중 일부가 MySQL의 상업화를 우려하여 만든 프로젝트로, MySQL과의 높은 호환성과 개선된 기능을 제공합니다. 데이터를 안전하게 저장, 검색, 수정, 삭제하는 역할을 합니다.

4. PHP : 서버 측 스크립트 언어로, 동적 웹페이지를 생성하는 역할을 합니다. PHP는 웹 개발에 특화되어 있고, HTML과 잘 통합되며, 데이터베이스와의 연동이 쉽다

Step 1 : httpd package install

dnf update를 이용하여 시스템의 모든 패키지를 최신 버전으로 업데이트

dnf update를 이용하여 시스템의 모든 패키지를 최신 버전으로 업데이트

아파치 패키지 설치진행

$ sudo dnf install httpd -y
아파치 패키지 설치진행

아파치 설치 후 httpd 서비스 start + enable

$ sudo systemctl start httpd
 ( start -> enable -> status )
아파치 설치 후 httpd 서비스 start + enable

Step 2 : Firewall 80,443 port open

80포트의 경우 기존에 이미 열어둔 상태로 있어서 Warning 메세지가 발생했습니다.

방화벽 같은 경우 http(80), https(443) 2개를 오픈 해주시면 됩니다.

방화벽 미오픈 시 웹사이트 접근에 문제가 생길 수 있습니다.

80, 443 Port 오픈 후 방화벽 재기동을 해주시면 됩니다.

$ sudo firewall-cmd --permanent --add-port=80/tcp
$ sudo firewall-cmd --permanent --add-port=443/tcp
$ sudo firewall-cmd –reload
화벽 같은 경우 http(80), https(443) 2개를 오픈

방화벽 오픈 후 정상적으로 등록이 되었는지 확인합니다.

80/tcp, 443/tcp

정상적으로 오픈이 되신 분들은 웹 브라우저에서 서버 IP를 통해 접근을 하시면 됩니다.

방화벽 80,443 포트 오픈상태 확인

Step 3 : Mariadb Install and secure settings

mariadb server 패키지 설치

$ sudo dnf install mariadb-server mariadb -y 

mariadb Services 시작

$ sudo systemctl start mariadb.service 
$ sudo systemctl enable mariadb.service
$ sudo systemctl status mariadb.service

MariaDB 데이터베이스 시스템을 보안 강화하기 위한 스크립트

-‘Switch to unix_socket authentication‘ 단계에서는 MariaDB의 root 사용자가 unix_socket 인증 방식

운영체제의 사용자 이름과 MariaDB의 사용자 이름이 일치할 경우, 그 사용자는 MariaDB에 패스워드 없이 접근

y/n 개인의 환경에 맞춰서 자율적으로 선택

MariaDB 데이터베이스 시스템을 보안 강화하기 위한 스크립트

루트 패스워드 변경 : 이미 루트 패스워드가 설정되어 있으므로 이 단계는 건너뛰겠습니까? (y or n)

익명 사용자 제거 : MariaDB 설치 시 기본적으로 생성되는 익명 사용자를 제거하겠습니까?(y). 불필요한 보안 위협을 제거하는데 도움이 됩니다

원격 로그인 제한 : 루트 사용자가 원격에서 MariaDB에 로그인하는 것을 제한하겠니까?(y). 루트 계정의 보안을 강화하는 데 도움이 됩니다

데이터베이스 제거 : 모든 사용자가 접근할 수 있는 ‘test’ 데이터베이스를 제거하겠습니까?(y). 불필요한 보안 위협을 제거하는데 도움이 됩니다

테이블 즉시 리로드 : 지금까지의 모든 변경 사항을 즉시 적용하기 위해 권한 테이블을 리로드하겠습니까(y).

보안 스크립트 적용 후 DB 접근 root 패스워드 일치여부 확인

$ mysql -u root -p
데이터베이스 보안 적용 후 root 계정 접근 테스트

Step 4 : php package install

PHP 관련 모듈의 목록을 보여줍니다. 

 “모듈”이란, DNF 패키지 관리자에서 특정 기능 또는 애플리케이션을 지원하기 위해 묶여 있는 패키지 그룹을 의미

$ sudo dnf module list php
PHP 관련 모듈의 목록 확인

PHP 8.1 버전 모듈을 활성화해당 모듈과 그에 속한 패키지들이 설치될 수 있도록 설정하는 것을 의미합니다. 

즉, 명령어를 실행한 후에는 sudo dnf install php 명령어를 통해PHP 8.1 버전을 설치

$ sudo dnf module enable php:8.1
PHP 8.1 버전 모듈을 활성화해당 모듈과 그에 속한 패키지들이 설치될 수 있도록 설정하는 것을 의미합니다. 

php Package Install

$ sudo dnf install php php-cli php-gd php-curl php-zip php-mbstring php-mysqlnd -y

php : PHP 언어의 기본 패키지입니다. 웹 서버에서 PHP 코드를 해석하고 실행하는 데 필요합니다. 

php-cli : PHP의 커맨드 라인 인터페이스를 제공합니다. 이를 통해 터미널에서 직접 PHP 스크립트를 실행할 수 있습니다. 

php-gd : GD 라이브러리를 PHP에서 사용할 수 있도록 합니다. GD 라이브러리는 이미지를 동적으로 생성하고 조작하는 데 사용됩니다. 

php-curl : PHP에서 cURL 기능을 사용할 수 있도록 합니다. cURL은 웹에서 데이터를 전송하는 데 사용되는 라이브러리입니다. 

php-zip : ZIP 압축 파일을 읽고 쓰는 기능을 PHP에 추가합니다.

php-mbstring : PHP에서 다양한 문자 인코딩을 지원하기 위한 함수들을 제공합니다. 다국어 웹사이트를 제작하는 데 유용합니다. 

php-mysqlnd : PHP에서 MySQL 데이터베이스를 사용할 수 있도록 합니다. 이 패키지는 MySQL 서버와의 네트워크 연결을 관리하며, SQL 쿼리를 실행하고 결과를 가져오는 기능을 제공합니다.

php 필수 패키지 설치

php 버전 확인 후 서비스 재시작

$ php -v
$ sudo systemctl restart httpd

이렇게 LAMP Stack 구축을 완료 하였습니다.

간단하게 phpinfo 정보를 테스트로 확인해보겠습니다.


Step 5 : php web check

/var/www/html/info.php 를 생성 후 아래 사진과 같이 입력

웹 브라우저에서 Server IP/phpinfo 입력 시 접근이 가능합니다.

phpinfo 웹 브라우저에서 확인

감사합니다.

By Low ahn

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다