Google Cloud Google Cloud Server 구성 LNMP 환경 PHP+Mysql+Nginx 설치 상세 설명

Google Cloud Server 구성 작업을 잘하려면 먼저 도구를 갈고 닦아야 합니다. 칼날을 갈면 작업이 더 쉬워집니다. 먼저 서버 LNMP 환경을 구축한 후 웹사이트를 구축하세요. 좋은 PHP 환경이 없으면 나중에 더 큰 문제가 발생할 수 있습니다. 이전에 PHP 환경을 수동으로 설치하고 배포하는 방법에 대해 이야기한 적이 있습니다. 오늘은 Google Cloud Server에서 dnf 명령을 사용하여 타사 패널을 사용하지 않고 PHP+MySQL+Nginx 환경을 수동으로 설치하는 방법을 알아보겠습니다.

Google Cloud Server 구성 LNMP 환경 설치 PHP+Mysql+Nginx 설치 Centos8에 대한 자세한 설명

서버 구성 일을 잘하려면 먼저 도구를 갈고 닦아야 합니다. 칼날을 갈면 일이 더 쉬워집니다. 먼저 서버 LNMP 환경을 구축하고, 그다음 웹사이트를 구축하세요. 좋은 PHP 환경이 없으면 나중에 더 큰 문제가 발생할 것입니다. 이전에 PHP 환경을 수동으로 설치하고 배포하는 방법에 대해 이야기한 적이 있습니다. 오늘은 타사 패널을 사용하지 않고 Google에 PHP 환경을 설치하고 배포하는 방법에 대해 이야기해 보겠습니다.사용하다 DNF 명령어, PHP+ 수동 설치+환경을 구성하는 방법.

이 튜토리얼은 다음 사람들에게 적합합니다:/ 스트림 8/ 9/ 레드햇 엔터프라이즈 (RHEL)

Google Cloud Google Cloud Server 구성 LNMP 환경 PHP+Mysql+Nginx 설치 상세 설명

Google Cloud 서버 구성

시스템은 다음에 설치됩니다~의이 문서에서 테스트한 머신 유형은 e2-medium(vCPU 2개, 메모리 4GB)입니다.

CentOS 8이 21년 말에 지원을 중단한다고 발표되었으므로 CentOS Stream으로 업그레이드하세요. 기존 Centos8 시스템을 CentOS Stream 8 및 CentOS Stream 9로 업데이트해도 운영 방식에 큰 변화는 없습니다. 소프트웨어 저장소 소스만 추가하면 됩니다.

아래에서는 CentOS Stream 8 시스템을 예로 들어보겠습니다.:

Google Cloud 애플리케이션 및 가상 머신 구성 방법에 대한 자세한 내용은 다음을 참조하세요.무료 Google Cloud 애플리케이션
VM 서버 설정 후 SSH에 접속하여 작업을 시작하세요. Centos8 시스템을 설치한 후 가장 먼저 해야 할 일은 시스템의 루트 비밀번호를 변경하는 것입니다.

Google Cloud Server 구성 Centos8에 LNMP 환경 설치

Google Cloud Platform에서 제공하는 웹 SSH를 사용하여 서버에 접속하고, 로그인 후 SSH 연결 방법을 수정하세요.

Google Cloud Server 구성 서버 루트 비밀번호 수정

사용 sudo -i 또는 수도 수 슈퍼 관리자 루트 사용자로 전환하는 명령, 루트 슈퍼 관리자 모드로 전환하고 입력 비밀번호 비밀번호를 변경하는 명령입니다.

sudo -i 패스우드

변경할 비밀번호를 입력하고, 비밀번호를 두 번 확인하세요. 비밀번호 확인 후 Enter 키를 눌러 설정을 완료하세요. CD\ 루트 디렉토리로 전환하는 명령입니다.
사용 6세 SSH 구성 파일을 수정하는 명령입니다.

vi /etc/ssh/sshd_config
Google Cloud Server 구성 Centos8에 LNMP 환경 설치

SSH 원격 연결을 위한 포트를 변경하려면 포트 앞의 # 숫자를 제거한 후 변경하려는 포트 번호를 변경하세요.
sshd_config에서 다음 내용을 수정하세요:

  • PermitRootLogin 기본값은 '아니요'이며, SSH 원격 액세스를 사용하려면 '예'로 변경해야 합니다.
  • 비밀번호 인증 기본값은 '아니요'이며, 비밀번호 로그인을 활성화하려면 '예'로 변경하세요.
  • 클라이언트AliveInterval 기본값은 420인데, 클라이언트 연결 시간 초과 기간인 3600으로 변경하세요.
포트 10086 PermitRootLogin 예 PasswordAuthentication 예 ClientAliveInterval 3600

수정 후 사용:wqVI 편집을 종료하는 명령입니다.

위는 Google Cloud Server를 사용하여 SSH 로그인을 활성화하는 방법입니다. SSH 포트를 변경한 후에는 SELinux를 비활성화해야 합니다. 그렇지 않으면 로그인할 수 없습니다.

SElinux를 영구적으로 비활성화합니다

서버의 경우, 먼저 SElinux를 영구적으로 비활성화해야 합니다. SElinux는 Linux 보안 강화에 사용되지만, 설정이 매우 까다롭습니다. 따라서 영구적으로 비활성화하는 것이 좋습니다.

vi /etc/selinux/config

SELINUX=enforcing을 찾아 i를 눌러 편집 모드로 들어간 다음 매개변수를 SELINUX=disabled로 변경합니다.

