웹사이트 검색

OpenSUSE Leap 42.1에 Nginx, PHP 및 MySQL(LEMP 스택)을 설치하는 방법


이 페이지에서

  1. 1단계 - SuSEfirewall2 설치 및 구성
  2. 2단계 - Nginx 설치 및 구성
  3. 3단계 - MariaDB 설치 및 구성
  4. 4단계 - PHP-FPM 설치 및 구성
  5. 5단계 - Nginx 가상 호스트 구성\n
  6. 6단계 - phpMyAdmin 설치 및 구성
  7. 참조

LEMP 또는 Linux, Engine-x, MySQL 및 PHP는 PHP 기반 웹 응용 프로그램을 빠른 Nginx 웹 서버에서 실행하기 위해 Linux 운영 체제에 설치된 소프트웨어 모음입니다. LEMP 스택은 웹 애플리케이션 호스팅을 위한 빠르고 안정적인 기반을 제공합니다. LEMP는 완전한 문서 세트가 있는 오픈 소스 소프트웨어 모음이므로 다양한 응용 프로그램과 응용 프로그램이 함께 적용되는 방식에 대해 쉽게 배울 수 있습니다.

이 튜토리얼에서는 openSUSE Leap 42.1에 Nginx, MariaDB 및 PHP-FPM을 설치하는 방법을 보여줍니다. 그런 다음 SuSEfirewall2로 OpenSUSE 방화벽을 구성하여 Nginx 웹 서버에 대한 액세스를 허용하고 Nginx 웹 서버에 새 가상 호스트 구성을 추가하는 방법을 보여 드리겠습니다.

마지막으로 phpMyAdmin을 사용하기 쉬운 데이터베이스 관리 도구로 설치하고 웹 디렉토리를 변경하고 phpMyAdmin 디렉토리에 대한 HTTP 인증을 활성화하여 보안을 유지합니다.

전제 조건

  • OpenSUSE 도약 42.1.
  • 루트 권한.\n
  • zypper 명령 이해.\n

1단계 - SuSEfirewall2 설치 및 구성

SuSEfirewall2는 "/etc/sysconfig/SuSEfirewall2" 구성 파일을 기반으로 iptables 규칙을 생성하는 스크립트입니다. 서버 포트에 대한 네트워크 공격을 방지하기 위해 설치 및 구성합니다.

zypper를 사용하여 SuSEfirewall2를 설치합니다.

zypper in SuSEfirewall2

설치가 완료되면 웹 응용 프로그램 및 SSH에 대한 일부 포트를 열어야 합니다. ssh 서비스용으로 포트 22를 열고 http 및 https용으로 포트 80 및 443을 엽니다. "/etc/sysconfig/" 디렉토리로 이동하여 "SuSEfirewall2" 파일을 편집합니다.

cd /etc/sysconfig/
vim SuSEfirewall2

253행에서 서비스의 포트 번호를 공백으로 구분하여 추가합니다.

FW_SERVICES_EXT_TCP="22 80 443"

파일을 저장하고 종료합니다.

SuSEfirewall2 및 SSH 서비스를 다시 시작한 다음 텔넷을 통해 서버에 연결하여 포트 구성을 테스트합니다.

SuSEfirewall2 및 SSH 서비스를 다시 시작합니다.

/sbin/rcSuSEfirewall2 restart
systemctl restart sshd

포트 22에서 telnet과의 ssh 연결 테스트:

telnet 192.168.1.101 22

2단계 - Nginx 설치 및 구성

Nginx 또는 엔진 x는 메모리 소비가 적은 고성능 HTTP 및 프록시 서버입니다. Netflix, Pinterest, CloudFlare, Github 등과 같은 대규모 웹 사이트에서 사용됩니다. Nginx는 구성 구문을 배우기 쉽고 캐싱 기능이 있는 상태 확인 및 역방향 프록시가 있는 로드 밸런서 역할도 할 수 있습니다.

이 단계에서는 nginx를 설치하고 부팅 시 시작하도록 추가합니다. "zypper in" 명령으로 설치하십시오:

zypper in nginx

nginx를 시작하고 부팅 시 시작되도록 활성화합니다.

systemctl start nginx
systemctl enable nginx

이제 Nginx가 시작되었지만 웹 브라우저를 통해 액세스하려고 하면 403 금지 오류가 발생합니다. 이 오류는 웹 루트 폴더에 표준 색인 문서가 없기 때문에 발생합니다. 이 문제를 해결하려면 루트 웹 디렉토리 "/srv/www/htdocs"에 새 인덱스 html을 만듭니다. 디렉터리로 이동하여 index.html 파일을 만듭니다.

cd /srv/www/htdocs/
echo "<h1>This is Nginx OpenSUSE Leap 42.1</h1>" > index.html

