웹사이트 검색

FreeBSD에 Nginx, MariaDB 및 PHP(FEMP) 스택을 설치하는 방법


이 튜토리얼은 FreeBSD 11.x 최신 릴리스에서 FBEMP를 설치하고 구성하는 방법을 안내합니다. FBEMP는 다음 소프트웨어 모음을 설명하는 약어입니다.

FreeBSD 11.1 Unix 계열 배포판, Nginx 웹 서버, MariaDB 관계형 데이터베이스 관리 시스템(MySQL의 커뮤니티 포크) 및 서버 측에서 실행되는 PHP 동적 프로그래밍 언어.

요구사항

  1. FreeBSD 11.x 설치
  2. FreeBSD 설치 후 해야 할 10가지 일

1단계: FreeBSD에 Nginx 웹 서버 설치

1. FreeBSD에서 FBEMP 스택을 위해 설치할 첫 번째 서비스는 Nginx 로 대표되는 웹 서버입니다. 소프트웨어.

Nginx 웹 서버에는 FreeBSD 11.x PORTS에서 사용할 수 있는 사전 컴파일된 패키지가 더 많이 있습니다. 포트 저장소에서 Nginx 바이너리 목록을 가져오려면 서버 터미널에서 다음 명령을 실행하세요.

ls /usr/ports/www/ | grep nginx
pkg search -o nginx

2. 이 특정 구성에서는 아래 명령을 실행하여 Nginx의 기본 패키지 버전을 설치합니다. pkg 패키지 관리에서는 nginx 패키지 설치를 계속할지 묻습니다. 설치 프로세스를 시작하려면 yes(명령줄에서 y)로 대답하세요.

pkg install nginx

3. Nginx 웹 서버 패키지가 시스템에 설치된 후 다음 명령을 실행하여 시스템 전체에서 데몬을 활성화하고 시스템에서 서비스를 시작합니다.

sysrc nginx_enable="yes"
service nginx start

4. 다음으로 sockstat 명령을 사용하여 Nginx 서비스 네트워크 소켓이 80/TCP 포트에 바인딩되어 있는지 아래 명령을 실행하여 확인합니다. 명령. 반환된 결과를 nginx 문자열로만 줄이기 위해 sockstat 명령의 출력은 grep 유틸리티를 통해 파이프됩니다.

sockstat -4 | grep nginx

5. 마지막으로 네트워크의 데스크톱 컴퓨터에서 브라우저를 열고 HTTP 프로토콜을 통해 Nginx 기본 웹페이지를 방문합니다. Nginx 웹 서버 기본 웹 페이지를 요청하려면 브라우저의 URL에 컴퓨터의 FQDN이나 도메인 이름 또는 서버의 IP 주소를 입력하세요. 아래 스크린샷과 같이 "Welcome to nginx!" 메시지가 브라우저에 표시되어야 합니다.

http://yourdomain.com
http://your_server_IP
http://your_machine_FQDN

6. Nginx 웹 콘텐츠의 기본 weboot 디렉토리는 /usr/local/www/nginx/ 절대 시스템 경로에 있습니다. 이 위치에서는 웹 사이트에 대한 .html 또는 .php 파일과 같은 웹 콘텐츠 파일을 생성, 복사 또는 설치해야 합니다.

이 위치를 변경하려면 nginx 기본 구성 파일을 편집하고 새로운 웹 루트 경로를 반영하도록 루트 지시어를 변경하세요.

nano /usr/local/etc/nginx/nginx.conf

여기에서 새 웹루트 경로를 반영하도록 다음 줄을 검색하고 업데이트합니다.

root	/path/to/new/webroot;

2단계: FreeBSD에 PHP 설치