Google Cloud Server 구성 Centos8에 LNMP 환경 설치

수정이 완료되면 키보드의 Esc 키를 누르고 wq 명령을 실행하여 파일을 저장하고 종료합니다. 그런 다음 서버를 재부팅합니다. SElinux가 성공적으로 비활성화되었습니다. 다음 단계는 SSH 포트 번호를 변경하는 것입니다. 인터넷에는 자동 스캐닝 봇이 많습니다. 공격을 받으면 그 결과는 참혹할 것입니다. Google Cloud는 트래픽에 따라 요금을 부과합니다. 300달러가 들지만, 침입당하더라도 하루에 수천 달러를 지출하는 것은 문제가 되지 않습니다. 따라서 SSH 원격 포트를 먼저 변경하는 것이 좋습니다!

참고: 일부 시스템에서는 방화벽이 기본적으로 켜져 있습니다. 방화벽 상태를 확인해야 합니다.

systemctl 상태 방화벽

Google Cloud Google Cloud Server 구성 LNMP 환경 PHP+Mysql+Nginx 설치 상세 설명

방화벽이 켜져 있는 경우 루트 사용자 권한으로 firewalld를 꺼야 합니다.

#먼저 방화벽을 중지해야 합니다. systemctl stop firewalld #방화벽이 중지된 후 영구적으로 종료합니다. systemctl disable firewalld

나중에 프로덕션 환경에 진입할 때는 Google Cloud 플랫폼에 방화벽을 설정할 수 있습니다.

서버를 다시 시작하세요!

 재부팅

Google Cloud Server 구성 CentOS 7 / CentOS Stream 8/9 소프트웨어 소스 설치 epel 및 remi

다음으로, centos8 시스템에 필요한 소프트웨어를 추가로 설치해야 합니다. 시스템을 업데이트하고 시스템 소프트웨어 패키지에 필요한 소스를 설치해 보겠습니다. 그리고 remi는 centos8에 없어서는 안 될 소프트웨어 저장소입니다.

RPM을 사용하여 소프트웨어 소스를 설치합니다.

CentOS 7 설치 소프트웨어 저장소:

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm

CentOS Stream 8 설치 소프트웨어 저장소:

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-8.rpm

CentOS Stream 9 설치 소프트웨어 저장소:

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-9.rpm

DNF를 사용하여 소프트웨어 소스를 설치합니다.

DNF는 차세대 yum 패키지 관리자(Yum에서 파생)입니다. dnf와 yum은 구문이 유사하며 많은 유사점을 가지고 있습니다. 기본적으로 DNF는 RHEL 8 및 CentOS Stream 8 시스템에 설치됩니다.

CentOS 7 설치 소프트웨어 저장소:

CentOS7은 먼저 dnf 명령을 설치해야 합니다.

dnf -y 설치 https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm dnf -y 설치 https://rpms.remirepo.net/enterprise/remi-release-9.rpm

CentOS Stream 8 설치 소프트웨어 저장소:

dnf -y 설치 https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm dnf -y 설치 https://rpms.remirepo.net/enterprise/remi-release-9.rpm

CentOS Stream 9 설치 소프트웨어 저장소:

dnf -y 설치 https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm dnf -y 설치 https://rpms.remirepo.net/enterprise/remi-release-9.rpm

소프트웨어 소스가 설치된 후 설치하세요 dnf-유틸리티

dnf-유틸리티 DNF 기반의 CLI 심(shim)으로 구현된 클래식 YUM 유틸리티입니다. 이러한 심의 주요 목적은 yum-3와의 하위 호환성을 보장하는 것입니다.

설치 후 사용 DNF 업데이트 시스템의 소프트웨어를 최신 버전으로 업데이트하는 명령입니다.

dnf 설치 dnf-utils dnf 업데이트

시스템에서 활성화된 데이터 소스를 보려면 다음을 사용하세요. DNF 리폴리스 전체 이 명령을 사용하면 활성화되지 않은 데이터 소스를 포함하여 모든 데이터 소스를 볼 수 있습니다.

DNF 리폴리스 전체
Google Cloud Server 구성 Centos8에 LNMP 환경 설치

사용 DNF 리폴리스 현재 사용 중인 소프트웨어 소스를 보는 명령입니다.

DNF 리폴리스

사용 DNF 리폴리스 비활성화됨 시스템에서 비활성화된 데이터 소스를 보는 명령입니다.

DNF 리폴리스 비활성화됨

소프트웨어 소스 설치가 완료되면 설치된 소프트웨어 패키지 소스를 설정하고 최적화해야 합니다. 메이크캐시 소스 캐시를 생성하는 명령입니다.

DNF 메이크캐시

DNF의 자동 업데이트를 설치하고 활성화하세요.

dnf install dnf-automatic systemctl start dnf-automatic.timer

"개발 도구" 패키지 그룹을 설치하세요.

dnf 그룹 설치 '개발 도구' -y

DNF를 사용하여 시스템 패키지 업데이트:

 dnf -y 업데이트

Google Cloud Server에서 SWAP 가상 메모리 구성

Google Cloud 운영 체제는 기본 설치 시 스왑 공간을 할당하지 않으므로 수동으로 추가해야 합니다. 운영 체제에 스왑 파일(스왑 공간 할당)이 구성되어 있지 않으면 메모리 로드 후 오류가 발생합니다. CentOS 8 운영 체제에 스왑 공간을 추가하는 방법은 다음과 같습니다.
사용 무료 -m 메모리 구성을 확인하려면 명령을 실행하세요. Swap 뒤의 숫자가 0이면 스왑 공간을 추가해야 합니다.

 무료 -m