웹 브라우저를 열고 서버 IP를 입력하면 색인 페이지가 나타납니다.

3단계 - MariaDB 설치 및 구성

MariaDB는 GNU GPL 라이선스에 따라 MySQL에서 분기된 오픈 소스 RDBMS(관계형 데이터베이스 관리 시스템)입니다. 이 자습서에서는 MariaDB를 설치하고 MariaDB 셸의 루트 암호를 구성합니다.

zypper 명령을 사용하여 MariaDB를 설치합니다.

zypper in mariadb mariadb-client

MariaDB/MySQL을 시작하고 아래 systemctl 명령을 사용하여 부팅 시작에 추가합니다.

systemctl start mysql
systemctl enable mysql

다음으로 mysqladmin 명령을 사용하여 MariaDBb/MySQL의 관리자 암호를 구성합니다. 이 목적으로 사용할 수 있는 또 다른 옵션은 "mysql_secure_installation"입니다. 이 단계에서는 mysqladmin을 사용합니다.

/usr/bin/mysqladmin -u root password 'aqwe123'

메모:

"aqwe123"은 MariaDB/MySQL의 새 암호입니다.

그런 다음 사용자 루트와 비밀번호 aqwe123으로 mysql 셸에 로그인합니다.

mysql -u root -p
TYPE PASSWORD 'aqwe123'

이제 MariaDB/MySQL이 설치되고 새 암호로 구성됩니다.

4단계 - PHP-FPM 설치 및 구성

PHP-FPM 또는 FastCGI Process Manager는 이전 PHP FastCGI의 대안으로 추가 기능과 속도 향상을 제공합니다. PHP-FPM은 PHP 프로그래밍 언어를 기반으로 하는 소규모 및 대규모 사이트에 적합합니다.

이 단계에서는 phpMyAdmin에 필요한 일부 추가 확장과 함께 php5-fpm을 설치합니다. php5-fom 및 zypper로 확장 프로그램을 설치합니다.

zypper in php5 php5-mysql php5-fpm php5-gd php5-mbstring

설치가 완료되면 php5-fpm 디렉토리로 이동하여 구성 파일을 복사합니다.

cd /etc/php5/fpm/
cp php-fpm.conf.default php-fpm.conf

vim 명령으로 구성을 편집합니다.

vim php-fpm.conf

php-fpm 로그를 활성화하려면 32행의 주석을 제거하십시오. 기본 접두어는 /var이며 php5-fpm에 문제가 있는 경우 "/var/log/php-fpm.log" 로그 파일을 확인할 수 있습니다.

error_log = log/php-fpm.log

148행에서 nginx 프로세스의 소유자를 Nginx 사용자로 구성합니다. 사용자 및 프로세스 그룹을 nginx로 변경합니다.

user = nginx
group = nginx

159행: 포트가 아닌 소켓 파일에서 실행되도록 php-fpm을 구성합니다. 해당 줄을 다음과 같이 변경하십시오.

listen = /var/run/php-fpm.sock

그리고 170행에서 유닉스 소켓에 대한 권한을 모드 0660을 사용하여 nginx 사용자 및 그룹으로 변경합니다.

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

파일을 저장하고 편집기를 종료합니다.

다음으로 PHP cli 디렉토리로 이동하여 vim으로 php.ini 파일을 편집합니다.

cd /etc/php5/cli/
vim php.ini

보안상의 이유로 cgi.fix_pathinfo 값을 0으로 변경하십시오. 178행:

cgi.fix_pathinfo=0

저장 및 종료.

php.ini를 conf.d 디렉토리에 복사합니다:

cp php.ini /etc/php5/conf.d/

이 단계에서 PHP-FPM 구성이 완료되었지만 여전히 Nginx를 구성해야 합니다. php-fpm과 함께 작동하도록 Nginx를 설정해야 합니다.

nginx 구성 디렉토리로 이동하고 cp 명령을 사용하여 구성 파일을 백업합니다.

cd /etc/nginx/
cp nginx.conf nginx.conf.backup

vim으로 nginx.conf를 편집합니다.

vim nginx.conf

48행에 index.php를 추가합니다.

index index.php index.html index.htm;

68행에 새로운 php 구성 섹션을 추가합니다. 이것은 .php 파일 요청을 처리하기 위한 구성입니다.

       location ~ \.php$ {
                root /srv/www/htdocs;
                try_files $uri =404;
                include /etc/nginx/fastcgi_params;
                fastcgi_pass unix:/var/run/php-fpm.sock;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       }

파일을 저장하고 종료합니다.

다음으로 nginx 구성 파일 구문을 테스트하여 오류가 없는지 확인합니다. 그런 다음 php-fpm 데몬을 시작하고 Nginx를 다시 시작합니다.

nginx -t
systemctl start php-fpm
systemctl restart nginx

