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

이 주제는 LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin)를 사용하여 완전한 웹 환경 플랫폼을 구축하기 위한 설치 과정을 단계별로 안내합니다. 또한 포티지 패키지 관리가 제공하는 USE 플래그 도움으로 컴파일 프로세스에서 필요한 패키지 기능 세트인 – 모듈 또는 웹 플랫폼에 필요한 설정을 매우 효율적으로 조정할 수 있는 서버 구성을 매우 세밀하게 설정할 수 있습니다.
요구 사항
- 인터넷을 사용하는 서버에 대해 보안 프로필이 설정된 젠투 설치 – 젠투 설치 안내서.
- 정적 IP 주소로 구성된 네트워크.
단계 1: Nginx 웹 서버 설치
1. Nginx 설치를 진행하기 전에 NIC가 정적 IP 주소로 구성되었고 포티지 소스와 시스템이 최신 상태인지 확인하십시오.
$ sudo su - # emerge --sync # emerge --update --deep --with-bdeps=y @world

2. 업데이트 프로세스를 마치면 선호하는 설정과 모듈을 선택하여 Nginx 설치를 진행하십시오. Nginx USE 플래그를 포티지 make.conf 파일에 에코하여 Nginx 기본 설치 모듈 목록을 다음 명령을 실행하여 확인하십시오.
# emerge -pv nginx
상세한 모듈 정보(패키지용 USE 플래그)를 확인하려면 equery 명령을 사용하세요.
# equery uses nginx

그런 다음 다음 명령을 사용하여 Nginx를 설치하세요.
# emerge --ask nginx

기본 모듈 이외의 추가 모듈 (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

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

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

# equery uses php

# 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 주소에서 수신하는 것으로 주석 처리하여 아래 스크린샷과 같이 만듭니다.

파일을 아직 닫지 말고 맨 아래로 이동하여 마지막 닫는 대괄호 “ } “ 앞에 다음 문을 추가합니다.
Include /etc/nginx/sites-enabled/*.conf;

8. 다음으로 로컬호스트의 HTTP 및 HTTPS 프로토콜에 대한 Nginx 디렉토리 및 구성 파일인 sites-enabled 및 sites-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 } }

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

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

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

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

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

localhost Virtual Host 구성 파일을 템플릿으로 사용하고 Nginx n2enmod 및 n2dismod를 사용하여 이제 원하는만큼 많은 웹 사이트를 쉽게 추가할 수 있지만, 인터넷에 노출된 웹 서버의 유효한 DNS 포인터가 있거나 시스템 호스트 파일에 로컬로 엔트리를 사용해야 합니다.
단계 4: MySQL/MariaDB + PhpMyAdmin 설치
MySQL 데이터베이스 및 MySQL용 PhpMyAdmin 웹 인터페이스를 설치하려면 Gentoo에 LAMP 설치에 제시된 동일한 절차를 사용합니다.
13. MariaDB를 사용하려면 MySQL의 대체품을 사용하려면 다음 명령을 사용하여 USE flags을 얻고 설치합니다.
# emerge -pv mariadb # emerge --ask mariadb

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;

16. MySQL 명령줄에 익숙하지 않다면 다음 명령어를 실행하여 PhpMyAdmin 웹 프론트엔드를 설치합니다.
# emerge -pv dev-db/phpmyadmin # echo “dev-db/phpmyadmin setup vhosts” >> /etc/portage/package.use # emerge --ask dev-db/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

# ln -s /usr/share/webapps/phpmyadmin/4.2.2/htdocs/ /var/www/localhost/htdocs/phpmyadmin

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

19. 최종 단계는 서비스를 시스템 전반에 활성화하여 재부팅 후 자동으로 시작하도록 하는 것입니다.
# rc-update add nginx default # rc-update add php-fpm default # rc-update add mysql default

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