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는 Linux, Apache, MariadbL, PHP의 첫 글자를 따서 만든 약어로, 웹 서비스를 제공하는데 필요한 주요 오픈소스 소프트웨어 스택입니다.
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를 이용하여 시스템의 모든 패키지를 최신 버전으로 업데이트](https://i0.wp.com/endoflinux.com/wp-content/uploads/2023/12/2.-Linux-System-update.png?resize=640%2C173&ssl=1)
아파치 패키지 설치진행
$ sudo dnf install httpd -y
![아파치 패키지 설치진행](https://i0.wp.com/endoflinux.com/wp-content/uploads/2023/12/3.-httpd-install.png?resize=640%2C341&ssl=1)
아파치 설치 후 httpd 서비스 start + enable
$ sudo systemctl start httpd
( start -> enable -> status )
![아파치 설치 후 httpd 서비스 start + enable](https://i0.wp.com/endoflinux.com/wp-content/uploads/2023/12/4.-httpd-services-start.png?resize=640%2C341&ssl=1)
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개를 오픈](https://i0.wp.com/endoflinux.com/wp-content/uploads/2023/12/5.firewall-80443-port-open.png?resize=640%2C174&ssl=1)
방화벽 오픈 후 정상적으로 등록이 되었는지 확인합니다.
80/tcp, 443/tcp
정상적으로 오픈이 되신 분들은 웹 브라우저에서 서버 IP를 통해 접근을 하시면 됩니다.
![방화벽 80,443 포트 오픈상태 확인](https://i0.wp.com/endoflinux.com/wp-content/uploads/2023/12/5-1.-firewall-port-open-check-1.png?resize=640%2C164&ssl=1)
Step 3 : Mariadb Install and secure settings
mariadb server 패키지 설치
$ sudo dnf install mariadb-server mariadb -y
![](https://i0.wp.com/endoflinux.com/wp-content/uploads/2023/12/1.-Mariadb-Install.png?resize=640%2C341&ssl=1)
mariadb Services 시작
$ sudo systemctl start mariadb.service
$ sudo systemctl enable mariadb.service
$ sudo systemctl status mariadb.service
![](https://i0.wp.com/endoflinux.com/wp-content/uploads/2023/12/2.-mariadb-services-start.png?resize=640%2C341&ssl=1)
MariaDB 데이터베이스 시스템을 보안 강화하기 위한 스크립트
-‘Switch to unix_socket authentication‘ 단계에서는 MariaDB의 root 사용자가 unix_socket 인증 방식
운영체제의 사용자 이름과 MariaDB의 사용자 이름이 일치할 경우, 그 사용자는 MariaDB에 패스워드 없이 접근
y/n 개인의 환경에 맞춰서 자율적으로 선택
![MariaDB 데이터베이스 시스템을 보안 강화하기 위한 스크립트](https://i0.wp.com/endoflinux.com/wp-content/uploads/2023/12/3.-secure-db-1.png?resize=640%2C341&ssl=1)
루트 패스워드 변경 : 이미 루트 패스워드가 설정되어 있으므로 이 단계는 건너뛰겠습니까? (y or n)
익명 사용자 제거 : MariaDB 설치 시 기본적으로 생성되는 익명 사용자를 제거하겠습니까?(y). 불필요한 보안 위협을 제거하는데 도움이 됩니다
원격 로그인 제한 : 루트 사용자가 원격에서 MariaDB에 로그인하는 것을 제한하겠니까?(y). 루트 계정의 보안을 강화하는 데 도움이 됩니다
데이터베이스 제거 : 모든 사용자가 접근할 수 있는 ‘test’ 데이터베이스를 제거하겠습니까?(y). 불필요한 보안 위협을 제거하는데 도움이 됩니다
테이블 즉시 리로드 : 지금까지의 모든 변경 사항을 즉시 적용하기 위해 권한 테이블을 리로드하겠습니까(y).
![데이터베이스 보안강화](https://i0.wp.com/endoflinux.com/wp-content/uploads/2023/12/3-1.-secure-db-2.png?resize=640%2C341&ssl=1)
![데이터베이스 보안강화](https://i0.wp.com/endoflinux.com/wp-content/uploads/2023/12/3-2.-secure-db-3.png?resize=640%2C341&ssl=1)
보안 스크립트 적용 후 DB 접근 root 패스워드 일치여부 확인
$ mysql -u root -p
![데이터베이스 보안 적용 후 root 계정 접근 테스트](https://i0.wp.com/endoflinux.com/wp-content/uploads/2023/12/4.-enter-db.png?resize=640%2C341&ssl=1)
Step 4 : php package install
PHP 관련 모듈의 목록을 보여줍니다.
“모듈”이란, DNF 패키지 관리자에서 특정 기능 또는 애플리케이션을 지원하기 위해 묶여 있는 패키지 그룹을 의미
$ sudo dnf module list php
![PHP 관련 모듈의 목록 확인](https://i0.wp.com/endoflinux.com/wp-content/uploads/2023/12/1.-dnf-module-list-php-8.1version.png?resize=640%2C341&ssl=1)
PHP 8.1 버전 모듈을 활성화해당 모듈과 그에 속한 패키지들이 설치될 수 있도록 설정하는 것을 의미합니다.
즉, 명령어를 실행한 후에는 sudo dnf install php 명령어를 통해PHP 8.1 버전을 설치
$ sudo dnf module enable php:8.1
![PHP 8.1 버전 모듈을 활성화해당 모듈과 그에 속한 패키지들이 설치될 수 있도록 설정하는 것을 의미합니다.](https://i0.wp.com/endoflinux.com/wp-content/uploads/2023/12/2.-dnf-module-ena-ble-php-8.1.png?resize=640%2C341&ssl=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 필수 패키지 설치](https://i0.wp.com/endoflinux.com/wp-content/uploads/2023/12/3.-php-package-8.1-version-install.png?resize=640%2C341&ssl=1)
php 버전 확인 후 서비스 재시작
$ php -v
$ sudo systemctl restart httpd
![php 버전 확인](https://i0.wp.com/endoflinux.com/wp-content/uploads/2023/12/4.php-version-check-1.png?resize=640%2C341&ssl=1)
![php 서비스 재시작](https://i0.wp.com/endoflinux.com/wp-content/uploads/2023/12/5.-restart-httpd.png?resize=640%2C341&ssl=1)
이렇게 LAMP Stack 구축을 완료 하였습니다.
간단하게 phpinfo 정보를 테스트로 확인해보겠습니다.
Step 5 : php web check
/var/www/html/info.php 를 생성 후 아래 사진과 같이 입력
![phpinfo 확인하는 방법](https://i0.wp.com/endoflinux.com/wp-content/uploads/2023/12/1.info-php-1.png?resize=640%2C140&ssl=1)
웹 브라우저에서 Server IP/phpinfo 입력 시 접근이 가능합니다.
![phpinfo 웹 브라우저에서 확인](https://i0.wp.com/endoflinux.com/wp-content/uploads/2023/12/2.-info-php-site-1.png?resize=640%2C485&ssl=1)
감사합니다.