Gentoo Linux에 LEMP (Linux, Nginx, MySQL/MariaDB, PHP/PHP-FPM 및 PhpMyAdmin) 설치

젠투는 소스로부터 빌드되는 지향성을 가지고 있어서 가장 빠른 리눅스 배포판 중 하나이며, 소프트웨어 관리 프로그램인 포티지를 통해 웹 개발 플랫폼을 구축하는 데 필요한 특정 도구를 제공하여 매우 빠르게 작동하며 높은 정도의 사용자 정의가 가능합니다.

Install Nginx in Gentoo Linux

이 주제는 LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin)를 사용하여 완전한 웹 환경 플랫폼을 구축하기 위한 설치 과정을 단계별로 안내합니다. 또한 포티지 패키지 관리가 제공하는 USE 플래그 도움으로 컴파일 프로세스에서 필요한 패키지 기능 세트인 – 모듈 또는 웹 플랫폼에 필요한 설정을 매우 효율적으로 조정할 수 있는 서버 구성을 매우 세밀하게 설정할 수 있습니다.

요구 사항

  1. 인터넷을 사용하는 서버에 대해 보안 프로필이 설정된 젠투 설치 – 젠투 설치 안내서.
  2. 정적 IP 주소로 구성된 네트워크.

단계 1: Nginx 웹 서버 설치

1. Nginx 설치를 진행하기 전에 NIC가 정적 IP 주소로 구성되었고 포티지 소스와 시스템이 최신 상태인지 확인하십시오.

$ sudo su -
# emerge --sync
# emerge --update --deep --with-bdeps=y @world
Update Gentoo Linux

2. 업데이트 프로세스를 마치면 선호하는 설정과 모듈을 선택하여 Nginx 설치를 진행하십시오. Nginx USE 플래그를 포티지 make.conf 파일에 에코하여 Nginx 기본 설치 모듈 목록을 다음 명령을 실행하여 확인하십시오.

# emerge -pv nginx

상세한 모듈 정보(패키지용 USE 플래그)를 확인하려면 equery 명령을 사용하세요.

# equery uses nginx
List All Flag Modules

그런 다음 다음 명령을 사용하여 Nginx를 설치하세요.

# emerge --ask nginx
Install Nginx Web Server

기본 모듈 이외의 추가 모듈 (WebDAV, fancyindex, GeoIP 등)이 필요할 경우, Nginx를 컴파일할 때 함께 추가해야 합니다. Portage make.conf 파일에 NGINX_MODULES_HTTP 지시어를 사용하여 한 줄에 모두 추가한 다음 새 모듈로 Nginx를 재컴파일하세요.

# echo 'NGINX_MODULES_HTTP="dav auth_pam fancyindex geoip fastcgi uwsgi gzip rewrite"' >> /etc/portage/make.conf
# emerge --ask nginx
Compile Nginx for New Modules

3. Portage가 Nginx를 성공적으로 설치하면 HTTP 데몬을 시작하고 브라우저를 http://localhost로 이동하여 확인하세요.

Verify Nginx Web Server

단계 2: PHP 설치

4. Nginx 서버와 PHP 동적 웹 프로그래밍 언어를 사용하려면 PHP-FastCGI Process Manager (FPM)을 설치해야 합니다. Portage USE 플래그에 fpm 및 기타 중요한 PHP 확장을 추가한 다음 Apache 확장을 제거하세요.

# emerge -pv php
Install PHP in Gentoo
# equery uses php
PHP Extension Selection
# echo " dev-lang/php fpm cgi curl gd imap mysql mysqli pdo zip json xcache apc zlib zip truetype -apache2 " >> /etc/portage/package.use
# emerge --ask php

5. PHP-FPM을 시작하기 전에 서비스 구성 파일에 일부 변경을 적용해야 합니다. php-fpm 구성 파일을 열고 다음 변경 사항을 적용하세요.

