웹사이트 검색

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


Gentoo는 소스 지향 빌드로 인해 가장 빠른 Linux 배포판 중 하나이며 소프트웨어 관리 프로그램인 Portage를 통해 제공됩니다. 이는 완전한 웹 개발자 플랫폼을 구축하는 데 필요한 특정 도구입니다. 매우 빠르게 작동하고 작동하며 높은 수준의 사용자 정의 기능도 갖추고 있습니다.

이 주제에서는 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

2. 업데이트 프로세스가 완료된 후 Nginx USE 플래그를 포티지 make.conf 파일에 반영하여 원하는 설정과 모듈을 선택하여 Nginx 설치를 진행하세요. . 먼저 다음 명령을 실행하여 Nginx 기본 설치 모듈을 나열합니다.

emerge -pv nginx

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

equery uses nginx

그런 다음 다음 명령을 사용하여 Nginx를 설치하십시오.

emerge --ask nginx

Nginx가 컴파일할 기본 모듈 외에 추가 모듈(WebDAV, fancyindex, GeoIP 등)이 필요하다면 포티지 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. 포티지가 Nginx 출현을 마친 후, http 데몬을 시작하고 브라우저를 http://localhost로 지정하여 이를 확인하세요.

2단계: PHP 설치

4. Nginx 서버에서 PHP 동적 웹 프로그래밍 언어를 사용하려면 fpm<을 추가하여 PHP-FastCGI 프로세스 관리자(FPM)를 설치하세요. 및 기타 중요한 PHP 확장을 Portage USE 플래그에 추가하고 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 소켓을 제공합니다. 이 동작을 변경하고 가상 호스트를 활성화하려면 /etc/nginx/ 경로에 있는 nginx.conf 파일을 열고 다음 구성을 수행하십시오.

nano /etc/nginx/nginx.conf

localhost에 해당하고 127.0.0.1 IP 주소를 수신하는 첫 번째 server 블록을 찾고 해당 블록의 모든 명령문이 아래 스크린샷과 같이 표시되도록 하세요.

아직 파일을 닫지 말고 맨 아래로 이동하여 마지막 닫는 중괄호 “ } “ 앞에 다음 명령문을 추가하세요.

Include /etc/nginx/sites-enabled/*.conf;

8. 다음으로 사이트 사용 가능사용 가능 사이트(사용하지 않는 가상 호스트의 경우) Nginx 디렉토리와 HTTP 및 HTTPS 프로토콜의 로컬 호스트용 구성 파일을 만듭니다. .

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

localhost에 대해 다음 파일 구성을 만듭니다.

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을 사용하는 localhost의 경우 다음 구성 파일을 만듭니다.

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. 이제 Nginx 가상 호스트를 활성화하거나 비활성화하는 명령 역할을 하는 시스템 실행 파일 경로(` PATH 셸 변수)에 두 개의 스크립트를 생성할 차례입니다.

사이트 사용 가능에서 사이트 사용 가능n2ensite라는 첫 번째 Bash 스크립트를 생성합니다. >.

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. 그런 다음 n2dissite라는 두 번째 스크립트를 생성합니다. 이 스크립트는 다음 콘텐츠가 포함된 사이트 지원 Nginx 경로에서 지정된 활성 가상 호스트를 삭제합니다.

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 확장자가 없는 가상 호스트 구성 파일 이름을 사용한 다음 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. 구성을 테스트하려면 웹 파일의 localhost 기본 루트 경로(/var/www/localhost/htdocs)에 PHP 정보 파일을 생성하고 브라우저를 로 리디렉션하세요. https://localhost/info.php 또는 http://localhost/info.php.

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

localhost 가상 호스트 구성 파일을 템플릿으로 사용하고 Nginx n2enmodn2dismod를 사용하면 이제 원하는 만큼 많은 웹사이트를 쉽게 추가할 수 있지만 인터넷에 대한 유효한 DNS 포인터가 있는지 확인할 수 있습니다. -웹 서버를 향하거나 시스템 호스트 파일의 항목을 로컬로 사용합니다.

4단계: MySQL/MariaDB + PhpMyAdmin 설치

MySQL 데이터베이스와 MySQL용 PhpMyAdmin 웹 인터페이스를 설치하려면 젠투에 LAMP 설치에 제시된 것과 동일한 절차를 사용하십시오.

13. 대신 MySQL을 대체하는 MariaDB를 사용하려면 다음 명령을 사용하여 USE 플래그를 가져와 설치하세요.

emerge -pv mariadb
emerge --ask mariadb

MySQL과 패키지 충돌이 발생하는 경우 포티지 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 -u root -p 명령을 사용하여 MySQL 데이터베이스에 들어가 기능을 테스트하고 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 웹사이트가 필요하지 않은 경우 위 구성이 만족스러울 것입니다.