서버 설치 · 8 min read · Jan 26, 2026
FreeBSD 11에 Nginx, MariaDB 및 PHP(FEMP 스택) 설치
이 튜토리얼에서는 FreeBSD 11.x에서 FEMP 스택을 설치하고 구성하는 과정을 설명합니다. FEMP 소프트웨어 스택은 일반적으로 Unix/Linux 운영 체제에 설치되는 프로그램 그룹을 나타내는 약어로, 주로 동적 웹 애플리케이션을 배포하는 데 사용됩니다. 이 경우 FEMP 약어는 FreeBSD 유닉스 유사 운영 체제를 나타내며, 그 위에 다음과 같은 애플리케이션이 설치됩니다:
- Nginx 웹 서버: HTML 콘텐츠를 제공하는 데 주로 사용되는 빠르게 성장하는 인기 웹 서버로, 로드 밸런싱, 고가용성 또는 웹 서버 또는 기타 네트워크 서비스에 대한 리버스 프록시를 제공할 수 있습니다.
- PHP 동적 프로그래밍 언어 인터프리터: 데이터베이스 데이터를 조작하고 일반 HTML에 포함될 수 있는 동적 웹 콘텐츠를 생성하는 데 백엔드에서 사용됩니다. PHP 스크립트는 서버 측에서만 실행되며 클라이언트 측(브라우저)에서는 실행되지 않습니다.
- MariaDB\MySQL RDBMS: 데이터가 백엔드에 저장되는 곳으로, 동적 처리는 PHP가 처리합니다. 이 튜토리얼에서는 MySQL 데이터베이스 대신 Oracle이 소유하고 개발하는 MySQL의 커뮤니티 포크인 MariaDB 관계형 데이터베이스 관리 시스템을 설치하고 사용할 것입니다.
요구 사항:
- FreeBSD 11.x의 최소 설치.
- 네트워크 인터페이스에 구성된 정적 IP 주소.
- 루트 권한이 있는 일반 계정 또는 루트 계정을 통한 시스템에 대한 직접 액세스.
- 바람직하게는 최소 DNS 레코드(A 및 CNAME 레코드)가 구성된 공개 등록 도메인 이름.
1단계 – MariaDB 데이터베이스 설치
첫 번째 단계에서는 웹사이트의 동적 데이터를 저장하고 관리하는 데 사용될 FEMP 구성 요소인 MariaDB 데이터베이스 시스템을 설치합니다. MariaDB/MySQL은 Nginx 또는 Apache 웹 서버와 함께 사용되는 세계에서 가장 많이 사용되는 오픈 소스 관계형 데이터베이스 중 하나입니다. 두 서버는 복잡한 웹 애플리케이션 또는 동적 웹사이트를 생성하고 개발하는 데 널리 사용됩니다. MariaDB는 FreeBSD에서 PORTS 리포지토리에서 제공하는 바이너리에서 직접 설치할 수 있습니다. 그러나 FreeBSD Ports 데이터베이스 섹션에서 ls 명령을 사용하여 간단한 검색을 수행하면 다음 명령 출력에 표시된 것처럼 여러 버전의 MariaDB가 나타납니다. 또한 패키지 관리자 pkg 명령을 실행하면 동일한 결과가 표시됩니다.
ls -al /usr/ports/databases/ | grep mariadbpkg search mariadb
이 가이드에서는 아래 발췌에서 설명하는 대로 pkg 명령을 사용하여 MariaDB 데이터베이스 및 클라이언트의 최신 릴리스를 설치합니다.
pkg install mariadb102-server mariadb102-clientMariaDB가 시스템에 설치된 후, MySQL 서버를 시스템 전체에서 활성화하기 위해 다음 명령을 입력합니다. 또한 아래와 같이 MariaDB 데몬을 시작해야 합니다.
sysrc mysql_enable="YES"service mysql-server start다음으로, mysql_secure_installation 스크립트를 실행하여 MariaDB 데이터베이스를 보호해야 합니다. 스크립트를 실행하는 동안 일련의 질문이 표시됩니다. 이러한 질문의 목적은 MySQL 엔진에 대한 보안 수준을 제공하는 것입니다. 예를 들어 MySQL 루트 사용자에 대한 루트 비밀번호 설정, 익명 사용자 제거, 루트 사용자에 대한 원격 로그인 비활성화 및 테스트 데이터베이스 삭제 등이 있습니다. MySQL 루트 사용자에 대한 강력한 비밀번호를 선택한 후, 아래 스크립트 샘플에 표시된 대로 모든 질문에 yes로 응답합니다. MariaDB 데이터베이스 루트 사용자와 시스템 루트 사용자를 혼동하지 마십시오. 이 계정들은 동일한 이름인 root를 가지고 있지만 동작하는 목적이 다릅니다. 하나는 시스템 관리용이고 다른 하나는 데이터베이스 관리용입니다.
/usr/local/bin/mysql_secure_installationNOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! MariaDB에 로그인하여 보안을 설정하려면 현재루트 사용자에 대한 비밀번호가 필요합니다. MariaDB를 방금 설치했으며루트 비밀번호를 아직 설정하지 않았다면 비밀번호는 비어 있습니다.따라서 여기서 그냥 Enter를 누르십시오. Enter current password for root (enter for none):OK, successfully used password, moving on... 루트 비밀번호를 설정하면 아무도 적절한 권한 없이 MariaDB루트 사용자로 로그인할 수 없도록 보장합니다.Set root password? [Y/n]y
New password:Re-enter new password:Password updated successfully!Reloading privilege tables.. ... Success!기본적으로 MariaDB 설치에는 익명 사용자가 있어 누구나사용자 계정을 만들지 않고도 MariaDB에 로그인할 수 있습니다. 이는 테스트 용도로만 의도되며 설치를조금 더 원활하게 진행하기 위한 것입니다. 프로덕션 환경으로 이동하기 전에 제거해야 합니다.Remove anonymous users? [Y/n]y
... Success!보통 루트는 'localhost'에서만 연결할 수 있어야 합니다. 이는 누군가가 네트워크에서 루트 비밀번호를 추측할 수 없도록 보장합니다.Disallow root login remotely? [Y/n]y
... Success!기본적으로 MariaDB에는 누구나 접근할 수 있는 'test'라는 데이터베이스가 있습니다. 이는 테스트 용도로만 의도되며 프로덕션 환경으로 이동하기 전에 제거해야 합니다.Remove test database and access to it? [Y/n]y
- Dropping test database... ... Success! - Removing privileges on test database... ... Success!권한 테이블을 다시 로드하면 지금까지 수행된 모든 변경 사항이 즉시 적용됩니다.Reload privilege tables now? [Y/n]y**
... Success!정리 중...모든 작업이 완료되었습니다! 위의 모든 단계를 완료했다면 MariaDB설치가 이제 안전해졌습니다.감사합니다, MariaDB를 사용해 주셔서!마지막으로, MariaDB 데이터베이스 보안을 설정한 후, 다음 명령을 실행하여 루트 계정에서 데이터베이스에 로컬 로그인할 수 있는지 테스트합니다. 데이터베이스 프롬프트에 연결되면 quit 또는 exit를 입력하여 데이터베이스 콘솔을 종료하고 시스템 사용자 콘솔 프롬프트로 돌아갑니다. 아래 스크린샷과 같이.
mysql -u root -p*MariaDB> quit***
FreeBSD에서 sockstat 명령을 실행하면 MariaDB가 외부 네트워크 연결에 열려 있으며 3306/TCP 포트를 통해 모든 네트워크에서 원격으로 접근할 수 있다는 사실이 빠르게 드러납니다.
sockstat -4 -6
MariaDB에 대한 원격 네트워크 연결을 완전히 비활성화하려면 mysql 네트워크 소켓이 loopback 인터페이스에만 바인딩되도록 강제해야 하며, 아래 명령을 사용하여 /etc/rc.conf 파일에 다음 줄을 추가합니다.
sysrc mysql_args="--bind-address=127.0.0.1"그 후, 변경 사항을 적용하기 위해 MariaDB 데몬을 재시작하고 sockstat 명령을 다시 실행하여 mysql 서비스의 네트워크 소켓을 표시합니다. 이번에는 MariaDB 서비스가 localhost:3306 소켓에서만 네트워크 연결을 수신해야 합니다.
service mysql-server restartsockstat -4 -6|grep mysql
원격 웹 애플리케이션을 개발 중이고 이 머신의 데이터베이스에 접근해야 하는 경우, /etc/rc.conf 파일에서 mysql_args=”–bind-address=127.0.0.1” 줄을 제거하거나 주석 처리하여 지금까지 수행한 MySQL 소켓 변경 사항을 되돌리고 데이터베이스를 재시작하여 변경 사항을 반영해야 합니다. 이 경우, 원격 로그인 필요가 있는 클라이언트의 IP 주소를 필터링하는 로컬 방화벽을 실행하거나 서버에 로그인할 수 있는 적절한 IP 주소 권한을 가진 MySQL 사용자를 생성하는 등의 다른 대안을 고려해야 합니다.
2단계 – Nginx 웹 서버 설치
FEMP 스택을 위해 FreeBSD에서 설치할 다음 중요한 데몬은 Nginx 서비스로 표현되는 웹 서버입니다. FreeBSD에서 Nginx 웹 서버를 설치하는 과정은 매우 간단합니다. Nginx 웹 서버는 FreeBSD 11.x Ports에서 제공하는 바이너리에서 설치할 수 있습니다. www 섹션의 Ports 리포지토리를 통해 간단한 검색을 수행하면 Nginx 소프트웨어에 대해 어떤 사전 컴파일된 버전이 사용 가능한지 목록을 확인할 수 있습니다. 아래 명령 발췌에서 보여줍니다.
ls /usr/ports/www/ | grep nginx패키지 관리 명령을 발행하면 아래 이미지와 같이 동일한 결과가 표시됩니다.
pkg search –o nginx
FreeBSD에서 가장 일반적인 Nginx 버전을 설치하려면 아래 명령을 실행합니다. 바이너리 패키지를 설치하는 동안 패키지 관리자는 Nginx 패키지를 다운로드하고 설치하는 데 동의하는지 묻습니다. 일반적으로 설치 프로세스를 시작하기 위해 프롬프트에 yes 또는 y를 입력해야 합니다. 프롬프트를 피하려면 pkg –y install nginx 명령을 발행할 때 –y 플래그를 추가하십시오.
pkg install nginx
Nginx 웹 서버 소프트웨어가 시스템에 설치된 후, 아래 명령을 발행하여 서비스를 활성화하고 실행해야 합니다.
sysrc nginx_enable="yes"service nginx startsockstat 명령을 실행하여 Nginx 서비스가 시스템에서 시작되었는지 및 어떤 네트워크 소켓에 바인딩되었는지 확인할 수 있습니다. 일반적으로 기본적으로 :80 TCP 소켓에 바인딩되어야 합니다. grep 명령줄 필터를 사용하여 *nginx 서버와 일치하는 소켓만 표시할 수 있습니다.
sockstat -4 -6 | grep nginxNginx 기본 웹 페이지를 방문하려면 네트워크의 컴퓨터에서 브라우저를 열고 HTTP 프로토콜을 통해 서버의 IP 주소로 이동합니다. 도메인 이름을 등록했거나 귀하의 사무실에 로컬 DNS 서버를 사용하는 경우, 브라우저의 URI 필드에 머신의 완전한 도메인 이름 또는 도메인 이름을 입력할 수 있습니다. 브라우저에 “Welcome to nginx!”라는 제목 메시지와 몇 개의 HTML 줄이 표시되어야 합니다. 아래 스크린샷과 같이.