6단계를 거쳐 스왑 가상 메모리를 생성하세요.

  1. 지정된 크기의 미리 할당된 공간을 가진 파일을 생성합니다.
  2. ls 명령을 사용하여 파일 크기를 확인할 수 있습니다.
  3. 스왑 파일의 권한을 변경합니다.
  4. 스왑 파일을 포맷합니다.
  5. 스왑 파일을 활성화합니다.
  6. fstab 파일을 수정하여 재부팅 후 스왑이 자동으로 적용되도록 합니다.

8G SWAP 파티션을 생성하세요. SWAP 가상 메모리를 늘리거나 줄이려면 count= 뒤의 값을 수정하세요.

sudo dd if=/dev/zero of=/swapfile bs=1024 count=8388608 ls -lh /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile sudo vi /etc/fstab

사용 6세 fstab 파일의 끝에 다음 명령을 추가합니다.

/스왑파일 스왑 스왑 sw 0 0

사용하지 않으려면 6세 명령을 사용하거나 직접 사용할 수 있습니다 에코 부팅 시 스왑을 시작하도록 설정하는 명령입니다.

echo '/swapfile swap swap sw 0 0' | sudo tee -a /etc/fstab

서버 시간 동기화

서버 시간 동기화 도구를 설치하세요. 서버와 클라이언트 간의 시간 동기화는 매우 중요합니다.

현재 시간대를 확인하세요. 시간대가 UTC인 경우, 서버 시간대를 변경해야 합니다.

timedatectl status|grep 'Time zone' # 서버 하드웨어 시간 hwclock 보기 # 운영 체제 시간을 하드웨어 시간 hwclock -w와 동기화

서버 시간대 변경

timedatectl set-timezone Asia/Shanghai timedatectl set-local-rtc 1 # date 명령을 사용하여 현재 서버 시간을 확인합니다. date

서버 시간대를 Asia/Shanghai로 변경하면 사용할 수 있습니다. timedatectl 시간대를 쿼리하는 명령입니다.

CentOS 8에서는 ntp 패키지가 기본적으로 더 이상 지원되지 않으며, 시간 동기화는 chrony에 의해 구현됩니다.

기본적으로 chrony 패키지는 centos8 시스템 설치 후 이미 존재합니다. rpm -q chrony를 통해 chrony 패키지의 존재 여부를 확인할 수 있습니다. chrony 패키지가 없는 경우 dnf 명령어를 사용하여 설치할 수 있습니다. dnf install chrony

vi /etc/chrony.conf
서버 ntp.aliyun.com iburst

첫 번째 줄에 국내 알리바바 클라우드 시간 동기화 서버를 추가하고 저장합니다.

시작 시 chrony를 실행하도록 설정

systemctl enable chronyd systemctl start chronyd

사용자 및 사용자 그룹 추가

Centos8을 구성하기 전에 웹 서비스 액세스 관련 권한에 대한 사용자 그룹과 사용자를 추가해야 합니다.

그룹 추가 www 사용자 추가 -g www www

사용자와 사용자 그룹 설정이 완료되었으니 Centos8의 기본 환경은 거의 구성되었습니다. 이제 웹 관련 서비스 설치를 시작해 보겠습니다.

Centos8을 설정한 후 Nginx+PHP8+Mysql을 설치하세요. 설치 순서를 잘못 설정하지 않도록 주의하세요. Nginx를 먼저 설치한 후 PHP8과 MySQL을 설치하세요.Nginx를 설치한 후에는 별도의 설정이 필요하지 않습니다. PHP8을 설치한 후 Nginx를 설정하세요.

CentOS에서 TCP BBR 가속 활성화

시스템 커널이 4.9 이상인 경우 기본적으로 BBR이 포함됩니다.

다음 코드를 루트 권한으로 실행하세요. 커널 버전은 4.9보다 높아야 합니다.

uname -r

2. BBR 활성화

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf

3. 효과적인 변화

sysctl -p

다음 명령을 실행하세요. 결과에 bbr이 포함되어 있으면 커널에서 bbr이 활성화되어 있는 것입니다.

sysctl net.ipv4.tcp_available_congestion_control

참고: 다음 명령을 실행할 수도 있습니다. 결과에 bbr이 발견되면 커널에서 bbr이 활성화되어 있음을 증명할 수도 있습니다.

lsmod | grep bbr

 

Google Cloud Server 구성 및 Nginx 설치

nginx 설치는 비교적 간단합니다. 설치 후 버전을 확인하면 1.14.1입니다. DNF를 사용하는 소프트웨어 패키지는 비교적 안정적입니다. 때로는 버전이 약간 낮을 수 있는데, 이는 CentOS 공식 소스에서는 정상적인 현상입니다.

Nginx를 설치하기 전에 Nginx에 필요한 종속성을 설치하세요.

dnf -y zlib 설치 zlib-devel pcre pcre-devel openssl openssl-devel gd-devel make gcc gcc-c++
  • gcc 리눅스 컴파일러
  • PCRE는 Perl 호환 정규 표현식 라이브러리를 포함하는 Perl 라이브러리입니다. nginx의 HTTP 모듈은 PCRE를 사용하여 정규 표현식을 파싱합니다.
  • zlib 라이브러리는 다양한 압축 및 압축 해제 방법을 제공합니다. Nginx는 zlib을 사용하여 http 패키지의 내용을 압축 해제합니다.
  • OpenSSL은 웹 보안 통신의 초석이며, https의 종속성이기도 합니다.