# nano /etc/php/fpm-php5.5/php-fpm.conf

다음 지시어를 다음과 같이 주석 처리를 해제하세요.

error_log = /var/log/php-fpm.log
listen = 127.0.0.1:9000    ## Here you can use any HTTP socket (IP-PORT combination ) you want  ##
pm.start_servers = 20

6. PHP-FPM 구성 파일을 편집한 후 PHP-FPM 로그 파일 권한을 변경하고 서비스를 시작하세요.

# chmod 755 /var/log/php-fpm.log
# /etc/init.d/php-fpm start

PHP-FPM 서비스가 시작되었더라도 Nginx가 PHP 게이트웨이와 통신할 수 없기 때문에 Nginx 구성 파일을 수정해야 합니다.

단계 3: Nginx 구성 편집

7. Nginx 기본 템플릿 구성 파일은 로컬호스트용으로 기본 HTTP 소켓을 제공합니다. 이 동작을 변경하고 가상 호스트를 활성화하려면 nginx.conf 파일을 열고 /etc/nginx/ 경로에 위치한 다음 다음 구성을 수행하십시오.

# nano /etc/nginx/nginx.conf

첫 번째 server 블록을 찾아서 해당 블록이 로컬호스트에 해당하며 127.0.0.1 IP 주소에서 수신하는 것으로 주석 처리하여 아래 스크린샷과 같이 만듭니다.

Disable Basic HTTP Configuration

파일을 아직 닫지 말고 맨 아래로 이동하여 마지막 닫는 대괄호 “ } “ 앞에 다음 문을 추가합니다.