7. Apache HTTP 서버와 달리 Nginx에는 PHP 코드를 기본적으로 처리하는 기능이 없습니다. 그 대가로 Nginx 웹 서버는 코드를 검사하고 실행하는 php-fpm FastCGI 데몬과 같은 PHP 인터프리터에 PHP 요청을 전달합니다. 결과 코드는 Nginx로 다시 반환되며, Nginx는 코드를 요청된 HTML 형식으로 다시 재조립하고 해당 코드를 방문자 웹 브라우저로 보냅니다.

FreeBSD 11.x 포트 저장소는 PHP 5.6, PHP 7.0PHP 7.1<과 같은 PHP 프로그래밍 언어용 여러 바이너리 버전을 제공합니다. 출시. FreeBSD 11.x에서 사용 가능한 모든 사전 컴파일된 PHP 버전을 표시하려면 아래 명령을 실행하세요.

pkg search -o php
ls /usr/ports/lang/ | grep php

8. 시스템에서 실행하는 웹 애플리케이션에 가장 적합한 PHP 버전을 선택하여 설치할 수 있습니다. 하지만 이 가이드에서는 PHP 최신 버전을 설치하겠습니다.

PHP 7.1 릴리스와 다양한 웹 애플리케이션에 필요한 일부 PHP 중요 모듈을 설치하려면 다음 명령을 실행하세요.

pkg install php71 php71-mysqli php71-mcrypt php71-zlib php71-gd php71-json mod_php71 php71-mbstring php71-curl

9. 시스템에 PHP 패키지를 설치한 후 Nginx용 PHP-FPM 구성 파일을 열고 Nginx 런타임의 값과 일치하도록 사용자 및 그룹 값을 조정합니다. 사용자는 www입니다. 먼저 아래 명령어로 파일을 백업해 주세요.

cp /usr/local/etc/php-fpm.d/www.conf{,.backup}

그런 다음 파일을 열고 아래 샘플에 표시된 대로 다음 줄을 업데이트합니다.

user = www
group = www

10. 또한 아래 명령을 실행하여 프로덕션에 사용되는 PHP 구성 파일을 생성합니다. 이 파일에서 런타임 시 PHP 인터프리터에 적용될 사용자 정의 변경을 수행할 수 있습니다.

cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

예를 들어, 아래 예와 같이 컴퓨터의 물리적 위치를 업데이트하려면 PHP 인터프리터의 date.timezone 설정을 변경하세요. PHP 시간대 목록은 http://php.net/manual/en/timezones.php에서 확인할 수 있습니다.

vi /usr/local/etc/php.ini

다음 시간대를 추가하세요(국가별로 시간대를 설정하세요).

date.timezone = Europe/London

업로드된 파일의 최대 파일 크기와 같은 다른 PHP 변수를 조정할 수도 있습니다. 이는 아래 값을 수정하여 늘릴 수 있습니다.

upload_max_filesize = 10M
post_max_size = 10M

11. PHP에 대한 사용자 정의 설정을 완료한 후 아래 명령을 실행하여 새로운 구성을 적용하려면 PHP-FPM 데몬을 활성화하고 시작하십시오.

sysrc php_fpm_enable=yes
service php-fpm start

12. 기본적으로 FreeBSD의 PHP-FPM 데몬은 9000/TCP 포트의 로컬 네트워크 소켓에 바인딩됩니다. PHP-FPM 네트워크 소켓을 표시하려면 다음 명령을 실행하세요.

sockstat -4 -6| grep php-fpm

13. Nginx 웹 서버가 127.0.0.1:9000 소켓에서 수신 대기 중인 FastCGI 게이트웨이 서버에 PHP 스크립트를 전달하려면, Nginx 기본 구성 파일을 열고 아래 샘플에 설명된 대로 다음 코드 블록을 추가합니다.

vi /usr/local/etc/nginx/nginx.conf

nginx용 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;
        	}

14. 서버의 현재 PHP 정보를 보려면 다음 명령을 실행하여 Nginx weboot 경로에 info.php 파일을 생성하세요.