nginx를 설치하세요:
Nginx에 필요한 종속성 패키지를 설치한 후 다음 명령을 입력하여 nginx를 설치합니다.

dnf nginx 설치 nginx -v

설치 후 부팅 시 시작되도록 설정합니다.

systemctl에서 nginx 활성화

Nginx를 시작하고 다음과 같이 Nginx의 현재 상태를 확인하세요.

systemctl start nginx systemctl status nginx

포트 80의 현재 상태를 확인하세요:

넷스탯 -na | 그렙 80

nginx 기본 포트가 열려 있는지 확인하고 설정하세요.

방화벽-cmd --쿼리-포트=80/tcp

반환 값이 '아니요'인 경우, 포트 80이 열려 있지 않으므로 포트 80에 대한 액세스를 허용하려면 방화벽을 설정해야 합니다.

포트 80을 엽니다:

방화벽 명령 --add-port=80/tcp --permanent 방화벽 명령 --reload

브라우저에 서버의 IP 주소를 입력하고 nginx 시작 페이지에 액세스할 수 있는지 확인하세요.

Centos8에서 LNMP 환경을 설치하기 위해 Google Cloud Server를 구성합니다.

Nginx가 성공적으로 설치되었습니다. 다음으로, 설치 디렉터리를 확인하세요. Nginx를 수동으로 설치하는 디렉터리는 일반적으로 /usr/local/nginx이지만, yum/dnf를 사용하여 설치하는 디렉터리는 수동 설치 디렉터리와 약간 다릅니다. yum/dnf를 사용하여 nginx를 설치하는 데 필요한 디렉터리는 다음과 같습니다.

  • Nginx 기본 설정 파일: /etc/nginx/
  • Nginx 실행 파일 디렉토리: /usr/sbin/nginx
  • Nginx 홈페이지 HTML 페이지 경로: /usr/share/nginx/html
  • 프록시 디렉토리: /var/cache/nginx/proxy_temp
  • Nginx 캐시 디렉토리: /var/cache/nginx/fastcgi_temp
  • scgi 디렉토리: /var/cache/nginx/scgi_temp
  • uwsgi 디렉터리: /var/cache/nginx/uwsgi_temp
  • Nginx 로그 디렉토리: /var/log/nginx
구글 클라우드 PHP+Mysql+Nginx 설치

설치 후 사용 nginx -t 이 명령은 설치가 올바른지 테스트합니다. 설치가 올바르면 다음 내용이 반환됩니다.

CentOS8 기본 소프트웨어 저장소에 내장된 nginx 버전은 1.14.1입니다. 최근 1.17.7 이상으로 업그레이드해야 한다는 검사가 수행되었습니다. 더 높은 버전의 nginx를 설치하려면 다음을 확인하세요.CentOS8에 최신 버전의 Nginx를 설치하는 방법

Google Cloud Server 구성 및 PHP8 설치

당신이 사용하는 경우 dnf -y php 설치 해당 명령을 사용하여 PHP를 기본적으로 설치하면 기본 설치 버전이 매우 낮습니다. 현재 PHP 버전은 PHP8.1입니다. PHP8.1 설치 방법을 살펴보겠습니다.

먼저, PHP8.1 소프트웨어 소스를 설치하기 위해 시스템을 확인하세요:

DNF 리스트 PHP
구글 클라우드 PHP+Mysql+Nginx 설치

Centos8 기본 저장소의 PHP 버전이 7.2.24로 너무 낮습니다. 다음 단계는 remi 소스로 전환하여 PHP8.1 버전을 검색하는 것입니다.

사용 가능한 PHP 목록을 가져옵니다.

dnf 모듈 목록 php
구글 클라우드 PHP+Mysql+Nginx 설치

다음 단계는 remi 저장소의 PHP 모듈을 활성화하고 먼저 PHP 모듈을 재설정하는 것입니다.

PHP 데이터 소스 모듈을 재설정합니다.

dnf 모듈 php 재설정
구글 클라우드 PHP+Mysql+Nginx 설치

다음으로, 새 PHP 데이터 소스 모듈을 설정하고 활성화하세요. php8.1을 설치해야 하므로 remi-8.1을 활성화하세요.

dnf 모듈은 php:remi-8.1을 활성화합니다.
구글 클라우드 PHP+Mysql+Nginx 설치

remi-8.1 모듈이 활성화되었습니다. 이제 php8.1을 설치하세요.

설치 명령을 입력하여 설치하세요:

dnf php 설치
구글 클라우드 PHP+Mysql+Nginx 설치

PHP가 성공적으로 설치된 후 일반적으로 사용되는 추가 PHP 확장 패키지를 설치하세요.

dnf install -y php-{mysqlnd, xml, xmlrpc, curl, gd, imagick, mbstring, opcache, soap, zip}

php8.0용 확장 프로그램 설치

dnf install -y php-{mysqlnd,pecl-imagick,pecl-imagick-devel,gd,intl,cli,mbstring,curl,php-pecl-zip}

사용 DNF 검색 이 명령은 PHP 8.1에서 사용 가능한 확장 패키지를 확인합니다.

dnf 검색 php81*

검색 결과, php81 관련 패키지가 너무 많다는 것을 알게 되었습니다. 이 패키지들은 어떤 용도로 사용되나요? 어떤 패키지를 설치해야 하고 어떤 패키지를 설치하지 말아야 할까요? 다음은 php8.1 확장 프로그램 설치 패키지에 대한 자세한 소개입니다.

