우수한 소프트웨어와 실용적인 튜토리얼
Amazon Cloud에 신청한 후에는 EC2 서버 인스턴스를 생성하고 웹 서버를 설정해야 합니다.
AWS 아마존 클라우드 웹 서버 구축 Amazon 클라우드 플랫폼에서 서버를 신청한 후에는 사용하기 전에 Amazon 클라우드 서버를 구성해야 합니다.리눅스가상 머신 인스턴스는 다음과 같습니다.레드햇 9 웹 서버를 구축하는 예시로 살펴보겠습니다. Red Hat Enterprise Linux 9는 AWS Amazon 클라우드에서 무료 패키지를 지원합니다. Amazon 클라우드에서 Red Hat 9를 구성하는 데는 추가 비용이 없습니다.
AWS Amazon Cloud Linux Red Hat 9 시스템 초기 구성
Red Hat Enterprise Linux 9 가상 머신 인스턴스가 활성화된 후에도 여전히 빈 시스템이므로 모든 환경을 구성해야 합니다.
다음은 2023년 1월 30일 Amazon Cloud Linux Red Hat 9 시스템의 초기 구성에 대한 튜토리얼입니다.
서버 루트 비밀번호 및 원격 로그인 수정
AWS EC2클라우드 서버가 생성되면 기본적으로 다음을 사용합니다. ec2-사용자 로그인한 계정에 여러 폴더에 대한 권한이 없습니다. 권한을 변경해야 합니다. 뿌리 최고 관리자 로그인.
참고: Linux Red Hat 9 운영 체제를 생성할 때 SSH 원격 제어를 위한 키 쌍을 생성해야 합니다. 생성 시 시스템은 기본적으로 "개인 키 파일 형식"으로 ".PPK"를 사용합니다. SSH 연결에 PuTTY를 사용하는 경우 여기에서 변경하지 마십시오. 일반적으로 사용되는 ".pem" 형식을 선택하면 서버에 SSH로 연결할 수 없습니다.
참고문헌:AWS에 로그인하기 위해 root 계정 SSH를 사용하는 방법
DNF 명령의 자동 업데이트를 설치하고 활성화합니다.
dnf-automatic 설치
dnf 설치 dnf-automatic
부팅 시 dnf-automatic을 시작하도록 설정합니다.
systemctl start dnf-automatic.timer
Red Hat 구독 권한이 없으면 이 단계에서 dnf 저장소를 업데이트할 수 없습니다.
개발 도구 패키지 그룹 설치
개발 도구 소프트웨어 패키지 그룹에는 Linux에서 일반적으로 사용되는 대부분의 명령과 도구 소프트웨어가 포함되어 있습니다.
dnf 그룹 설치 '개발 도구' -y
DNF 업데이트 시스템 패키지
dnf에서 시스템의 소프트웨어 패키지를 최신 버전으로 업데이트합니다.
dnf -y 업데이트
시스템 가상 메모리 구성
운영 체제 기본 설치 시 스왑 공간이 할당되지 않으므로 수동으로 추가해야 합니다. 운영 체제에 스왑 파일(스왑 공간 할당)이 구성되어 있지 않으면 메모리 로드 후 오류가 발생합니다.
사용 무료 -m 메모리 구성을 확인하려면 명령을 실행하세요. Swap 뒤의 숫자가 0이면 스왑 공간을 추가해야 합니다.
스왑 뒤에는 모두 0이 붙습니다. 스왑 가상 메모리를 만들어 봅시다!
지정된 크기의 미리 할당된 공간을 가진 파일을 생성합니다. 약 8G의 하드 디스크 공간을 시스템 가상 메모리로 설정합니다.
sudo dd if=/dev/zero of=/swapfile bs=1024 count=8388608
스왑 공간으로 지정하면 서버가 약간 느려질 수 있으니 양해 부탁드립니다.
파티션이 완료되면 ls 명령을 사용하여 파일 크기를 확인합니다.
ls -lh /스왑파일
크기를 확인한 후 스왑 파일의 권한을 변경해야 합니다.
sudo chmod 600 /스왑파일
작업 후 스왑파일을 포맷하세요.
sudo mkswap /swapfile
좋습니다. 이제 스왑파일이 생성되었으니 이를 활성화해 보겠습니다.
sudo swapon /swapfile
마지막으로, fstab 파일을 수정하여 재부팅 후 스왑이 자동으로 적용되도록 합니다.
sudo vi /etc/fstab
VI를 사용하여 /etc/fstab을 편집하고 다음 내용을 파일 끝에 추가합니다.
/스왑파일 스왑 스왑 sw 0 0
또는 echo 명령을 사용하여 추가하세요.
echo '/swapfile swap swap sw 0 0' | sudo tee -a /etc/fstab
설정이 완료되면 서버를 재부팅하세요.
스왑을 중지하려면 다음을 사용할 수 있습니다. 스왑오프 /스왑파일 , 스왑 파일을 삭제하는 명령은 다음과 같습니다. rm -ir /스왑파일.
서버 시간대 변경
서버 시간대를 Asia/Shanghai로 변경하면 사용할 수 있습니다. timedatectl 시간대를 쿼리하는 명령입니다.
sudo timedatectl set-timezone Asia/Shanghai
SELinux 비활성화
SELinux를 영구적으로 비활성화하고 SELinux 속성을 수정합니다. 장애가 있는 그런 다음 서버를 다시 시작하세요.
vi /etc/selinux/config
AWS, Red Hat 중국어 언어 팩 설치
Red Hat에 중국어 패키지를 설치하려면 dnf 명령을 사용하여 중국어 패키지를 검색하세요.
DNF 검색 언어팩
Red Hat에서 간체 중국어 설치 패키지는 langpacks-zh_CN.noarch입니다.
dnf 명령어를 통해 직접 설치:
dnf 설치 langpacks-zh_CN.noarch
설치에 동의하려면 Y를 누르세요. 그러면 설치 패키지가 자동으로 다운로드되어 설치됩니다.
중국어 글꼴을 설치한 후 시스템 언어를 변경하세요.
vi /etc/locale.conf
원본 내용을 다음으로 바꾸세요.LANG="zh_CN.UTF-8"
마지막으로 다음 명령을 전달합니다.로케일 -a 확인 명령 zh_CN 설치가 성공적으로 완료되었나요? 그 후에는재부팅 서버를 다시 시작하는 명령입니다.
Red Hat 9에 RPM 저장소 설치
Remi의 RPM 저장소다음 명령을 실행하여 활성화하세요.에펠그리고 Remi 저장소:
Remi 저장소 활성화
sudo dnf install epel-release yum-utils
sudo dnf -y 설치 https://rpms.remirepo.net/enterprise/remi-release-9.rpm
EPEL 저장소 활성화
EPEL 9가 공식적으로 출시되었습니다. EPEL 저장소 설치는 매우 간단하며 다음 명령을 실행하여 수행할 수 있습니다.
sudo dnf -y 설치 https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
보안 그룹 방화벽 설정
방화벽을 활성화하세요:서비스 iptables 시작
방화벽을 끕니다.서비스 iptables 중지
기본 방화벽:chkconfig iptables 끄기
RedHat9의 기본 방화벽은 닫혀 있으므로 서버에 설정할 필요가 없습니다. 다음으로 AWS 클라우드 플랫폼에 투명 방화벽을 설정해야 합니다. 물론 필요한 포트를 별도로 열 수도 있습니다. 투명 방화벽은 테스트 편의를 위한 것입니다.
AWS 클라우드 플랫폼의 보안 그룹 섹션에서 EC2 서버를 구성한 해당 보안 그룹에 액세스하려면 클릭합니다.
기본적으로 열려 있는 포트는 22, 80, 443뿐이고, 투명 방화벽은 모든 인바운드 포트를 열어두고 있습니다.
오른쪽 상단 모서리에서 인바운드 규칙 편집을 클릭한 다음, 인바운드 규칙 편집에서 규칙 추가를 클릭하고 유형으로 모든 트래픽을 선택하고, 소스 정보로 모든 위치 ipv4를 선택한 다음, IP 주소에 0.0.0.0/0을 입력합니다.
규칙 저장을 클릭하면 방화벽이 투명 방화벽으로 설정되어 서버의 모든 포트가 열립니다.
RHEL 9에서 Red Hat 구독을 등록하는 방법
위에서 Remi와 EPEL의 RPM 저장소를 설치한 후에는 공식 저장소를 무시해도 됩니다. 여기에서 등록 여부를 선택할 수 있습니다.
RHEL 9 설치 중에 시스템을 등록하지 않은 경우 루트 사용자로 다음 명령을 적용하여 지금 등록할 수 있습니다.
Red Hat 사용자가 아닌 경우 다음으로 이동하세요.Red Hat 공식 웹사이트 등록:https://www.redhat.com/wapps/ugc/register.html
사용자 등록 시 실제 이메일 주소를 입력해 주세요. 등록 후 이메일에 확인 이메일 링크가 포함되어 있습니다. 계정은 활성화 후에만 적용됩니다. Red Hat 사용자 등록이 완료되면 Xshell로 돌아가 로그인하세요.
구독 관리자 등록
Amazon Cloud 구성 LNMP 환경
LNMP 설치(Nginx/MySQL/PHP)
Linux, PHP, MySQL을 사용하는 것의 장점에 대해서는 많은 것을 말할 필요가 없습니다.
Nginx는 리눅스용 작고 효율적인 웹 서버 소프트웨어입니다. 이고르 시소예프가 러시아에서 두 번째로 많은 방문자를 보유한 웹사이트인 Rambler.ru를 위해 개발했습니다. Nginx는 수년간 러시아의 여러 대형 웹사이트에서 운영되어 왔습니다. 현재 국내외 여러 포털과 업계 웹사이트에서도 매우 안정적인 Nginx를 사용하고 있습니다.
Nginx는 매우 안정적이고, 기능이 풍부하며, 설치와 구성이 쉽고, 시스템 리소스가 적게 필요합니다.
수동으로 설치하기에는 너무 게으르다면LNMP 환경당신은 사용할 수 있습니다LNMP 원클릭 설치 패키지다음 내용은 학습 참고용일 뿐입니다.
AWS PHP 설치
클라우드 서버를 구성할 때 PHP는 필수적입니다. 대부분의 웹사이트는 PHP로 작성됩니다. PHP가 설치되어 있지 않으면 서버가 웹사이트에서 PHP 파싱을 수행할 수 없습니다.
remi 소프트웨어 저장소에서 최소 PHP 버전은 7.4이고 최대 버전은 8.2입니다. Red Hat 공식 소스에서는 PHP 8.1의 안정 버전만 제공됩니다. 더 낮은 버전의 PHP를 설치하려면 Remi 소스로 전환하여 설치할 수 있습니다.
먼저 시스템을 확인하세요 앱스트림 RHUI의 메타데이터(RPM).
dnf 모듈 목록 php
저장소에서 PHP 모듈을 활성화합니다.
dnf 모듈 활성화 php:remi-7.4
Y를 입력하면 php7.4의 모듈 스트림이 활성화됩니다.
당신이 원한다면PHP 모듈 스트림 재설정, 다음 명령을 사용할 수 있습니다:
dnf 모듈 php 재설정
다음으로, PHP를 직접 설치할 수 있습니다. PHP7.4와 관련 종속성을 설치해 보겠습니다.
dnf php 설치 php-mysqlnd php-gd
Y를 입력한 후 php7.4 및 관련 종속 패키지를 설치합니다.
php -v
PHP가 올바르게 설치되었는지 확인하세요.
mb_strlen 함수가 없습니다. mbstring(mb_strlen)을 설치하는 방법
mb_strlen 함수는 php7.2에 기본적으로 설치되어 있지 않습니다. dnf를 사용하여 설치해야 합니다. 먼저 php-mbstring을 검색하세요.
dnf 검색 php-mbstring
검색하여 설치하세요.
dnf로 php-mbstring.x86_64 설치
PHP에 zip 확장 프로그램 설치
일부 웹 애플리케이션은 PHP의 ZIP 확장자를 필요로 합니다. php-pecl-zip을 설치해야 합니다.
dnf로 php-pecl-zip 설치
확장 프로그램이 설치된 후 PHP 서비스를 다시 시작하세요.
systemctl 재시작 php-fpm
PHP 구성
php7.4를 설치한 후에는 몇 가지 일반적인 구성이 필요합니다.
PHP 접근 권한을 수정하세요. PHP의 기본 접근 사용자는 Apache입니다.아파치사용자 여러분, 웹 서버로 nginx를 사용해야 하므로 Apache를 nginx로 변경해야 합니다.
vi /etc/php-fpm.d/www.conf
사용자 = nginx
그룹 = nginx
사용자와 그룹을 모두 nginx로 변경하세요. 수정 후 Esc 키와 :wq를 눌러 파일을 저장하고 종료하세요.
WordPress를 설치할 때 디렉토리를 생성할 수 없는 경우, wp 파일이 저장된 디렉토리의 사용자 그룹, nginx 사용자 그룹, PHP 사용자 그룹이 모두 같은 사용자 아래에 있는지 확인하세요.
웹 파일이 저장된 디렉토리의 사용자 접근 권한을 수정합니다.
chown -R nginx:nginx /var/www
주요 PHP 프로그램 구성 파일을 수정합니다.
vi /etc/php.ini
cgi.fix_pathinfo는 CGI에 대한 *실제* PATH_INFO/PATH_TRANSLATED 지원을 제공합니다. PHP의 이전 동작은 grok PATH_INFO가 아닌 SCRIPT_FILENAME으로 PATH_TRANSLATED를 설정하는 것이었습니다. PATH_INFO에 대한 자세한 내용은 다음을 참조하세요.CGI 사양을 참조하세요환경 변수 값을 1로 설정하면 PHP CGI가 경로를 사양에 맞게 수정합니다. 값을 0으로 설정하면 PHP가 이전과 동일하게 작동합니다. 기본값은 1입니다. 스크립트에서 PATH_TRANSLATED 대신 SCRIPT_FILENAME을 사용하도록 수정해야 합니다.http://php.net/cgi.fix-pathinfo
cgi.fix_pathinfo = 1이 0으로 변경되었습니다.
업로드할 수 있는 파일의 최대 허용 크기입니다.
http://php.net/upload-max-filesize
upload_max_filesize = 2M 파일 업로드 크기, 기본값이 너무 작으므로 1024M으로 변경하는 것이 좋습니다.
이 지시어는 PHP에서 오류, 메모 및 경고를 출력할지 여부를 제어합니다. 오류 출력은 개발 중에는 매우 유용하지만, 운영 환경에서는 매우 위험할 수 있습니다. 오류를 유발하는 코드에 따라 데이터베이스 사용자 이름 및 비밀번호와 같은 민감한 정보가 애플리케이션 외부로 유출될 수 있으며, 그보다 더 심각한 문제가 발생할 수도 있습니다.
운영 환경에서는 오류를 stdout으로 보내는 대신 로깅하는 것이 좋습니다.
가능한 값:
off = 오류를 표시하지 않음
stderr = 오류를 STDERR에 표시합니다(CGI/CLI 바이너리에만 영향을 미칩니다!)
On 또는 stdout = STDOUT에 오류 표시
기본값: 켜짐
개발 가치:
제작 가치: 꺼짐
http://php.net/display-errors
display_errors = Off 오류 인쇄, On으로 변경
PHP가 허용하는 POST 데이터의 최대 크기입니다.
제한을 비활성화하려면 값을 0으로 설정할 수 있습니다. enable_post_data_reading을 통해 POST 데이터 읽기가 비활성화된 경우 이 값은 무시됩니다.
http://php.net/post-max-size
post_max_size = 8M 최대 폼 크기입니다. 32M으로 변경하는 것이 좋습니다.
각 스크립트의 최대 실행 시간(초)
http://php.net/max-execution-time
참고: CLI SAPI의 경우 이 지시어는 0으로 하드코딩됩니다.
max_execution_time=30 PHP 스크립트 최대 실행 시간, 300 이상으로 변경
세션 권한 수정:
예를 들어, /var/lib/php/session의 사용자 그룹과 권한을 수정합니다.
cd /var/lib/php chown nginx:nginx ./session chmod -R 777 ./session
PHP가 구성되었습니다. 마지막 단계는 부팅 시 서비스가 시작되고 실행되도록 설정하는 것입니다.
systemctl에서 php-fpm을 활성화하세요
systemctl start php-fpm
일반적인 작업 명령:
PHP를 다시 시작하세요:systemctl 재시작 php-fpm
PHP 시작:systemctl start php-fpm
PHP를 끕니다:systemctl stop php-fpm
PHP 상태:systemctl 상태 php-fpm
PHP 버전 다운그레이드 및 업그레이드
일부 웹사이트 프로그램은 유지 관리가 어렵고 호환성이 낮으며, 낮은 버전의 PHP만 지원합니다. 이러한 웹 요구 사항을 충족하고 상호 호환성을 확보하려면 PHP 버전을 낮춰야 합니다. 예를 들어, 일부 PHP 프로그램은 암호화에 SG11을 사용합니다.
SG11은 SourceGuardian 11의 약자입니다. 소스가디언 공식버전이 SourceGuardian 13으로 업데이트되었습니다. 가장 중요한 점은 두 버전의 파일이 보편적이지 않고, SG11의 PHP 암호화의 가장 높은 버전은 PHP 7.3이므로 SG11 웹 프로그램을 설치해야 할 때 PHP 버전은 7.3보다 높을 수 없다는 것입니다.
참고: PHP 7.3과 같은 이전 버전의 PHP를 설치하려면 먼저 소프트웨어 소스도 동시에 다운그레이드해야 합니다. remi-release-9.rpm에는 PHP 7.4보다 낮은 버전이 없으므로 remi-release-9.rpm을 remi-release-8.rpm으로 다운그레이드하세요.
Remi 저장소 다운그레이드
sudo dnf install epel-release yum-utils
sudo dnf -y 설치 https://rpms.remirepo.net/enterprise/remi-release-8.rpm
먼저 PHP-FPM과 Nginx 서비스를 중지해야 합니다.
systemctl stop php-fpm
systemctl nginx 정지
서비스가 중지된 후에는 /etc/php.ini 파일을 로컬에 다운로드하여 저장하세요. 그렇지 않으면 다운그레이드한 후 php.ini 파일을 다시 수정해야 합니다.
yum-utils가 설치되어 있지 않으면 yum-utils를 설치해야 합니다.
yum-utils는 yum과 통합되어 다양한 방식으로 yum의 기본 기능을 확장하는 유틸리티 모음으로, yum을 더욱 강력하고 사용하기 쉽게 만들어줍니다.
dnf install yum-utils -y
서버에 설치된 PHP를 제거하고 제거하세요
dnf php\* 제거
PHP7.3 설치
PHP 저장소에 있는 PHP 모듈을 확인하세요
dnf 모듈 목록 php
이전 모듈 흐름이 php7.4를 활성화했기 때문에 php7.3을 설치하려면 PHP 모듈을 재설정해야 합니다.
dnf 모듈 php 재설정
php7.3 모듈 스트림을 활성화합니다.
dnf 모듈 활성화 php:7.3
PHP7.3 모듈 스트림이 활성화되면 PHP7.3을 설치하세요.
dnf php 설치 php-mysqlnd php-gd
php -v name 명령어를 사용하여 PHP 버전을 확인하세요. php7.3으로 업데이트되었습니다.
php7.3을 설치한 후, 이전에 백업해둔 php.ini 파일을 /etc/php.ini로 덮어쓰고, /etc/php-fpm.d/www.conf 파일에 있는 사용자 및 사용자 그룹 이름을 nginx로 수정합니다.
vi /etc/php-fpm.d/www.conf
사용자 = nginx
그룹 = nginx
위의 작업을 완료한 후 마지막으로 php와 nginx 서비스를 시작합니다.
systemctl start php-fpm
systemctl nginx 시작
PHP7.2 설치
PHP 7.x 패키지는 여러 저장소에서 제공됩니다. 여기서는 다음을 사용합니다. 레미 저장소PHP를 포함한 다양한 소프트웨어 패키지의 최신 버전을 제공합니다.
시스템에서 소프트웨어 저장소가 활성화되어 있는지 확인하세요
sudo yum repolist
그 후 저장소에서 php 모듈을 확인하세요.
dnf 모듈 목록 php
remi-7.2를 설치하려면 PHP 모듈을 재설정해야 합니다.
dnf 모듈 php 재설정
모듈을 재설정한 후 remi-7.2의 모듈 스트림을 선택하세요.
dnf 모듈 활성화 php:remi-7.2
php remi-7.2 설치를 시작해 봅시다
dnf 설치 php php-common php-opcache php-mcrypt php-cli php-gd php-curl php-mysqlnd
AWS에 nginx 설치
다음 명령을 실행하여 사용 가능한 nginx 모듈 스트림 목록을 가져옵니다.
dnf 모듈 목록 nginx
시스템은 기본적으로 nginx 버전 1.14를 사용합니다. 상위 버전을 설치하려면 nginx 모듈을 재설정해야 합니다.
dnf 모듈 nginx 재설정
모듈을 재설정한 후 설치할 버전을 선택할 수 있습니다. 예를 들어 1.20 버전을 설치하려면 1.20 버전의 모듈 스트림을 활성화하기만 하면 됩니다.
dnf 모듈 활성화 nginx:1.20
모듈 흐름만 활성화되어 있습니다. dnf install 명령을 사용하여 nginx 버전 1.20을 설치하세요.
dnf install nginx -y
nginx를 설정하여 nginx 서비스를 시작하고 실행합니다.
systemctl에서 nginx 활성화
systemctl nginx 시작
설치 후 netstat을 사용하여 현재 포트 사용량을 확인하세요.
netstat -lntup
"-bash: netstat: 명령을 찾을 수 없습니다"라는 프롬프트가 나타나면 네트워크 구성 요소 도구 net-tools도 설치해야 합니다.
dnf install net-tools -y
포트를 확인해보면 80번 포트가 nginx에 의해 사용되고 있고 nginx 서비스가 성공적으로 설치되었음을 알 수 있습니다.
일반적인 명령:
다시 시작:
systemctl nginx 재시작
시작하다:
systemctl nginx 시작
폐쇄:
systemctl nginx 정지
상태:
systemctl 상태 nginx
Nginx 구성
Nginx 설정 파일 nginx.conf를 편집하세요. 웹사이트에 정상적으로 접속하려면 Nginx 설정 파일 nginx.conf를 편집해야 합니다. nginx.conf는 Nginx의 핵심 설정 파일입니다. VI 명령을 사용하여 /etc/nginx/nginx.conf를 편집하세요.
vi /etc/nginx/nginx.conf
#사용자 또는 그룹 user nginx를 구성합니다. #생성 가능한 프로세스 수를 지정합니다. 기본값은 1입니다. worker_processes auto; #오류 로그 경로와 수준을 지정합니다. 이 설정은 전역 블록, http 블록, 서버 블록에 적용할 수 있습니다. 수준은 다음과 같습니다. debug|info|notice|warn|error|crit|alert|emerg. 수준이 높을수록 기록되는 레코드 수가 줄어듭니다. 일반적으로 오류 error_log /var/log/nginx/error.log 오류가 설정됩니다. #실행 중인 nginx 프로세스의 저장 주소를 지정합니다. 파일 pid는 /var/run/nginx.pid입니다. #동적 모듈을 로드합니다. /usr/share/nginx/modules/*.conf 포함; #작업 모드 및 연결 수 상한 - 이벤트전역 설정 이벤트 { #단일 작업 프로세스에 허용되는 최대 연결 수. 기본값은 512, worker_connections는 1024입니다. } #http 서버 구성 파일 블록 http { #파일 확장자 및 파일 형식 매핑 테이블. MIME 유형(메일 지원 유형)을 설정합니다. 이 유형은 mime.types 파일에 정의되어 있습니다. /etc/nginx/mime.types를 포함합니다. #기본 파일 형식. 기본값은 text/plain입니다. default_type application/octet-stream; #사용자 정의 로그 형식 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; #액세스 로그 경로와 형식을 설정합니다. combined는 로그 형식의 기본값입니다. access_log /var/log/nginx/access.log main; #sendfile을 사용하여 파일을 전송할 수 있도록 합니다. 기본값은 꺼짐이며 http 블록, 서버 블록, 위치 블록에 있을 수 있습니다. sendfile on; #tcp_nopush on; #연결 시간 초과, 기본값은 75초이며 http, server, location 블록에 있을 수 있습니다. keepalive_timeout 65; #gzip 압축 스위치, 켜짐: Gzip 압축을 켜고, 기본값: 꺼짐: gzip을 끕니다. #gzip 압축에 사용할 최소 파일 크기를 설정합니다. 설정된 값보다 작은 파일은 압축되지 않습니다. gzip_min_length 10k; #gzip 압축 수준(1~9). 숫자가 클수록 압축률이 높아지지만 CPU 사용량이 늘어납니다. gzip_comp_level 6; #압축에 필요한 버퍼 크기를 설정합니다. gzip_buffers 32 4k; #gzip 압축에 사용할 HTTP 프로토콜 버전을 설정합니다. 부하 없이 사용할 수 있습니다. gzip_http_version 1.1; #압축할 파일 형식을 설정합니다. JavaScript에는 다양한 형식이 있습니다. 값은 mime.types 파일에서 확인할 수 있습니다. 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; # http 헤더에 Vary: Accept-Encoding을 추가할지 여부에 따라 gzip_vary를 켜는 것이 좋습니다. # /etc/nginx/conf.d 디렉터리에서 모듈식 구성 파일을 로드합니다. /etc/nginx/conf.d/*.conf를 포함합니다. }
위는 Nginx의 비교적 간단한 기본 설정입니다. 서버 웹사이트 설정은 /etc/nginx/conf.d/ 디렉터리에 저장됩니다.
다음으로, 프로덕션 환경에 맞게 서버 웹사이트 구성을 편집합니다.
# 도메인 이름 포트 301 리디렉션 https 서버 { 서버 이름 www.uzvod.com; # 웹사이트의 도메인 이름은 여러 개일 수 있으며 공백으로 구분합니다. 301 http://uzvod.com을 반환합니다. $ 요청_uri; } # 예비 구성 Nginx에 아직 SSL 인증서가 없으므로 루트 도메인 이름으로 301 리디렉션합니다. # 웹사이트 구성 코어 블록 서버 { 서버 이름 uzvod.com; 루트 /var/www/uzvod; 인덱스 index.php index.html index.htm; 위치 ~* ^/(upload|vendor|thinkphp|extend|addons|application)/.*\.(php|php5)$ { 모두 거부; } /etc/nginx/default.d/*.conf를 포함합니다. # /etc/nginx/default.d에서 기본 서버 블록 구성 파일을 로드합니다. # 의사 정적 페이지 위치 / { if (!-e $request_filename) { ^/index.php(.*)$ /index.php?s=$1 last를 다시 작성합니다. ^/admin.php(.*)$ /admin.php?s=$1 last를 다시 작성합니다. ^/api.php(.*)$ /api.php?s=$1 last를 다시 작성합니다. ^(.*)$ /index.php?s=$1 last를 다시 작성합니다. break; } } }
구성을 추가한 후 nginx 서비스를 다시 시작하세요.
systemctl nginx 재시작
새 테스트 페이지 index.php를 만들고 다음 내용을 파일에 복사하세요. 이 파일은 PHP 프로브 파일입니다.
디렉토리 권한 재구성
chown -R nginx:nginx /var/www
도메인 이름에 접속하면 웹사이트가 성공적으로 열립니다. SSL 도메인 이름 인증서를 온라인으로 신청해야 합니다. 그런 다음 nginx에서 도메인 이름 인증서를 구성하세요.
아래 인증서 로봇을 통해 SSL 도메인 이름 인증서가 성공적으로 신청되었습니다. 이제 Nginx에서 서버의 설정 파일을 수정하세요.
# 도메인 이름 포트 301 리디렉션 https 서버 { listen 80; listen [::]:80; 서버 이름 www.uzvod.com uzvod.com; # 웹사이트 도메인 이름, 여러 개 가능, 공백으로 구분 return 301 https://uzvod.com$request_uri; ssl_certificate /etc/letsencrypt/live/uzvod.com/fullchain.pem; # Certbot에서 관리 ssl_certificate_key /etc/letsencrypt/live/uzvod.com/privkey.pem; # Certbot에서 관리 include /etc/letsencrypt/options-ssl-nginx.conf; # Certbot에서 관리 ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; #는 Certbot에서 관리합니다. } #웹사이트 구성 코어 블록 서버 { listen 443 ssl http2; listen [::]:443 ssl http2; server_name uzvod.com; root /var/www/uzvod; index index.php index.html index.htm; http2_push_preload on; # HTTP/2 서버 푸시 활성화 ssl_certificate /etc/letsencrypt/live/uzvod.com/fullchain.pem; #는 Certbot에서 관리합니다 ssl_certificate_key /etc/letsencrypt/live/uzvod.com/privkey.pem; #는 Certbot에서 관리합니다 include /etc/letsencrypt/options-ssl-nginx.conf; #는 Certbot에서 관리합니다 ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; #는 Certbot에서 관리합니다. # TLS 버전을 활성화합니다(TLSv1.3은 향후 HTTP/3 QUIC에 필요합니다). # TLSv1.3의 0-RTT를 활성화합니다. #로 역방향 프록시할 때 $ssl_early_data를 사용하여 재생 공격을 방지합니다. # # @참조: https://nginx.org/en/docs/http/ngx_http_ssl_module.html #ssl_early_data ssl_early_data on; ssl_session_cache shared:SSL:50m; # HSTS(ngx_http_headers_module 필요) (15768000초 = 6개월) add_header Strict-Transport-Security max-age=31536000; # OCSP 스테이플링 --- # ssl_certificate의 URL에서 OCSP 레코드를 가져와 캐시합니다. ssl_stapling 켜기; ssl_stapling_verify 켜기; /etc/nginx/default.d/*.conf 포함; # /etc/nginx/default.d에서 기본 서버 블록 구성 파일을 로드합니다. location ~* ^/(upload|vendor|thinkphp|extend|addons|application)/.*\.(php|php5)$ { deny all; } # pseudo-static page location / { if (!-e $request_filename) { rewrite ^/index.php(.*)$ /index.php?s=$1 last; rewrite ^/admin.php(.*)$ /admin.php?s=$1 last; ^/api.php(.*)$ /api.php?s=$1 마지막으로 다시 쓰기; ^(.*)$ /index.php?s=$1 마지막으로 다시 쓰기; 중단; } } # 역방향 프록시 위치 /chat886 { proxy_redirect off; proxy_pass http://127.0.0.1:12345; proxy_http_version 1.1; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; TLSv1.3의 0-RTT proxy_set_header Early-Data $ssl_early_data; } }
구성을 추가한 후 nginx 서비스를 다시 시작하세요.
systemctl nginx 재시작
참고: Nginx가 성공적으로 구성된 후, 다음 Certbot을 사용하여 SSL 도메인 이름 인증서를 생성하세요. Nginx에서 SSL 액세스 규칙을 먼저 설정하지 마세요.
Nginx는 Certbot을 통해 SSL 도메인 이름 인증서를 생성합니다.
Certbot은 수동으로 관리되는 웹사이트에서 HTTPS를 활성화하기 위해 Let's Encrypt 인증서 사용을 자동화하는 무료 오픈 소스 소프트웨어 도구입니다.
Certbot은 캘리포니아주 샌프란시스코에 본사를 둔 501(c)3 비영리 단체인 Electronic Frontier Foundation(EFF)에서 개발한 것으로, 디지털 개인정보 보호, 언론의 자유, 혁신을 옹호합니다.
Nginx가 구성된 후 SSL 도메인 이름 인증서 로봇 Certbot을 사용하여 Growth City의 SSL 도메인 이름 인증서를 받을 수 있습니다. 구체적인 설치 방법은 다음을 참조하세요.
참고문헌:무료 SSL 인증서 로봇: Certbot이 https 도메인 이름 인증서의 자동 갱신을 신속하게 신청합니다.
AWS에 MySQL 설치
MySQL 모듈 받기
dnf 모듈 목록 mysql
서버에는 MySQL 8.0만 있습니다. MySQL 8.0을 설치해 보겠습니다.
dnf 설치 @mysql
dnf install mysql과 dnf install @mysql을 이용한 설치는 다릅니다. @mysql에는 더 많은 설치 패키지가 있습니다.
설치 후 MySQL을 부팅 시 시작하도록 설정하세요.
systemctl enable --now mysqld
그런 다음 MySQL이 정상적으로 실행되고 있는지 확인하세요.
systemctl 상태 mysqld
녹색 표시등은 정상 작동을 나타내고, 빨간색 표시등은 장애를 나타내며 MySQL이 정상적으로 실행되고 있음을 나타냅니다.
비밀번호 및 보안 설정 추가
달리다 mysql_secure_installation 보안 관련 작업을 수행하고 MySQL 루트 비밀번호를 설정하는 스크립트입니다.
sudo mysql_secure_installation
스크립트 실행 후, VALIDATE PASSWORD 구성 요소를 구성할지 묻는 메시지가 표시됩니다. 이 단계에서는 Y를 선택하세요.
비밀번호 확인 정책 수준을 선택하고 0(낮음)을 선택하세요.
MySQL 비밀번호를 설정하세요. 설정하려는 비밀번호를 두 번 입력하세요.
제공된 비밀번호를 계속 사용하시겠습니까? Y를 입력하세요.
익명 사용자를 제거하시겠습니까? Y를 입력하세요.
루트 원격 로그인을 허용하시겠습니까? N을 입력하세요.
테스트 데이터베이스를 제거하시겠습니까? Y를 입력하세요.
권한 테이블을 다시 로드하시겠습니까? Y를 입력하세요.
MySQL 원격 로그인을 구성하세요. 루트 계정에 대한 원격 로그인을 설정해야 하는 경우 위 단계를 반복하고 루트 원격 로그인 허용 단계를 Y로 설정하세요. 당장 MySQL 원격 로그인을 구성할 필요가 없다면 이 단락은 무시해도 됩니다.
MySQL이 초기화된 후에는 MySQL에 로그인하여 검증을 받아야 합니다.
다음 명령을 사용하여 로그인하고 비밀번호를 입력하세요.
mysql -u 루트 -p
로그인에 이상이 없고 mysql>운영 콘솔이 출력된다면, 설정 및 설치가 성공적으로 완료된 것입니다.
MySQL 콘솔에서 새로운 사용자를 만들거나 MySQL 관리 도구를 사용하여 새로운 사용자나 데이터베이스를 만들 수 있습니다.
MySQL 콘솔에서 새 사용자를 만드는 방법
원격 로그인을 위한 새 사용자 생성
UserName에 사용자 이름을 입력하고 Host에 IP 주소를 입력하세요. 예를 들어 8.8.8.8은 사용자가 IP 주소 8.8.8.8에서만 로그인할 수 있음을 의미합니다. IP 로그인을 제한하지 않는 경우 Host에 %를 입력하고 Password에 비밀번호를 입력하세요.
'Password'로 식별되는 'UserName'@'Host' 사용자를 생성합니다.
새로 생성된 사용자에게 권한을 부여합니다. 사용자 이름과 호스트는 이전 단계에서 생성한 사용자와 동일합니다.
grant 옵션을 사용하여 'UserName'@'Host'에 대한 모든 권한을 *.*에 부여합니다.
원격 로그인이 가능한지 테스트해 보세요. 비밀번호를 변경하는 MySQL 명령문은 다음과 같습니다.
'Password'로 식별된 사용자 'root'@'localhost'를 변경합니다.
지금까지 MySQL이 설치되었습니다. 설정 파일에 대한 추가 요구 사항이 있으면 변경하세요. /etc/my.cnf .의 구성 파일
위 설정을 완료한 후 MySQL 서비스를 다시 시작합니다.
systemctl 재시작 mysqld
MySQL 공통 명령어
MySQL 시작
systemctl 시작 mysqld
MySQL을 다시 시작하세요
systemctl 재시작 mysqld
MySQL 중지
systemctl stop mysqld
MySQL 상태 확인
systemctl 상태 mysqld
AWS phpMyAdmin 설치
phpMyAdmin은페피(PHP)처리하기 위해 작성된 무료 소프트웨어 도구MySQL 관리.phpMyAdmin은 MySQL과 MariaDB에 대한 광범위한 작업을 지원합니다. 데이터베이스, 테이블, 열, 관계, 인덱스, 사용자, 권한 등 일반적인 작업은 사용자 인터페이스를 통해 수행할 수 있으며, 모든 SQL 문을 직접 실행할 수도 있습니다.
phpMyAdmin은 MySQL을 위한 관리 도구입니다. phpMyAdmin 웹사이트:https://www.phpmyadmin.net/
wget 다운로드 명령을 설치합니다.
dnf 설치 wget
phpMyAdmin-5.1.3 최신 버전을 다운로드하세요. tar.gz 형식입니다.
wget https://files.phpmyadmin.net/phpMyAdmin/5.2.0/phpMyAdmin-5.2.0-all-languages.tar.gz
phpMyAdmin-5.1.3 파일의 압축을 풉니다.
tar -zxvf phpMyAdmin-5.2.0-모든 언어.tar.gz
폴더 이름을 변경하세요. 이 이름은 나중에 지정할 수 있습니다. 여기서는 기본적으로 phpMyAdmin으로 변경되어 있습니다.
mv phpMyAdmin-5.2.0-모든 언어 phpMyAdmin
파일을 웹 저장소 디렉토리로 이동합니다.
mv phpMyAdmin /home/www
이전에 php-mysqlnd 확장 기능을 설치하지 않은 경우 php-mysqlnd 확장 기능도 설치해야 합니다.
dnf로 php-mysqlnd 설치
phpMyAdmin 구성
phpMyAdmin 디렉토리 아래의 libraries 디렉토리로 이동하여 VI를 사용하여 config.default.php 파일을 편집합니다.
cd /var/www/phpMyAdmin/libraries
vi config.default.php
host 뒤에 localhost를 127.0.0.1로 변경하세요. 참고: 키패드를 사용하여 숫자를 입력하지 마세요.
할 것이다$cfg['서버'][$i]['호스트'] = '로컬호스트';변경하다$cfg['서버'][$i]['호스트'] = '127.0.0.1';
$cfg['서버'][$i]['사용자'] = '루트';
$cfg['서버'][$i]['비밀번호'] = 'mysql 비밀번호';
할 것이다$cfg['blowfish_secret'] = ''; 변경하다 $cfg['blowfish_secret'] = '123456*******';
참고: '123456*******'은 32자 이상의 무작위 비밀번호입니다.
수정 후 저장하고 종료: qw
으로 돌아가기
phpMyAdmin 메인 디렉토리에 구성 파일을 넣으세요. config.sample.inc.php 이름을 변경하세요.
cd /var/www/phpMyAdmin/
mv config.sample.inc.php config.inc.php
VI는 설정 파일 config.inc.php를 편집합니다.
vi config.inc.php
phpMyAdmin이 쿠키에 사용하는 짧은 비밀번호를 변경합니다.
$cfg['blowfish_secret'] = ''; 변경하다 $cfg['blowfish_secret'] = '123456*******';
참고: '123456*******'는 32비트보다 큰 모든 비밀번호 문자입니다.
이 비밀번호는 여러 PhpMyAdmins나 다른 프로그램이 쿠키를 공유할 때 혼란을 피하기 위해 쿠키를 암호화하는 데 사용됩니다.
짧은 비밀번호를 편집한 후 호스트 옵션을 수정하세요. $cfg['서버'][$i]['호스트'] = '로컬호스트'; 변경하다 $cfg['서버'][$i]['호스트'] = '127.0.0.1';
세션 경로(예: /var/lib/php/session)의 사용자 그룹과 권한을 수정한 다음, 해당 세션 경로로 이동합니다.
cd /var/lib/php
nginx:nginx ./session을 실행하세요
chmod -R 777 ./session
phpmyadmin 디렉토리에 새 tmp 폴더를 만들고 권한을 777로 설정합니다.
mkdir /var/www/phpMyAdmin/tmp
chmod -R 777 /var/www/phpMyAdmin/tmp
마지막으로 phpMyAdmin 파일이 저장된 디렉토리의 사용자 접근 권한을 수정합니다.
chown -R nginx:nginx /var/www
phpMyAdmin의 고급 기능이 완전히 구성되지 않았고 일부 기능이 활성화되지 않는 문제가 해결되었습니다.
phpMyAdmin에서 빈 데이터베이스 만들기를 클릭하여 문제를 해결하세요. 마지막으로 Nginx에서 phpMyAdmin의 접근 경로를 설정하면 정상적으로 접속할 수 있습니다.
mysqli::real_connect(): (HY000/1045): 접근 불가 사용자 'root'@'localhost'(비밀번호 사용: YES)
MySQL 비밀번호 입력 오류
Amazon Cloud에 WordPress 설치
WordPress 최신 버전을 다운로드해서 시작하세요.
wget https://cn.wordpress.org/latest-zh_CN.tar.gz
다운로드 후 파일의 압축을 풀어주세요.tar -xzvf 최신-zh_CN.tar.gz
폴더를 웹사이트 디렉토리로 이동합니다mv 워드프레스 /var/www
cd /var/wwwroot
wp-config-sample.php 파일 이름을 바꾸세요cp wp-config-sample.php wp-config.php
웹사이트 구성 파일을 수정하세요:vi wp-config.php
WordPress 데이터베이스의 이름: define( 'DB_NAME', 'WordPress' );
MySQL 데이터베이스 사용자 이름: define( 'DB_USER', 'root' );
MySQL 데이터베이스 비밀번호: define( 'DB_PASSWORD', 'mysql 비밀번호' );
MySQL 호스트: define( 'DB_HOST', '127.0.0.1' );
데이터 테이블을 생성할 때의 기본 텍스트 인코딩: define('DB_CHARSET', '유티에프8' );
파일 끝에 다음 코드를 추가합니다.if(is_admin()) {add_filter('파일 시스템 메서드', create_function('$a', 'return "direct";' ));define( 'FS_CHMOD_DIR', 0751 );}
구성 파일을 수정한 후 사용자 권한을 다시 추가하세요!
chown -R nginx:nginx /var/www
nginx 설정 파일에 다음 코드를 추가하여 의사 정적 플러그인을 설치합니다.
# www 지역명 301번으로 uzbox.tk를 차단합니다. } 서버 { listen 443 ssl http2; listen [::]:443 ssl http2; 서버 이름 uzbox.tk; root /home/wwwroot; ssl_certificate "/home/ssl/fullchain.cer"; ssl_certificate_key "/home/ssl/uzbox.tk.key"; ssl_session_cache 공유:SSL:1m; ssl_session_timeout 10m; ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA2 56:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CH ACHA20-초안:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5; ssl_prefer_server_ciphers 켜짐; TLSv1.3에서 0-RTT를 위한 # 구성 ssl_early_data 켜짐; ssl_stapling 켜짐; ssl_stapling_verify 켜짐; add_header Strict-Transport-Security "max-age=31536000"; location / { index index.php index.html index.htm; try_files $uri $uri/ /index.php?$args; #는 wordpress에서 가상 정적 설정을 지원하는 데 사용됩니다. } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
구성을 추가한 후 nginx 서비스를 다시 시작하세요.
systemctl nginx 재시작
마지막으로 MySQL에서 WordPress 데이터베이스를 만듭니다.
예를 들어: WordPress 데이터베이스의 이름: define('DB_NAME', '워드프레스123' );
MySQL에서 명령어나 phpMyAdmin을 사용하여 새 것을 만들어야 합니다.워드프레스123그렇지 않으면 사이트를 열 때 데이터베이스 연결 오류가 표시됩니다.
데이터베이스 구성 후 WordPress 페이지에 로그인하여 사이트 이름, 사용자 계정 비밀번호 및 기타 관련 내용을 입력하면 사이트가 성공적으로 생성됩니다. 사이트 백엔드에 로그인한 후 먼저 WordPress 고정 링크를 수정하고 백엔드에 접속하여 고정 링크 설정을 열어야 합니다.
自定义结构后面填入%category%/%post_id%
카테고리 디렉토리 /category/를 제거하려면 "No Category Base" 플러그인을 설치하세요.
나머지 자세한 구성은 다음을 참조하세요.박스 샵사이트의 내용