php-fpm 및 nginx가 제대로 작동하는지 확인하기 위해 새 php 테스트 파일을 추가합니다. DocumentRoot 디렉토리로 이동하여 info.php라는 이름으로 phpinfo 파일을 만듭니다.

cd /srv/www/htdocs/
echo "<?php phpinfo(); ?>" > info.php

웹 브라우저를 열고 서버 ipaddress를 입력하십시오.

Nginx와 php-fpm이 현재 작동 중입니다.

5단계 - Nginx 가상 호스트 구성

이 단계에서는 웹 사이트에 대한 가상 호스트 구성을 추가하는 방법을 보여 드리겠습니다. 새 도메인 "www.example.com"을 구성하고 "/srv/www/example/"에 웹루트 디렉토리를 구성합니다. example 및 example.com을 자신의 도메인 이름으로 바꾸십시오.

GNginx nginx 디렉토리를 만들고 가상 호스트 구성을 위한 새 디렉토리를 만듭니다.

cd /etc/nginx/
mkdir vhosts.d/
cd vhosts.d/

다음으로 도메인 이름 "example.com" 가상 호스트에 대한 새 파일 example.conf를 만듭니다.

vim example.conf

아래에 가상 호스트 구성을 붙여넣으십시오.

server {
    server_name example.com;
    return 301 $scheme://www.example.com$request_uri;
}

server {
    listen 80;

    root /srv/www/example;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

          location ~ \.php$ {
                try_files $uri =404;
                include /etc/nginx/fastcgi_params;
                fastcgi_pass unix:/var/run/php-fpm.sock;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       }


}

파일을 저장하고 종료합니다.

이제 /srv/www/ 디렉토리에 "example.com" 사이트에 대한 디렉토리를 만들고 새 인덱스 파일을 만듭니다.

mkdir -p /srv/www/example/
cd /srv/www/example/
echo "<h1>This is www.example.com site.</h1>" > index.html
echo "<?php phpinfo(); ?>" > info.php

이제 웹 브라우저를 열고 도메인을 방문하십시오.

example.com

www 도메인으로 리디렉션되고 이제 php 파일에 액세스합니다.

6단계 - phpMyAdmin 설치 및 구성

PhpMyAdmin은 웹 브라우저에서 MySQL 또는 MariaDB 데이터베이스를 관리하는 PHP 기반 애플리케이션입니다. 이 단계에서는 phpMyAdmin이 php-fpm에서 실행되도록 구성한 다음 phpMyAdmin 로그인 페이지에 대한 액세스를 제한하여 PHPMyAdmin을 안전하게 만듭니다.

zypper 명령을 사용하여 phpMyAdmin을 설치합니다.

zypper in phpMyAdmin

이 명령은 암호 파일 생성에 필요한 apache2-utils를 포함하여 phpMyAdmin에 필요한 모든 패키지를 설치합니다.

이제 시스템에 phpMyAdmin이 설치되었습니다. 다음으로 htpasswd 명령을 사용하여 새 htpasswd 파일을 만듭니다.

비밀번호 파일 htpasswd 생성:

htpasswd -c /etc/nginx/htpasswd megumi
TYPE YOUR PASSWORD for user megumi

다음으로 phpmyadmin 디렉터리에 HTTP 기본 인증을 사용하도록 Nginx를 구성해야 합니다. auth_basic으로 phpMyAdmin 로그인 페이지에 대한 액세스를 제한하고 "htpasswd" 파일에 있는 사용자만 phpMyAdmin에 로그인할 수 있습니다.

Nginx 구성 디렉토리로 이동하여 nginx.conf 파일을 편집합니다.

cd /etc/nginx/
vim nginx.conf

줄 40(server_name) 아래에 새 줄을 추가하여 서버 섹션 내부에 웹 루트 디렉터리를 정의합니다.

        server_name  localhost;
        root /srv/www/htdocs;       #newline config

그런 다음 nginx에 대한 phpMyAdmin 구성을 60행에 추가합니다.

    location ~ ^/phpMyAdmin/.*\.php$ {
        auth_basic "Restricted Access";
        auth_basic_user_file  /etc/nginx/htpasswd;
        fastcgi_pass unix:/var/run/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include   fastcgi_params;
    }

파일을 저장하고 편집기를 종료합니다.

nginx 구성을 테스트하고 nginx를 다시 시작합니다.

nginx -t
systemctl restart nginx

그런 다음 웹 브라우저를 열고 phpMyAdmin URL을 방문하면 로그인 페이지의 사용자 이름과 비밀번호를 묻는 메시지가 표시됩니다.

그런 다음 MySQL 사용자 이름과 비밀번호로 로그인합니다.

phpMyAdmin이 성공적으로 설치되었으며 htpasswd의 사용자만 로그인할 수 있습니다.

참조