PHP8.1이 준비되었습니다. 어떤 확장 패키지가 설치되어 있는지 확인해 보겠습니다.

rpm -qa|grep php
구글 클라우드 PHP+Mysql+Nginx 설치

또한 사용할 수 있습니다 php --모듈 설치된 PHP 확장 기능을 쿼리하는 명령입니다.

php --모듈

PHP 확장 기능을 설치해야 하는 경우, dnf -y install 명령과 설치하려는 확장 기능의 이름을 함께 사용하면 됩니다.

예를 들어, PHP용 mysqlnd 확장을 설치하려면:

dnf install -y php-mysqlnd
구글 클라우드 PHP+Mysql+Nginx 설치

위의 모든 것이 설치된 후 다음으로 PHP 시작을 설정합니다.

systemctl에서 php-fpm을 활성화하세요

사용 시스템ctl 명령어는 편리하고 빠르게 관리할 수 있습니다. 새로운 PHP 패키지 업데이트가 있는 경우 다음 명령어를 사용하여 최신 버전으로 업그레이드할 수 있습니다.

DNF 업그레이드

좋습니다. 이제 PHP8.1 설치가 공식적으로 완료되었습니다. PHP 서비스를 시작하고 PHP가 작동하도록 하세요.

systemctl enable php-fpm --now
서버가 시작된 후 PHP8.1의 실행 상태를 확인하세요.
systemctl 상태 php-fpm

구글 클라우드 PHP+Mysql+Nginx 설치

상태 표시등이 녹색이면 PHP가 정상적으로 작동하고 있음을 의미합니다. 수정해야 할 PHP 설정 파일이 몇 가지 있습니다.

PHP8 구성

php.ini 파일 수정

php.ini 파일은 PHP의 핵심 설정 파일이므로 주의해서 수정하세요!

php.ini 파일 위치 찾기

구글 클라우드 PHP+Mysql+Nginx 설치
php -info | grep php.ini

php.ini 파일 편집

사용 6세 php.ini 파일을 편집하려면 명령을 사용하거나, SFTP를 사용하여 서버에 로그인한 후 메모장을 사용하여 php.ini 파일을 편집하고 수정하세요. SFTP 클라이언트로는 Xftp를 사용하는 것이 좋습니다.

vi /etc/php.ini

파일의 변수를 다음 값으로 수정합니다.

#PHP 오류 인쇄: display_errors = on #메모리 사용량을 256M으로 늘리세요: memory_limit = 256M #파일 업로드 크기, 기본값이 너무 작아서 1G, 즉 1024M으로 변경하는 것이 좋습니다: upload_max_filesize = 1024M #최대 폼 크기, 48M이 권장됩니다: post_max_size = 48M #각 스크립트의 최대 실행 시간(초): max_execution_time=600 #허용 가능한 GET/POST/COOKIE 입력 변수 수: max_input_vars = 3000 #각 스크립트가 요청 데이터를 구문 분석하는 데 소요되는 최대 시간: max_input_time = 1000

수정이 완료되면 저장하고 종료한 후 PHP의 www.conf 파일을 수정합니다.

개정하다 http://www.conf 문서

http://www.conf는 php-fpm 프로세스 서비스의 설정 파일입니다.

사용자 그룹 및 사용자 이름 수정, 설정 http://www.conf 파일에 대한 사용자 그룹 권한입니다. http://www.conf 접근 권한 설정 -R, 사용자 및 사용자 그룹은 nginx로 설정

chown nginx:nginx -R /etc/php-fpm.d/www.conf

편집하다 http://www.conf 파일, 사용자 및 사용자 그룹 변수를 수정합니다.

vi /etc/php-fpm.d/www.conf

할 것이다 http://www.conf 파일의 변수 사용자 그리고 그룹 모두 수정됨 nginx.

편집 후 확인 듣다 변하기 쉬운:

참고: 변수 듣다, 기본값은 듣기 = /run/php-fpm/www.sock Nginx에서 PHP에 접근하기 위해 127.0.0.1:9000을 사용하려면 다음을 변경해야 합니다. 듣다 변수를 listen = 127.0.0.1:9000으로 변경하세요. 그렇지 않으면 Nginx에서 127.0.0.1:9000을 사용하여 PHP에 접근할 수 없습니다.

다음으로, 요청 시간 초과 값을 수정하고, 단일 요청의 시간 초과를 수정하고, 앞의 세미콜론을 제거하고 값을 600으로 변경합니다.

요청_종료_시간 초과 = 600

수정이 완료되면 :wq를 눌러 파일을 저장하고 종료합니다. www.conf 파일이 수정되었습니다.

세션 권한 수정

예를 들어, /var/lib/php/session의 사용자 그룹과 권한을 수정합니다.

cd /var/lib/php chown nginx:nginx ./session chmod -R 777 ./session
systemctl php-fpm 다시 로드

이제 PHP가 설치 및 구성되었습니다. PHP 서비스를 다시 시작하거나 서버를 재부팅하세요.

참고: Nginx가 PHP 접근을 지원하지 않는 경우, listen 변수가 Nginx 설정과 일치하는지 확인하세요. 127.0.0.1:9000을 사용하여 접근하는 경우, 방화벽에서 9000번 포트가 열려 있는지 확인하세요.

넷스탯 -lntp

PHP 콘솔 명령어

#PHP 시작: systemctl start php-fpm #중지: systemctl stop php-fpm #다시 시작: systemctl restart php-fpm #수정된 구성을 적용하려면 다시 시작: systemctl reload php-fpm #시작 시 시작하도록 설정: systemctl enable php-fpm #PHP의 현재 상태: systemctl status php-fpm

