WordPress / Web Server / PHP

2025. 1. 31. 14:22Network 공부

WordPress

오픈소스 콘텐츠 관리 시스템(CMS)으로 웹사이트, 기업 홈페이지, 쇼핑몰 등을 쉽고 빠르게 구축할 수있는 플랫폼이다.

GPL 라이선스를 따르는  무료 소프트웨어이다.

 

특징

- 테마(Theme) and 플러그인(Plugin)

테마를 통해 사이트 디자인을 손쉽게 변경할 수 있으며 플러그인을 통해 기능을 확장할 수 있다.

(ex: SEO, SNS 공유, 보안 강화 등등)

   

- 사용자 친화적 인터페이스

프로그래밍 지식 없이도 UI 를 통해 글 페이지 작성, 메뉴 구성 그리고 이미지, 동영상 업로드 등을 편리하게 할 수 있다.

 

- 커뮤니티 규모

- 확장성   

 

MariaDB ??

MariaDB는 오픈소스 관계형 데이터베이스 관리 시스템 (RDBMS)으로 MySQL에서 fork(나뉘다) 되어 만들어진 프로젝트다.

 

특징

MySQL과 높은 호환성

기존 MySQL 기반 프로젝트( WordPress 등)을 거의 수정 없이 마이그레이션 할 수 있을 정도로 호환성이 높다.

 

오픈소스 커뮤니티에 의한 활발한 개발

다양한 스토리지 엔진

InnoDB, MyRocks, ColumnStore 등 각 용도에 맞는 스토리지 엔진을 선택해 사용할 수 있다

 

WordPress 와의 관계

WordPress 는 PHP 로 작성되어 있으며, 기본적으로 데이터베이스 계층에서 MySQL or MariaDB 를 사용한다.

 

WordPress 와 MariaDB 연동하기

WordPress 를 동작시키려면 웹 서버, PHP 그리고 데이터베이스가 필요하다

일반적으로

LAMP 스택 ( Linux + Apache + MySQL or MariaDB + PHP )

또는

LEMP ( Linux + Nginx + MySQL or MariaDB + PHP )

를 구성한다. 

 

1) 서버 준비

서버 운영체제 ( Linux 서버 )

2) MariaDB 설정

sudo mysql_secure_installation

루트 비밀번호 설정,  익명 사용자 제거, 원격 루트 로그인 비활성화, 테스트 DB 제거 등을 진행한다.

3) WordPress 용 DB 및 계정 생성

# MariaDB 쉘 진입
sudo mysql

-- 데이터베이스 생성
CREATE DATABASE wordpress_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- WordPress 전용 사용자 생성 및 권한 부여
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY '비밀번호';
GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wp_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

wordpress_db, wp_user '비밀번호'는 운영 환경에 맞춰 변경한다.

utf8mb4 설정은 이모지 및 다국어를 위해 사용된다

 

WordPress 다운로드 및 설정

#WordPress Download
cd /var/www/html
sudo wget https://wordpress.org/latest.tar.gz
sudo tar -xvf latest.tar.gz
sudo chown -R www-data:www-data wordpress  # Ubuntu/Debian 계열
sudo chmod -R 755 wordpress
#WordPress 설정 파일 수정
cd /var/www/html/wordpress
cp wp-config-sample.php wp-config.php

# 편집 (nano, vi 등 사용)
nano wp-config.php

 

- Apache/Nginx 설정

/etc/apache2/sites-available/wordpress.conf 등 가상호스트(Virtual Host) 파일을 생성하거나, /etc/nginx/conf.d/wordpress.conf 등을 설정해서 WordPress 폴더가 웹에서 접근 가능하도록 합니다.

이후 웹브라우저에서 http://서버IP/wordpress 접속 → WordPress 설치 마법사(언어, 관리자 계정 생성 등)가 진행됩니다.

 

 


 

Web Server

- Apache HTTP Server (Apache)

가장 많이 사용된 오픈소스 웹 서버

 

특징

