ServBay에서 PHP Swoole 모듈 활성화 방법
ServBay는 강력한 로컬 웹 개발 환경으로, 많은 개발자들이 필요로 하는 다양한 도구와 확장 기능을 내장하고 있습니다. 그중에는 고성능 PHP 확장인 Swoole도 포함되어 있습니다. Swoole은 PHP를 위해 설계된 비동기, 병렬, 고성능 네트워크 통신 엔진으로, PHP 애플리케이션의 성능과 확장성을 크게 높여줍니다. 이 문서에서는 ServBay에서 Swoole 확장 모듈을 손쉽게 활성화하는 방법을 자세히 안내하여, 효율적인 PHP 애플리케이션과 서비스를 구축할 수 있도록 도와드립니다.
Swoole 프레임워크 소개
Swoole은 오픈소스 프로젝트로, PHP에 Node.js와 유사한 비동기 I/O, 코루틴, 다중 프로세스와 같은 고급 기능을 제공합니다. 이를 통해 PHP 개발자는 기존의 동기적이고 블로킹되는 웹 서버 모델(Apache/Nginx + PHP-FPM 등)의 한계를 넘어, 다음과 같은 상시 서비스 구현이 가능합니다:
- 고성능 API 게이트웨이
- 실시간 통신 애플리케이션 (WebSocket)
- 게임 서버
- 사물인터넷(IoT) 애플리케이션
- 백엔드 서비스 및 태스크 처리
Swoole의 핵심 특징
- 고성능: epoll/kqueue 등의 시스템 호출을 기반으로 비동기 논블로킹 I/O를 구현하며, 멀티스레드/멀티프로세스/코루틴과 결합해 높은 처리량과 낮은 지연 시간을 실현합니다.
- 비동기와 코루틴: 코루틴 기능을 제공하여, 비동기 코드를 동기 코드처럼 쉽게 작성할 수 있어 개발 효율이 크게 향상됩니다.
- 다양한 내장 컴포넌트: HTTP, WebSocket, TCP, UDP 서버와 클라이언트, 커넥션 풀, 타이머, 프로세스 관리 등 풍부한 기능을 제공합니다.
- 쉬운 통합: Laravel, Symfony, ThinkPHP 등 기존 PHP 프레임워크와 손쉽게 연동하거나 Swoole 네이티브 애플리케이션을 구축할 수 있습니다.
ServBay에서 Swoole 모듈 지원
ServBay는 여러 버전의 PHP에 맞는 Swoole 확장 모듈을 사전 내장하고 있어, 따로 다운로드하거나 컴파일할 필요가 없습니다. ServBay가 PHP 버전별로 호환되는 Swoole 모듈을 알아서 관리합니다.
현재, ServBay에서 Swoole 확장 모듈을 지원하는 PHP 버전은 다음과 같습니다:
- PHP 5.6
- PHP 7.x 시리즈
- PHP 8.x 시리즈 (PHP 8.5 포함)
선택한 PHP 버전에 맞추어 ServBay가 자동으로 알맞은 Swoole 모듈 파일을 제공합니다.
사전 준비 사항
Swoole 모듈 활성화 전 다음 사항을 확인하세요:
- ServBay를 성공적으로 설치 및 실행하셨나요?
- Swoole을 사용할 PHP 버전을 ServBay에 설치하고 선택하셨나요?
Swoole 모듈 활성화 단계
ServBay에서는 GUI(그래픽 사용자 인터페이스)와 수동 설정 파일 편집, 두가지 방법으로 Swoole 모듈을 활성화할 수 있습니다. GUI 방식이 더 쉽고 직관적이므로 권장합니다.
ServBay GUI를 통한 활성화 (추천)
가장 쉽고 빠르게 Swoole 모듈을 활성화하는 방법입니다:
- ServBay 그래픽 사용자 인터페이스를 엽니다.
- 왼쪽 네비게이션 바에서 **언어(Languages)**를 선택합니다.
- PHP를 클릭합니다.
- 오른쪽 PHP 버전 목록에서 Swoole을 활성화하려는 PHP 버전을 찾고(예:
PHP 8.3
), 해당 버전이 선택된 상태(원 모양이 녹색)임을 확인하세요. - 해당 PHP 버전 오른쪽의 확장(Extensions) 버튼을 클릭합니다.
- 팝업된 확장 목록에서 swoole 확장을 찾으세요.
- swoole 확장 왼쪽의 스위치를 클릭하여 켭니다(스위치가 녹색으로 변경됨).
- 창 하단의 저장(Save) 또는 적용(Apply) 버튼을 클릭합니다.
- ServBay가 관련 PHP 서비스를 재시작하라는 안내를 표시하면 재시작(Restart) 버튼을 클릭합니다.
서비스가 재시작되면 Swoole 모듈이 정상 활성화됩니다.
설정 파일 직접 편집 (고급)
보다 세밀한 설정이 필요하거나 설정 파일 수동 관리를 선호한다면, PHP의 ini
파일을 편집해서 Swoole을 활성화할 수 있습니다.
해당 PHP 버전의
conf.d
설정 디렉토리로 이동합니다. 이 디렉터리는 추가 PHP 확장 설정 파일을 저장하며, ServBay는 이곳의.ini
파일을 자동으로 로드합니다. 예를 들어 PHP 8.3의 경우 일반적으로 다음 경로입니다:/Applications/ServBay/etc/php/8.3/conf.d/
1설치 시 다른 경로를 선택했다면 실제 설치 위치를 기준으로 접근하세요.
위 디렉토리에서
swoole.ini
파일을 찾고 엽니다.기본적으로 Swoole 활성화하는 행이 주석처리(
;
로 시작)돼 있을 수 있습니다. 다음 부분을 찾으세요:ini[Swoole] ; Uncomment the following line to enable Swoole ;extension = swoole.so
1
2
3;
문자를 지워서extension = swoole.so
행의 주석을 해제합니다:ini[Swoole] ; Uncomment the following line to enable Swoole extension = swoole.so
1
2
3swoole.ini
파일을 저장합니다.ServBay GUI의 메인 화면 또는 서비스 관리 패널에서 해당 PHP 서비스를 찾아 재시작 버튼을 클릭하세요.
재시작 후 Swoole 모듈이 설정 파일에 따라 정상적으로 로드됩니다.
Swoole 모듈 활성화 확인 방법
가장 흔한 방법은 phpinfo()
함수를 통해 PHP 환경에 로드된 모듈을 확인하는 것입니다.
- ServBay가 관리하는 웹사이트의 루트 디렉토리(예:
/Applications/ServBay/www/servbay.demo/public/
)에phpinfo.php
파일을 생성합니다. phpinfo.php
파일에 다음 내용을 추가하세요:php<?php phpinfo(); ?>
1
2
3- ServBay에서
servbay.demo
사이트가 올바르게 설정되어 있고 이 디렉터리를 가리키는지 알아둡니다. - 브라우저에서 해당 파일의 URL을 입력합니다(예:
https://servbay.demo/phpinfo.php
). - 열린
phpinfo
페이지에서 아래로 스크롤하거나 브라우저 검색(Ctrl+F 또는 Cmd+F)을 이용해 "swoole" 키워드를 찾습니다.
페이지에 Swoole에 관한 정보(버전, 설정 등)가 표시된다면, Swoole 모듈이 성공적으로 로드된 것입니다.
그림: phpinfo 페이지에서 Swoole 정보 찾기
Swoole 사용 예시
Swoole 모듈이 활성화되면 Swoole 기반 애플리케이션을 바로 작성할 수 있습니다. 다음은 Swoole로 기본 HTTP 서버를 만드는 간단한 예제입니다.
예제 코드: 간단한 Swoole HTTP 서버 만들기
프로젝트 디렉토리 생성 개발 디렉토리(예:
/Applications/ServBay/www/
하위)에 새 프로젝트 디렉토리(my-swoole-app
)를 만들고, 그 안에public
디렉토리도 생성합니다.bashcd /Applications/ServBay/www/ mkdir my-swoole-app cd my-swoole-app mkdir public
1
2
3
4서버 엔트리 파일
public/index.php
생성php<?php require __DIR__ . '/../vendor/autoload.php'; // Composer로 다른 라이브러리를 설치했다면 필요함 use Swoole\Http\Server; use Swoole\Http\Request; use Swoole\Http\Response; // HTTP 서버 인스턴스를 생성, 모든 로컬 IP(0.0.0.0)의 9501 포트 리스닝 $server = new Server("0.0.0.0", 9501); // 서버 설정 파라미터 (선택 사항) // $server->set([ // 'worker_num' => 4, // 워커 프로세스 수 // 'daemonize' => false, // 데몬 프로세스로 실행 여부 // ]); // 요청 이벤트 리스닝 $server->on("request", function (Request $request, Response $response) { // 응답 헤더 지정 $response->header("Content-Type", "text/plain"); // 응답 본문 설정 $response->end("Hello ServBay with Swoole!"); }); // 서버 시작 이벤트 리스닝 (선택 사항) $server->on("start", function (Server $server) { echo "Swoole http server is started at http://0.0.0.0:9501\n"; }); // 서버 시작 $server->start(); echo "Swoole server stopped.\n"; // 이 코드는 서버 중지 후에 실행됨
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35참고: 예제의
require __DIR__ . '/../vendor/autoload.php';
는 Composer로 Swoole 관련 추가 라이브러리(예:swoole/ide-helper
또는 Swoole 프레임워크 등)를 설치했을 때만 필요합니다. Swoole 원본 코드만 사용할 경우autoload.php
는 삭제해도 됩니다.명령줄에서 서버 실행 ServBay의 터미널 기능이나 시스템 기본 터미널을 사용해 프로젝트 폴더(
/Applications/ServBay/www/my-swoole-app/
)로 이동하세요. 사용 중인 PHP 버전이 ServBay에서 관리하는 PHP인지(경로 확인을 위해which php
를 실행하거나 ServBay 터미널 사용) 확인하세요.Swoole 서버를 다음 명령어로 실행합니다:
shphp public/index.php
1정상적으로 실행되면 "Swoole http server is started at http://0.0.0.0:9501"와 같은 메시지를 볼 수 있습니다.
그림: 터미널에서 Swoole 서버 구동 예시
접속 테스트 서버가 켜진 상태에서 브라우저로
http://localhost:9501
에 접속하면 "Hello ServBay with Swoole!" 메시지를 볼 수 있습니다.Swoole 서버를 중지하려면 터미널에서
Ctrl + C
를 누릅니다.
참고 사항
- 실행 방식: 위 예제는 Swoole 서버를 명령줄로 바로 실행하는 방법을 보여줍니다. 이 방식은 상시 구동 서비스 구현에 적합합니다. 기존 웹 애플리케이션(예: Laravel/Symfony/WordPress 등)은 주로 PHP-FPM 모드로 운영되며, Caddy/Nginx에서 프록시하는 방식이 일반적입니다. 만약 Swoole 기반 환경(Hyperf, Swoole-Laravel 등)에서 이런 프레임워크를 운영하려면 프레임워크에서 제공하는 전용 실행 스크립트를 활용해야 하며 실행 구조가 다를 수 있습니다(대부분 독립 프로세스 실행).
- 포트 충돌: Swoole 서버는 코드에서 지정한 포트(예제의 경우 9501번)를 리스닝합니다. 해당 포트가 이미 다른 프로그램에 의해 사용 중이면 충돌이 발생할 수 있습니다.
- 에러 로그: Swoole의 에러 및 출력 메시지는 기본적으로 실행 터미널에 표시되며, 환경설정에 따라 별도의 로그파일로도 출력할 수 있습니다.
자주 묻는 질문 (FAQ)
Q: ServBay GUI에서 Swoole을 활성화했는데, phpinfo()
페이지에서 Swoole 정보가 나오지 않습니다. 어떻게 하나요?
A: 다음 사항을 확인해보세요.
- 현재 보고 있는
phpinfo()
페이지의 PHP 버전이 Swoole을 활성화했던 버전인지 확인하세요. ServBay는 여러 PHP 버전을 동시에 실행할 수 있으니, 사이트나 CLI에서 사용하는 PHP 버전이 동일한지 체크해야 합니다. - ServBay GUI에서 설정 저장 후, 반드시 해당 PHP 서비스를 재시작했는지 확인하세요.
- 직접
swoole.ini
를 수정했다면, 파일 경로와 이름, 그리고extension = swoole.so
행이 주석 처리되지 않았는지 점검하세요.
Q: Swoole 예제를 실행하면 Class 'Swoole\Http\Server' not found
에러가 뜹니다. 왜 그런가요?
A: 이는 대부분 Swoole 확장 모듈이 현재 PHP 환경에 제대로 로드되지 않았을 때 발생합니다. 위 단계대로 Swoole 활성화 여부를 다시 확인하고, 커맨드라인에서 php public/index.php
를 실행할 때 ServBay에서 관리되고 Swoole이 활성화된 PHP 버전을 사용 중인지 체크하세요. 터미널에서 다음 명령으로 Swoole 모듈 로드 여부를 간단히 확인할 수 있습니다: php -m | grep swoole
.
마치며
ServBay를 이용하면 PHP의 Swoole 확장 모듈 활성화가 매우 간단합니다. 직관적인 그래픽 인터페이스든 직접 설정 파일을 편집하든, 개발자는 원하는 PHP 버전에 빠르게 Swoole을 적용할 수 있습니다. 이를 통해 고성능, 비동기 웹서비스 개발이 쉬워지며, Swoole의 강력한 성능으로 더 빠르고 확장성 높은 PHP 서비스를 구현할 수 있습니다. ServBay의 환경 관리 기능을 활용해 복잡한 설정 없이 개발에 집중해 보세요!