PHP 제거

dnf를 사용하여 설치된 PHP 서비스를 제거하려면 다음 uninstall 명령을 실행하면 됩니다.

참고: PHP를 수동으로 컴파일하고 설치한 경우,제거하다 uninstall 명령이 잘못되었습니다. 먼저 PHP 메인 프로그램을 제거한 후, 시스템 자체의 PHP-common.php 파일을 제거하세요.

dnf로 php 삭제하기 dnf remove -y php-common

SELinux 비활성화

존재하다 센트OS 8 영구적으로 비활성화 셀리눅스

vi /etc/selinux/config

할 것이다 셀리눅스 속성은 다음과 같이 설정됩니다. 장애가 있는 그런 다음 서버를 다시 시작하세요.

Google Cloud Server 구성Nginx 구성

다음은 nginx1.20.1을 예로 들어보겠습니다.

nginx.conf를 편집하세요

웹사이트에 정상적으로 접속하려면 Nginx의 핵심 설정 파일인 Nginx 설정 파일 nginx.conf를 편집하고 수정해야 합니다. 6세 /etc/nginx/nginx.conf를 편집하는 명령입니다.

vi /etc/nginx/nginx.conf

다음은 참조용 간단한 nginx.conf 파일의 예입니다.

사용자 nginx; #사용자 또는 그룹 구성, 기본값은 nobody입니다.worker_processes auto; #생성 가능한 프로세스 수, 기본값은 1입니다.pid /run/nginx.pid; #실행 중인 nginx 프로세스의 저장 주소 지정 error_log 파일 /var/log/nginx/error.log error; #오류 로그 경로 및 수준을 지정합니다.이 설정은 글로벌 블록, http 블록, 서버 블록에 배치할 수 있으며 수준은 다음과 같습니다.debug|info|notice|warn|error|crit|alert|emerg, 수준이 높을수록 기록이 적고 일반적으로 오류가 설정됩니다.#동적 모듈을 로드합니다./usr/share/nginx/modules/*.conf를 포함합니다.#작업 모드 및 연결 수의 상한-이벤트 글로벌 설정 이벤트 { accept_mutex on; #패닉을 방지하기 위해 네트워크 연결 직렬화를 설정합니다. 기본값은 켜짐 multi_accept on; #프로세스가 동시에 여러 네트워크 연결을 허용하는지 여부를 설정합니다. 기본값은 꺼짐 #epoll을 사용합니다. #이벤트 기반 모델, select|poll|kqueue|epoll|resig|/dev/poll|eventport worker_connections 4096; #단일 작업자 프로세스에 허용되는 최대 연결 수, 기본값은 512입니다. } #http 서버 구성 파일 블록 http { log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #로그 형식 사용자 정의 access_log /var/log/nginx/access.log myFormat; #액세스 로그 경로 및 형식 설정. combined는 로그 형식의 기본값입니다. rewrite_log 켜기; #access_log 끄기; #서비스 액세스 로그 취소 sendfile 켜기; #sendfile을 통한 파일 전송 허용, 기본값은 끄기이며 http 블록, 서버 블록, 위치 블록에 있을 수 있습니다. sendfile_max_chunk 0; #프로세스당 호출당 전송 횟수는 설정된 값보다 클 수 없습니다. 기본값은 0이며 상한이 없습니다. keepalive_timeout 1000; #연결 시간 초과, 기본값은 75초이며 http, 서버, 위치 블록에 있을 수 있습니다. client_max_body_size 1024m; types_hash_max_size 4096; tcp_nodelay 켜기; tcp_nopush 켜기; default_type application/octet-stream; #기본 파일 유형, 기본값은 text/plain fastcgi_connect_timeout 3000; #fastcgi 연결 시간 초과, 기본값은 60초 fastcgi_send_timeout 3000; #nginx 프로세스가 fastcgi 프로세스에 요청을 보내는 시간 초과, 기본값은 60초 fastcgi_read_timeout 3000; #fastcgi 프로세스가 nginx 프로세스에 출력을 보내는 시간 초과, 기본값은 60초 gzip on; #gzip 압축 스위치, 켜짐 Gzip 압축 켜기, 기본값은 꺼짐 gzip_min_length 1k; # gzip 압축을 위한 최소 파일 형식 활성화, 설정된 값보다 작은 파일은 압축되지 않음 gzip_comp_level 9; # gzip 압축 수준, 1-9, 숫자가 클수록 압축률이 좋아지지만 CPU 시간도 더 많이 차지합니다.gzip_buffers 4 16k; # 압축에 필요한 버퍼 크기를 설정합니다.gzip_http_version 1.1; # gzip 압축을 위한 HTTP 프로토콜 버전을 설정합니다.페이로드를 사용하지 않으면 무시할 수 있습니다.gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png application/vnd.ms-fontobject font/ttf font/opentype font/x-woff image/svg+xml; # 압축할 파일 형식입니다.javascript에는 여러 형식이 있습니다.값은 mime.types 파일에서 찾을 수 있습니다.gzip_vary on; # http 헤더에 Vary: Accept-Encoding을 추가할지 여부에 따라 gzip_disable "MSIE [1-6]\."을 활성화하는 것이 좋습니다. # IE 6 gzip 비활성화 gzip_proxied off; ssl_session_cache shared:le_nginx_SSL:10m; ssl_session_timeout 1440m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers off; ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384"; include /etc/nginx/mime.types; # 파일 확장자 및 파일 형식 매핑 테이블. MIME 유형(메일 지원 유형)을 설정합니다. 유형은 mime.types 파일에 정의되어 있습니다. include /etc/nginx/conf.d/*.conf; # /etc/nginx/conf.d 디렉토리에서 모듈식 구성 파일을 로드합니다. }

 