프로세스 / Thread Based Architecture ( MPM, Multi - Processing Module )

기본적으로 prefork, worker, event 등 여러 종류의 MPM 을 지원한다

기본 방식인 prefork MPM 은 요청마다 프로세스를 할당해 안정성이 높으나 메모리 사용량이 많을 수 있다.

worker MPM 이나 event MPM 은 Thread 나 event 기반으로 동작해 메모리 사용 효율이 개선되었지만 여전히 Nginx 만큼 가볍지 않다.

 

.htaccess

디렉터리마다 .htaccess 파일을 통해 설정을 overwrite 할 수 있다.

공유 호스팅 (Shared hosting) 환경에서 사용자별로 설정을 제어하는 경우 유용하지만 매 요청마다 .htaccess 를 확인하므로 성능이 저하될 수 있다.

 

풍부한 모듈과 커뮤니티

PHP, Perl, Python, Ruby 등과의 연동 모듈, 인증, SSL, 프로시 등 다양한 모듈이 공식 혹은 서드 파티로 제공된다.

 

장점은

.예제가 매우 풍부하며 .htaccess 를 통한 유연한 디렉토리별 설정이 가능하다.

모듈 생태계가 방대하며 설정이 직관적인 편이다.

 

단점은

프로세스(or Thread) 기반 특성으로 인해 높은 트래픽 환경에서 메모리 사용량이 많아 질 수 있다.

.htaccess 사용 시 디렉토리마다 파일을 파싱해야하므로 성능이 저하 될 수 있다.

(파싱: 프로그래밍이나 데이터 처리 과정에서 특정 형식의 데이터를 해석하여 구조화된 형태로 변환하는 과정)

 

Nginx Web Server

Nginx는 단순히 웹 서버로만 쓰이는 것이 아니라 이벤트 기반의 비동기 I/O 방식ㅇ르 사용해 여러 요청을 동시에 효율적으로 처리하며, Reverse Proxy 와 Load Balancer 역할도 수행할 수 있다.

- 이벤트 기반의 비동기 I/O

기존 서버는 하나의 요청을 처리하는 동안 다른 요청들을 처리할 수 없었다 (동기 방식)

반면, Nginx는 Event 가 발생할 때마다 (ex: 데이터가 도착하거나, 처리가 끝났거나 등) 즉시 다른 작업으로 전환할 수 있는

비동기 I/O 을 사용한다.

-비동기 I/O 

프로그램이 I/O(input and output) 작업을 요청한 후 해당 작업이 완료될 때까지 기다리지 않고 다른 작업을 수행할 수 있도록 하는 방식

 

- Reverse Proxy

클라이언트가 직접 백엔드 서버에 연결하는 것을 방지하기 위해 Nginx가 먼저 요청을 받아 실제 서버로 전달해주는 방식을 의미한다.

이를 통해 외부에 실제 서버의 위치를 숨길 수 있어 보안적으로 강화 할 수 있으며, 캐싱, 압축, SSL 암호화 처리 등을 Nginx 레벨에서 처리할 수 있다.

 

Load Balancer

 

Nginx  는 이벤트 기반의 비동기 처리 방식으로 고성능, 고병렬 처리에 강점이 있고, 정적 파일 서비스와 Reverse Proxy 기능이 뛰어나다.

즉, 대규모 트래픽 이나 Load Balancing and Reverse Proxy 가 필요한 환경에서 많이 사용된다.

 

실제 운영 환경에서는

Nginx  또는 Nginx + Apache 방식을 자주 선택한다

후자의 경우 일반적인 호스팅이나 .htaccess 가 반드시 필요한 경우 사용된다.

 


 

PHP

PHP(Hpyertext Preprocessor) 는 웹 서버에서 동적으로 페이지를 생성하기 위해 사용되는

서버 사이드 스크립트 언어 이다.

PHP 로 작성된 코드는 서버에서 실행된 뒤 결과 (HTML 등)을 클라이언트(브라우저)로 전송한다.

 

주요 활용 분야