echo "<?php phpinfo(); ?>" | tee /usr/local/www/nginx/info.php

15. 그런 다음 Nginx 데몬을 테스트하고 다시 시작하여 PHP FastCGI 설정을 적용하고 브라우저에서 info.php 페이지를 방문합니다.

nginx -t # Test nginx configuration file for syntax errors
service nginx restart

아래 링크의 IP 주소나 도메인 이름을 적절하게 바꾸세요. PHP 정보 페이지에는 아래 스크린샷에 표시된 대로 정보가 표시되어야 합니다.

http://yourdomain.com/info.php
http://server_IP-or-FQDN/info.php

3단계: FreeBSD에 MariaDB 설치

16. 데이터베이스의 FEMP 스택에서 마지막 구성요소가 누락되었습니다. MariaDB/MySQL은 동적 웹사이트를 배포하는 데 사용되는 Nginx 웹 서버와 가장 관련성이 높은 오픈 소스 RDBMS 소프트웨어 중 하나입니다.

실제로 MariaDB/MySQL은 세계에서 가장 많이 사용되는 관계형 데이터베이스 중 하나입니다. FreeBSD 포트를 검색하면 MariaDB/MySQL의 여러 릴리스를 찾을 수 있습니다.

이 가이드에서는 MySQL 데이터베이스의 커뮤니티 포크인 MariaDB 데이터베이스를 설치합니다. 사용 가능한 MariaDB 버전을 검색하려면 터미널에서 다음 명령을 실행하세요.

ls -al /usr/ports/databases/ | grep mariadb
pkg search mariadb

17. 최신 버전의 MariaDB 데이터베이스 서버를 설치하려면 다음 명령을 실행하세요. 또한 MySQL에 연결하기 위해 PHP 스크립트에서 사용하는 PHP 관계형 데이터베이스 드라이버 모듈을 설치해야 합니다.

pkg install mariadb102-server php71-mysqli

18. 데이터베이스가 설치된 후 다음 명령을 실행하여 MySQL 데몬을 활성화하고 데이터베이스 서비스를 시작합니다.

sysrc mysql_enable="YES" 
service mysql-server start

19. 또한 MySQL 드라이버 확장을 로드하려면 PHP-FPM 데몬을 다시 시작해야 합니다.

service php-fpm restart
20. On the next step, secure MariaDB database by launching mysql_secure_installation script. Use the below sample of the installation script in order to answer the questions. Basically, say yes (y) for all asked questions to secure the database and type a strong password for MySQL root user.
/usr/local/bin/mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
 
In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
 
Enter current password for root (enter for none):
OK, successfully used password, moving on...
 
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
 ... Success!
Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
 ... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
 ... Success!
Cleaning up...
All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!

21. 콘솔에서 MariaDB 데이터베이스 연결을 테스트하려면 아래 명령을 실행하십시오.

mysql -u root -p -e "show status like ‘Connections’"

22. 기본적으로 0.0.0.0:3306/TCP 소켓에서 들어오는 네트워크 연결을 수신하는 MariaDB를 더욱 안전하게 보호하려면 아래 명령을 실행하여 서비스를 강제 실행하세요. 루프백 인터페이스를 바인딩하고 원격 액세스를 완전히 허용하지 않습니다. 그런 다음 MySQL 서비스를 다시 시작하여 새 구성을 적용하십시오.

sysrc mysql_args="--bind-address=127.0.0.1"
service mysql-server restart

아래 예와 같이 netstat 명령을 실행하여 localhost 바인딩이 성공적으로 적용되었는지 확인합니다.

netstat -an -p tcp

그게 다야! FreeBSD에 Nginx 웹 서버, MariaDB 관계형 데이터베이스 및 PHP 서버 측 프로그래밍 언어를 성공적으로 설치했습니다. 이제 동적 웹 페이지 구축을 시작하여 방문자에게 웹 콘텐츠를 제공할 수 있습니다.