FastCGI에 연결

PHP 스크립트를 사용하여 웹사이트를 구축하려면 PHP를 지원하도록 Nginx도 설정해야 합니다.

다음은 PHP 서비스 연결 모듈을 소개합니다. /etc/nginx/default.d 카탈로그, 보기 php.conf 이 파일은 PHP가 설치될 때 자동으로 생성되므로 수정할 필요가 없습니다. FastCGI 서버로 PHP 스크립트를 전달하는 데 사용됩니다.

# PHP 스크립트를 FastCGI 서버로 전달합니다. # # 소켓 구성은 conf.d/php-fpm.conf를 참조하세요. # 인덱스 index.php index.html index.htm; 위치 ~ \.(php|phar)(/.*)?$ { fastcgi_split_path_info ^(.+\.(?:php|phar))(/.*)$; fastcgi_intercept_errors on; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_pass php-fpm; }

입력하다 /etc/nginx/conf.d 디렉토리, 디렉토리에서 php-fpm.conf 파일을 변경할 필요는 없습니다. php-fpm.conf PHP8.1을 설치하면 자동으로 생성됩니다.php.confFastCGI 서버로 전달하는 데 사용되는 PHP 스크립트의 일부입니다.

# PHP-FPM FastCGI 서버 # 네트워크 또는 유닉스 도메인 소켓 구성 업스트림 php-fpm { server unix:/run/php-fpm/www.sock; }

 

존재하다 /etc/nginx/conf.d 카탈로그의 새로운 소식 기본.conf 파일을 만들거나 사용자 정의 .conf 파일을 만듭니다. server{...}에는 웹사이트 구성 내용이 들어 있습니다.

이는 테스트용 예시일 뿐입니다. 실제 운영 환경에서의 서버 구성은 훨씬 더 복잡합니다.