FreeBSD 11.x에서 Nginx의 웹 파일이 저장되는 위치는 /usr/local/www/nginx/ 디렉토리입니다. 이 디렉토리는 nginx-dist 디렉토리에 대한 심볼릭 링크입니다. 웹사이트를 배포하려면 HTML 또는 PHP 스크립트 파일을 이 디렉토리에 복사하십시오. Nginx의 기본 webroot 디렉토리를 변경하려면 /usr/local/etc/nginx/ 디렉토리에서 Nginx 구성 파일을 열고 아래 예제와 같이 root 문을 업데이트하십시오.
nano /usr/local/etc/nginx/nginx.conf이것이 Nginx의 새로운 웹루트 경로가 됩니다:
*root /usr/local/www/new_html_directory;*
3단계 – PHP 프로그래밍 언어 설치
기본적으로 Nginx 웹 서버는 PHP 스크립트를 직접 파싱할 수 없으며, Nginx는 PHP 코드를 FastCGI 게이트웨이를 통해 PHP-FPM 데몬에 전달해야 하며, 이 데몬이 PHP 스크립트를 해석하고 실행합니다. FreeBSD에서 PHP-FPM 데몬을 설치하려면 아래 명령을 발행하여 사용 가능한 PHP 사전 컴파일 바이너리 패키지를 검색합니다.
ls /usr/ports/lang/ | grep phppkg search –o phpFreeBSD Ports 리포지토리에서 사용 가능한 다양한 PHP 버전 중에서 현재 PHP 7.1 릴리스를 설치하기 위해 아래 명령을 발행합니다.
pkg install php71복잡한 웹 애플리케이션을 배포하는 데 필요할 수 있는 추가 PHP 확장을 설치하려면 아래 명령을 발행하십시오. 공식적으로 지원되는 PHP 확장 목록은 다음 링크를 방문하여 확인할 수 있습니다: http://php.net/manual/en/extensions.alphabetical.php
CMS 기반 웹사이트를 구축할 계획이라면, 시스템 요구 사항을 확인하기 위해 CMS 문서를 검토하여 필요한 PHP 모듈 또는 확장을 확인하십시오.
php71-mcrypt mod_php71 php71-mbstring php71-curl php71-zlib php71-gd php71-json설정에서 데이터베이스 서버를 실행하고 있으므로 PHP 인터프리터가 MariaDB 데이터베이스에 연결하는 데 사용하는 PHP 데이터베이스 드라이버 확장도 설치해야 합니다.
pkg install php71-mysqli다음으로, PHP-FPM 구성 파일을 편집하여 PHP-FPM 사용자 및 그룹을 Nginx 런타임 사용자와 일치하도록 업데이트합니다. 아래 발췌와 같이 사용자 및 그룹 줄 변수를 www로 변경합니다.
cp /usr/local/etc/php-fpm.d/www.conf{,.backup}nano /usr/local/etc/php-fpm.d/www.conf다음 줄을 아래와 같이 변경합니다.
user = www
group = www**
기본적으로 Nginx 데몬은 ‘ nobody ‘ 시스템 사용자 권한으로 실행됩니다. Nginx 런타임 사용자를 PHP-FPM 런타임 사용자와 일치하도록 변경하려면 /usr/local/etc/nginx/nginx.conf 파일을 편집하고 다음 줄을 업데이트합니다:
user www;
기본적으로 FreeBSD의 PHP-FPM 데몬은 수신 상태에서 localhost:9000 TCP 포트에서 네트워크 소켓을 엽니다. 이 소켓을 표시하려면 아래 예제와 같이 sockstat 명령을 사용할 수 있습니다.
sockstat -4 -6| grep php-fpm
Nginx 웹 서버가 127.0.0.1:9000 네트워크 소켓과 PHP FastCGI 게이트웨이 간에 PHP 스크립트를 교환할 수 있도록 하려면 Nginx 구성 파일을 열고 아래 샘플과 같이 PHP-FPM 블록을 업데이트합니다.
Nginx에 대한 PHP FastCGI 게이트웨이 예:
location ~ \.php$ {
root /usr/local/www/nginx;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
위의 모든 변경을 완료한 후, 기본 프로덕션 파일을 기반으로 PHP 구성 파일을 생성하려면 아래 명령을 발행합니다. php.ini 파일에 있는 변수를 편집하여 PHP 런타임 설정을 변경할 수 있습니다.
ln -s /usr/local/etc/php.ini-production /usr/local/etc/php.ini마지막으로, 지금까지 수행한 모든 변경 사항을 적용하기 위해 PHP-FPM 데몬을 시스템 전체에서 활성화하고 PHP-FPM 및 Nginx 서비스를 재시작하려면 아래 명령을 발행합니다.
sysrc php_fpm_enable=yesservice php-fpm restartNginx 구성의 구문 오류를 테스트합니다:
ginx –t service nginx restart
FreeBSD에서 FEMP 스택에 대한 현재 PHP 정보를 얻으려면 서버 문서 루트 디렉토리에 phpinfo.php 파일을 생성하려면 아래 명령을 발행합니다.
echo "" | tee /usr/local/www/nginx/phpinfo.php그런 다음 브라우저를 열고 서버의 도메인 이름이나 공용 IP 주소 뒤에 /phpinfo.php 파일을 추가하여 phpinfo.php 페이지로 이동합니다. 아래 스크린샷과 같이.

이것으로 끝입니다! FreeBSD 11에 FEMP 스택을 성공적으로 설치하고 구성했습니다. 이제 환경이 준비되어 있으며 동적 웹 애플리케이션을 배포할 수 있습니다.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.