- Web Application Devleopment

로그인 시스템, 게시판, 쇼핑몰, CMS(콘텐츠 관리 시스템) 등 다양한 웹 애플리케이션 개발이 가능함

WordPress, Drupal, Laravel 프레임워크 등이 PHP 기반으로 만들어짐

 

- API Server

RESTful API, GraphQL 등 각종 서버 사이드 Endpoint 를 구축하는 데 주로 사용된다.

 

- 서버 관리 스크립트

CLI 로 스크립트를 작성하여 운영 및 관리 자동화 작업을 수행할 수 있다.

 

 

PHP 의 특징

PHP 코드는 HTML 안에 바로 삽입될 수 있으며, <\?php ... ?> 구문으로 감싸 HTML과 혼합해 동적으로 내용을 생성한다

<html>
<body>
  <h1>현재 시각: <?php echo date('Y-m-d H:i:s'); ?></h1>
</body>
</html>

 

대부분의 웹 호스팅 서비스가 기본적으로 PHP 환경을 지원한다

특히 WordPress 를 사용하려면 PHP 가 필수적으로 사용된다.

 

- PHP-FPM (FastCGI Process Manager)

PHP를 좀 더 효율적으로 실행하기 위한 방식으로, Apache, Nginx 등과 연동 시 PHP-FPM을 사용하면 성능이 높아지고 자원 관리를 쉽게 할 수 있습니다.

 

 

장점 :

개발 친화적, 광범위한 호스팅 환경 지원, 풍부한 생태계 그리고 대규모 커뮤니티 가 있다.

 

단점 :

버전 간 호환 문제나 레거시 코드 문제, 설계 패턴의 일관성 부족, 웹 용도에 특화된 면이 강해 일반 목적 언어로의 사용이 제한적이다.

 

 


 

Daemon

Daemon 은 운영체제의 백그라운드에서 지속적으로 실행되는 프로세스이다.

사용자의 직접적인 개입 없이 시스템이 부팅될 때 시작되며, 특정 서비스 요청이 있을 때 응답하는 역할을 한다.

일반적으로 네트워크 서비스(웹 서버, 데이터 베이스 서버, 메일 서버 등)이 데몬 프로세스로 동작한다.

 

DB 가 Daemon 인 이유

1) 지속적인 실행 필요

DB는 끊임없이 데이터 요청을 받아야하는 서비스다.

예를 들어 웹 사이트에서 로그인, 게시글 조회 그리고 결제 처리 등 수많은 요청이 동시에 발상할 때, 이를 실시간으로 처리할려면 항상 실행 중이어야 한다.

Daemon 으로 DB 를 실행하게 되면 시스템이 부팅될 때 자동으로 시작되고 운영 중에도 계속 실행되면서 요청을 처리할 수 있다.

 

2) 다중 클라이언트 요청 처리

웹 애플리케이션, 모바일 앱, API 서버 등 다양한 클라이언트가 동시에 데이터베이스에 접근 할 수 있어야 한다.

예를 들어 웹 사이트의 여러 사용자가 동시에 로그인하거나 상품을 검색하는 경우

이를 위해 데이터베이스 서버는 네트워크를 통해 여러 클라이언트 요청을 받아 처리하는 서버 역햘을 수행하며 이 기능을 수행하는 프로세스가 Daemon 으로 실행된다.

 

3) 시스템 부팅 시 자동 시작

서버가 재부팅되더라도 DB 서버는 자동으로 시작됨

Linux 환경에서 systemd, init.d, upstart 등을 이용해서 데이터베이스 서버를 부팅 시 자동 실행되도록 설정

 

'Network 공부' 카테고리의 다른 글

Hash Function  (0) 2025.02.04
Proxy Server  (0) 2025.02.04
API / RESTful API / GraphQL  (0) 2025.01.28
Business Logic / Data Processing / Providing APIs  (0) 2025.01.28
RAID ( Redundant Array of Inexpensive (Independent) Disk )  (0) 2025.01.24