서버 { listen 443 ssl http2; listen [::]:443 ssl http2; 서버_이름 XXX.com; root /home/www; index index.php index.html index.htm; ssl_certificate "/etc/letsencrypt/live/***/fullchain.pem"; # ssl 인증서 주소 ssl_certificate_key "/etc/letsencrypt/live***/privkey.pem"; # ssl 인증서 주소 ssl_session_cache 공유:SSL:1m; ssl_session_timeout 10m; # 캐시 유효 기간 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; # 암호화 알고리즘 ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # 보안 링크 선택적 암호화 프로토콜 ssl_prefer_server_ciphers 켜짐; # 서버의 기본 알고리즘 사용 # TLSv1.3에서 0-RTT 구성 ssl_early_data 켜짐; ssl_stapling 켜짐; ssl_stapling_verify 켜짐; add_header Strict-Transport-Security "max-age=31536000"; /etc/nginx/default.d/*.conf를 포함함; # /etc/nginx/default.d에서 기본 서버 블록 구성 파일을 로드함. # 의사 정적 페이지 위치 / { try_files $uri $uri/ /index.php?$args; } # 역방향 프록시 위치 /update32/ { proxy_redirect off; proxy_read_timeout 1200s; proxy_pass http://127.0.0.1:20892; proxy_http_version 1.1; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header 업그레이드 $http_upgrade; proxy_set_header 연결 "업그레이드"; proxy_set_header Early-Data $ssl_early_data; } }

웹 저장소 디렉토리에 대한 액세스 권한을 추가합니다.

chown nginx:nginx -R /홈/www

구성이 완료되면 /home/www 디렉토리에 새 index.php 파일을 만들고 다음 코드를 붙여넣습니다.

<?php
phpinfo();
?>

이것은 PHP 프로브 코드입니다. index.php에 코드를 붙여넣고 파일을 저장한 후 서버를 루트 권한으로 다시 시작하세요.
Nginx 공식 PHP FastCGI 예제를 방문하세요
Nginx에서 발생한 문제:
Windows에서 SFTP를 사용하여 업로드할 때 공백 변환 문제로 인해 "nginx: [emerg] unknown directive " " in /etc/nginx/conf.d/" 오류가 발생합니다. Linux에서 VI 편집을 사용할 때는 이 문제가 발생하지 않습니다.

Nginx 제거

dnf를 사용하여 설치된 모든 nginx를 제거하려면 다음 uninstall 명령을 실행하면 됩니다.

dnf nginx 제거

Nginx 콘솔 명령어

시작: systemctl start nginx 중지: systemctl stop nginx 재시작(수정된 구성을 적용하려면 nginx를 중지하지 마세요): systemctl reload nginx 재시작: systemctl restart nginx 시작 설정: systemctl enable nginx 시작 비활성화: systemctl disable nginx 서비스 상태 보기: systemctl status nginx

Nginx 설치는 여기서 끝났습니다. 이제 MYSQL 데이터베이스 서비스를 설치해 보겠습니다.

Google Cloud Server 구성 및 MySQL 설치

Centos8은 dnf를 사용하여 MySQL을 설치합니다. 먼저 MySQL이 시스템에 설치되어 있는지 확인하세요.

rpm -qa |grep -i mysql

이전에 서버에 MySQL을 설치한 적이 없다면 지금 설치하세요. 이전에 MySQL을 설치했다면 remove 명령을 사용하여 제거하세요!

먼저 데이터 소스에 어떤 버전이 있는지 확인하세요.

dnf 리스트 mysql*
구글 클라우드 PHP+Mysql+Nginx 설치
MySQL 설치

MySQL 8.0 설치

공식 Centos 소프트웨어 소스에는 8.0.26 버전만 포함되어 있습니다. 상위 버전을 설치하려면 다른 데이터 소스를 사용해야 합니다.

dnf -y mysql 서버 설치
구글 클라우드 PHP+Mysql+Nginx 설치
MySQL 설치

설치가 성공적으로 완료되면 MySQL을 시작한 다음 부팅 시에 시작되도록 설정합니다.

# MySQL 시작 systemctl start mysqld # 부팅 시작 설정 systemctl enable mysqld # 설치된 MySQL 버전 확인 mysqladmin --version

마지막으로 설치된 MySQL 8.0의 상태를 확인합니다.

systemctl 상태 mysqld
구글 클라우드 PHP+Mysql+Nginx 설치

좋아요, 녹색 불이 켜졌고 모든 것이 정상입니다! 다음으로 MySQL 서버를 구성하세요.

Google Cloud 서버 구성 MySQL

달리다 mysql_secure_installation 보안 관련 작업을 수행하고 MySQL 루트 암호를 설정하는 스크립트:

 sudo mysql_secure_installation
구글 클라우드 PHP+Mysql+Nginx 설치

VALIDATE PASSWORD COMPONENT는 비밀번호를 테스트하고 보안을 강화하는 데 사용할 수 있습니다. 비밀번호의 강도를 확인하고 사용자가 원하는 비밀번호만 설정할 수 있도록 합니다.
충분히 안전합니다. '비밀번호 확인' 구성 요소를 설정하시겠습니까?

입력하다:와이 , Enter를 눌러 구성을 입력하세요.

Google Cloud Server 구성 Google Cloud 설치 PHP+Mysql+Nginx

비밀번호 확인 정책 수준을 선택하고 다음을 입력하세요. 0 (낮은)

새 비밀번호를 입력하세요. 비밀번호는 8자 이상이어야 하며 대문자, 소문자, 숫자, 특수문자를 포함해야 합니다. 설정한 비밀번호를 확인하세요.

구글 클라우드 PHP+Mysql+Nginx 설치

제공된 비밀번호를 계속 사용할지 확인하려면 다음을 입력하세요.와이

구글 클라우드 PHP+Mysql+Nginx 설치

기본적으로 MySQL 설치에는 사용자 계정을 생성하지 않고도 누구나 로그인할 수 있는 익명 사용자가 있습니다. 이는 테스트 및 설치 과정의 편의성을 위한 기능입니다. 운영 환경으로 전환하기 전에 이 기능을 제거해야 합니다.

익명 사용자를 제거하시겠습니까? 다음을 입력하세요. 와이

구글 클라우드 PHP+Mysql+Nginx 설치
일반적으로 root는 'localhost'에만 접속할 수 있습니다. 이렇게 하면 네트워크에서 root 비밀번호를 추측하는 것을 방지할 수 있습니다.

root를 사용하여 MySQL에 원격으로 로그인하는 것을 비활성화합니다. 다음을 입력하세요. N

구글 클라우드 PHP+Mysql+Nginx 설치

기본적으로 MySQL에는 누구나 접근할 수 있는 "test"라는 데이터베이스가 포함되어 있습니다. 이 데이터베이스 역시 테스트용으로만 사용되므로 운영 환경에 적용하기 전에 제거해야 합니다.

MySQL과 함께 제공되는 테스트 데이터베이스 입력을 제거합니다.와이

구글 클라우드 PHP+Mysql+Nginx 설치

권한 테이블을 다시 로드하면 지금까지 변경한 모든 내용이 즉시 적용됩니다.

권한 테이블을 다시 로드하려면 다음을 입력하세요.와이

MySQL 8.0이 기본적으로 설정되었습니다.문자 집합이므로 문자 집합이 더 이상 수정되지 않습니다. 이 단계에서 MySQL이 성공적으로 구성되었습니다!

MySQL 원격 로그인 구성

참고: 루트 계정에 대한 원격 로그인을 설정해야 하는 경우 이전 단계를 반복한 다음 루트 원격 로그인을 허용하고 이를 Y로 설정합니다.

다음 사용 mysql -u 루트 -p MySQL에 로그인하는 명령을 실행하고 root 사용자의 호스트 필드를 '%'로 설정합니다. 즉, root의 모든 IP 주소에서 로그인 요청을 수락한다는 의미입니다.

UPDATE USER SET host='%' WHERE user='root';

설정 후 MySQL 서비스를 다시 시작합니다.

systemctl 재시작 mysqld

MySQL 콘솔 명령어

시작: systemctl start mysqld 중지: systemctl stop mysqld 재시작: systemctl restart mysqld 시작 설정: systemctl enable mysqld 시작 비활성화: systemctl disable mysqld 서비스 상태 보기: systemctl status mysqld

이제 모든 설치가 완료되었습니다! php+mysql+nginx 리눅스 환경이 성공적으로 구축되었습니다.

1/5 - (1 투표)

댓글1개

  1. 알려지지 않은 알려지지 않은 알려지지 않은 알려지지 않은

    강력 추천: Google Cloud Server는 지금까지 알려진 가장 강력한 무료 클라우드 서버로, 대부분 웹사이트의 실제 요구 사항을 충족할 수 있습니다!

댓글남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다