Include /etc/nginx/sites-enabled/*.conf;
Enable Nginx Virtual Host

8. 다음으로 로컬호스트의 HTTP 및 HTTPS 프로토콜에 대한 Nginx 디렉토리 및 구성 파일인 sites-enabledsites-available (사용되지 않는 가상 호스트용) 디렉토리 및 구성 파일을 만듭니다.

# mkdir /etc/nginx/sites-available
# mkdir /etc/nginx/sites-enabled

로컬호스트에 대한 다음 파일 구성을 만듭니다.

# nano /etc/nginx/sites-available/localhost.conf

다음 파일 내용을 추가합니다.

server {
               listen 80;
               server_name localhost;

               access_log /var/log/nginx/localhost_access_log main;
               error_log /var/log/nginx/localhost_error_log info;

               root /var/www/localhost/htdocs;

                location / {
                index index.html index.htm index.php;
                autoindex on;
                autoindex_exact_size off;
                autoindex_localtime on;

                                }

                         location ~ \.php$ {
                       # Test for non-existent scripts or throw a 404 error
                       # Without this line, nginx will blindly send any request ending in .php to php-fpm
                       try_files $uri =404;
                        include /etc/nginx/fastcgi.conf;
                       fastcgi_pass 127.0.0.1:9000;  ## Make sure the socket corresponds with PHP-FPM conf file
                        }
                }
Create Nginx Virtual Host Configuration

SSL을 사용하는 로컬호스트를 위해 다음 구성 파일을 만듭니다.

# nano /etc/nginx/sites-available/localhost-ssl.conf

다음 파일 내용을 추가합니다.

server {
               listen 443 ssl;
               server_name localhost;

            ssl on;
               ssl_certificate /etc/ssl/nginx/nginx.pem;
               ssl_certificate_key /etc/ssl/nginx/nginx.key;

               access_log /var/log/nginx/localhost.ssl_access_log main;
               error_log /var/log/nginx/localhost.ssl_error_log info;

               root /var/www/localhost/htdocs;

                                location / {
                index index.html index.htm index.php;
                autoindex on;
                autoindex_exact_size off;
                autoindex_localtime on;
                                 }                                                

                      location ~ \.php$ {
                       # Test for non-existent scripts or throw a 404 error
                       # Without this line, nginx will blindly send any request ending in .php to php-fpm
                       try_files $uri =404;
                       include /etc/nginx/fastcgi.conf;
                       fastcgi_pass 127.0.0.1:9000;
                                }
                }
Create SSL Nginx Virtual Host

9. 이제 시스템 실행 경로 ($PATH 쉘 변수)에 두 개의 스크립트를 만들어야 합니다. 이 스크립트는 Nginx 가상 호스트를 활성화하거나 비활성화하는 명령어로 작동합니다.

n2ensite라는 첫 번째 Bash 스크립트를 만들어서 sites-available의 지정된 호스트 간에 심볼릭 링크를 생성하여 Virtual Host 구성 파일을 활성화합니다.

# nano /usr/local/bin/n2eniste

다음 파일 내용을 추가합니다.

#!/bin/bash
if test -d /etc/nginx/sites-available && test -d /etc/nginx/sites-enabled  ; then
echo "-----------------------------------------------"
else
mkdir /etc/nginx/sites-available
mkdir /etc/nginx/sites-enabled
fi

avail=/etc/nginx/sites-available/$1.conf
enabled=/etc/nginx/sites-enabled/
site=`ls /etc/nginx/sites-available/`

if [ "$#" != "1" ]; then
                echo "Use script: n2ensite virtual_site"
                echo -e "\nAvailable virtual hosts:\n$site"
                exit 0
else

if test -e $avail; then
sudo ln -s $avail $enabled
else
echo -e "$avail virtual host does not exist! Please create one!\n$site"
exit 0
fi

if test -e $enabled/$1.conf; then
echo "Success!! Now restart nginx server: sudo /etc/init.d/ nginx restart"
else
echo  -e "Virtual host $avail does not exist!\nPlease see available virtual hosts:\n$site"
exit 0
fi
fi
Create Virtual Host Enable Script

10. 그런 다음 다음 내용이 포함된 sites-enabled Nginx 경로의 특정 활성 가상 호스트를 삭제할 n2dissite라는 두 번째 스크립트를 만듭니다.

# nano /usr/local/bin/n2dissite

다음 내용을 추가합니다.

#!/bin/bash
avail=/etc/nginx/sites-enabled/$1.conf
enabled=/etc/nginx/sites-enabled
site=`ls /etc/nginx/sites-available/`

if [ "$#" != "1" ]; then
                echo "Use script: n2dissite virtual_site"
                echo -e "\nAvailable virtual hosts: \n$site"
                exit 0
else

if test -e $avail; then
sudo rm  $avail
else
echo -e "$avail virtual host does not exist! Exiting!"
exit 0
fi

if test -e $enabled/$1.conf; then
echo "Error!! Could not remove $avail virtual host!"
else
echo  -e "Success! $avail has been removed!\nPlease restart Nginx: sudo /etc/init.d/nginx restart"
exit 0
fi
fi
Create Virtual Host Disable Script

11. Bash 스크립트 편집을 마치면 실행 권한을 부여하고 localhost 가상 호스트를 활성화합니다. 확장자 .conf를 제외한 Virtual Host 구성 파일 이름을 사용한 후 Nginx와 PHP-FPM 서비스를 다시 시작하여 변경 사항을 적용합니다.

# chmod +x /usr/local/bin/n2dissite
# chmod +x /usr/local/bin/n2ensite
# n2ensite localhost
# n2ensite localhost-ssl
# service nginx restart
# service php-fpm restart
Restart Nginx and PHP-FPM

12. 구성을 테스트하려면 웹 파일 (/var/www/localhost/htdocs)의 localhost 기본 루트 경로에 PHP 정보 파일을 만들고 브라우저를 https://localhost/info.php 또는 http://localhost/info.php로 리디렉션합니다.

echo "<?php phpinfo(); ?>" /var/www/localhost/htdocs/info.php
Verify PHP Configuration

localhost Virtual Host 구성 파일을 템플릿으로 사용하고 Nginx n2enmodn2dismod를 사용하여 이제 원하는만큼 많은 웹 사이트를 쉽게 추가할 수 있지만, 인터넷에 노출된 웹 서버의 유효한 DNS 포인터가 있거나 시스템 호스트 파일에 로컬로 엔트리를 사용해야 합니다.

단계 4: MySQL/MariaDB + PhpMyAdmin 설치

MySQL 데이터베이스 및 MySQL용 PhpMyAdmin 웹 인터페이스를 설치하려면 Gentoo에 LAMP 설치에 제시된 동일한 절차를 사용합니다.

13. MariaDB를 사용하려면 MySQL의 대체품을 사용하려면 다음 명령을 사용하여 USE flags을 얻고 설치합니다.

# emerge -pv mariadb
# emerge --ask mariadb
Install MariaDB Database

MySQL과 패키지 충돌이 발생하는 경우 Portage package.accept.keywords에 다음 줄을 추가합니다.

# echo “=dev-db/mariadb-5.5.37-r1 ~amd64” >> /etc/portage/package.accept.keywords
# echo “=virtual/mysql-5.5 ~amd64” >> /etc/portage/package.accept.keywords
# emerge --ask mariadb

14. MySQL 데이터베이스를 설치한 후 서비스를 시작하고 mysql_secure_installation을 사용하여 보안 설정을 합니다 (루트 암호 변경, 외부 로컬호스트 이외의 루트 로그인 비활성화, 익명 사용자/테스트 데이터베이스 제거).

# service mysql start
# mysql_secure_installation

15. MySQL 데이터베이스에 mysql -u root -p 명령어로 접속하여 기능을 테스트하고 exit 명령어로 나갑니다.

# mysql -u root -p

MariaDB > show databases;
MariaDB > exit;
Verify MySQL Connectivity

16. MySQL 명령줄에 익숙하지 않다면 다음 명령어를 실행하여 PhpMyAdmin 웹 프론트엔드를 설치합니다.

# emerge -pv dev-db/phpmyadmin
# echo “dev-db/phpmyadmin setup vhosts” >> /etc/portage/package.use
# emerge  --ask dev-db/phpmyadmin
Install PhpMyAdmin

17. PhpMyAdmin 설치가 완료되면 샘플 구성 파일을 기반으로 구성 파일을 만들고, blowfish_secret 암호를 무작위 문자열로 변경한 후, /usr/share/webapps/phpmyadmin/phpmyadmin_version_number/htdocs/에서 원하는 PhpMyAdmin 웹 인터페이스에 액세스할 가상 호스트 문서 루트 경로로 심볼릭 링크를 만듭니다.

# cd /usr/share/webapps/phpmyadmin/4.2.2/htdocs/
# cp config.sample.inc.php  config.inc.php
# nano config.inc.php
Configure PHPMyAdmin
# ln -s /usr/share/webapps/phpmyadmin/4.2.2/htdocs/  /var/www/localhost/htdocs/phpmyadmin
Create a PhpMyAdmin Symbolic Link

18. PhpMyAdmin 웹 인터페이스를 통해 MySQL 데이터베이스에 액세스하려면 브라우저를 열고 다음 URL 주소를 사용합니다 https://localhost/phpmyadmin.

Verify PhpMyAdmin Login

19. 최종 단계는 서비스를 시스템 전반에 활성화하여 재부팅 후 자동으로 시작하도록 하는 것입니다.

# rc-update add nginx default
# rc-update add php-fpm default
# rc-update add mysql default
Enable Services System Wide

이제 웹 호스팅을 위한 최소 환경 설정이 준비되었으며, HTML, JavaScript 및 PHP 동적 생성 페이지만 사용하고 SSL 웹 사이트가 필요하지 않다면 위의 구성이 여러분에게 만족스러울 것입니다.

Source:
https://www.tecmint.com/install-lemp-in-gentoo-linux/