우분투 워드프레스 설치 (Wordpress, Nginx, PHP, SSL) - 봉태연구소 (2023)

워드프레스오픈 소스 블로그 소프트웨어입니다. WordPress를 사용하여 블로그뿐만 아니라 쇼핑몰을 구축할 수 있을 정도로 다재다능합니다. 제 블로그도 워드프레스를 기반으로 하고 있습니다.

이번에는 Ubuntu 서버에 WordPress 웹 서버를 구축하려고 합니다. 웹 서버로Nginx일반 이름사용할 것이다PHP데이터베이스로도 설치마리아DB이것을 단축하기 위해 사용할 것입니다LEMP 서버(UE항목 + () 엔진엑스 +지하철아리 DB +PAG삽). Nginx는 "enginex"로 읽히므로 E가 삽입됩니다.

Nginx일반 이름왜 사용아파치이에 비해 서버 부하가 낮습니다. 따라서 VPS를 사용할 때 높은 사양은 비용이 많이 들기 때문에 가능한 한 적은 사양으로 높은 효율을 달성하는 것이 중요합니다.마리아DB또한 사용MySQL보다 약간 더 빠르기 때문입니다. 또한 최신 버전의 PHPPHP 8.0사용할 것이다

또한 Cloudflare DNS를 사용하기 위해 Cloudflare에 도메인을 등록합니다. 보안상의 이유로 HTTPS 연결을 사용하여 인증서를 발급합니다.암호화하자설치하겠습니다

그럼 시작하겠습니다.

Ubuntu Server 20.04.3의 LTS 버전을 사용할 것입니다. 아래 링크에서 다운로드 할 수 있습니다.

https://ubuntu.com/download/servidor

우분투를 설치하는 방법Ubuntu 20.04 서버 설치 안내서참고할 수 있는

다음 명령은 모두 루트로 로그인했다고 가정하여 작성되었습니다.권한 부족에 대한 오류 메시지가 표시되면 명령 앞에 넣으십시오.스도삽입하십시오

Ubuntu 방화벽에서 포트 22/tcp, 80/tcp, 443/tcp를 열어야 합니다. 그 이유는,

22/TCP– SSH 통신용

80/TCP– HTTP 연결의 경우

443/TCP– HTTPS 연결용이기 때문입니다.

ufw 하빌리타르

방화벽을 활성화하십시오.

이 명령은 기존 SSH 연결을 끊을 수 있습니다. 프로세스를 계속하시겠습니까(y|n)?

방화벽을 활성화하면 위의 경고 메시지가 나타날 수 있습니다. 지금 이 순간제이입장 후수도꼭지눌러주세요

ufw 허용 22/tcpufw 허용 80/tcpufw 허용 443/tcp

포트 80/tcp 및 443/tcp를 엽니다.

dpkg-재구성 tzdata

시간대 설정으로 이동합니다.아시아/서울검색해서 선택해주세요

add-apt-repository ppa:ondrej/php

리포지토리 목록에 PPA(Personal Package Archive)를 추가합니다. 그 이유는 필수 PHP 8.0 패키지가 공식 APT 저장소에 나열되지 않을 수 있기 때문입니다.

계속하려면 [ENTER]를 누르고 추가를 취소하려면 Ctrl-c를 누르십시오.

수도꼭지저장소를 추가하려면 여기를 클릭하십시오.

apt-get 업데이트 && apt-get 업데이트

APT 패키지 목록을 업데이트합니다.

적절한 설치 php8.0-{bcmath,bz2,cgi,cli,common,curl,dba,dev,enchant,fpm,gd,gmp,imap,interbase,intl,ldap,mbstring,mysql,odbc,opcache,pgsql,phpdbg ,pspell,readline,snmp,soap,sqlite3,sybase,ordenado,xml,xmlrpc,zip,xsl}

필요한 PHP 8.0 패키지를 설치합니다.

몇 가지 패키지의 이름을 지정하려면 다음을 수행하십시오.

  • 함께– 기본 패키지입니다.
  • fpm– Nginx는 PHP를 해석할 수 없습니다. 따라서 php-fpm은 Nginx의 PHP 번역기 역할을 합니다. 따라서 php-fpm이 PHP를 해석하고 해석된 데이터를 Nginx로 전송함으로써 작동합니다.
vi /etc/php/8.0/fpm/php.ini

php.ini 파일을 엽니다. (저는 vi 에디터를 사용했는데 nano 에디터를 사용해도 됩니다. nano 에디터를 사용하시려면 vi를 nano로 바꾸시면 됩니다.)

아래 설정을 찾아 변경하십시오.

short_open_tag = Onmax_execution_time = 3600max_input_time = 3600memory_limit = 256Mpost_max_size = 100Mcgi.fix_pathinfo = 0upload_max_filesize = 100Mallow_url_fopen = Offdate.timezone = 아시아/서울
systemctl 활성 변수 php8.0-fpm

자동으로 시작하도록 php8.0-fpm 설정

systemctl 초기 php8.0-fpm

서비스가 작동하도록 하십시오.

cd /tmpwget https://wordpress.org/latest.tar.gztar -xvzf later.tar.gzmv 워드프레스 /var/www

최신 버전의 WordPress를 다운로드한 후 압축을 풉니다./var/www/워드프레스그것을 이동

chmod -R 755 /var/www/wordpress/chown -R www-daten:www-daten /var/www/wordpress/

/var/www/워드프레스의 권위날짜 www그것을 제공

Certbot은 HTTPS 연결을 위한 인증서(Let's Encrypt)를 생성하는 프로그램입니다. Certbot 및 Let's Encrypt에 대한 자세한 내용은 다음을 참조하십시오.여기문의하시기 바랍니다

apt는 python3-certbot-nginx를 설치합니다.

Certbot을 설치합니다.

apt python3-certbot-dns-cloudflare에서 설치

Cloudflare의 DNS TXT 레코드로 인증할 것이므로 인증 프로세스에 필요한 패키지를 설치했습니다.

내가 전에 쓴 것Cloudflare 도메인 등록 및 DNS 설정문의하시기 바랍니다

Cloudflare의 DNS 설정으로 이동합니다. 레코드 추가를 클릭하여 새 레코드를 만듭니다.

쉬멜지불이름도메인 주소(제 경우에는 bongtae.net)이고,IPv4 주소에 서버의 IP 주소를 입력합니다.프록시 비활성화그래서솔로 DNS선택 해주세요

신기록을 세우기도 합니다.쉬멜CNAME입니다.이름그것은 www,목표bongtae.net으로 정의프록시 비활성화제발.

mkdir /root/.certvi /root/.cert/cert.ini

인증 프로세스에 필요한 정보를 저장할 cert.ini 파일을 만듭니다.

dns_cloudflare_email = mail@example.comdns_cloudflare_api_key = asdlfkjasldkfasdf32f23rssdf

dns_cloudflare_email에 Cloudflare 계정 이메일 주소를 입력하세요.

dns_cloudflare_api_key글로벌 API 키를 입력하십시오에 API 키를 입력하십시오.

chmod -R 400 /raíz/.cert/

보안상의 이유로 /root/.cert/를 읽기 전용으로 설정하십시오.

certbot certonly --dns-cloudflare-credentials /root/.cert/cert.ini

Cloud DNS TXT 레코드 인증 모드에서 Certbot을 실행합니다.

/var/log/letsencrypt/letsencrypt.log에 디버그 로그 저장 ACME CA에 어떻게 인증하시겠습니까?- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -1: DNS TXT 레코드로 인증서를 검색합니다(DNS에 Cloudflare를 사용하는 경우). (dns-cloudflare)2: Nginx 웹 서버 플러그인(nginx)3: 임시(독립형) 웹 서버 활성화4: 파일을 웹루트 디렉터리(webroot)에 배치- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 적절한 숫자 [1-4]를 선택한 다음 [Enter]를 선택합니다(중단하려면 "c"를 누름).

인증 진행 방법을 묻습니다. DNS TXT 레코드를 사용하는 방법1 입력 후 입력.

주요 플러그인: dns-cloudflare Authenticator, 설치 프로그램 없음 이메일 주소 입력(보안 경고 및 빠른 갱신에 사용)(취소하려면 "c" 입력):

알림을 위한 이메일 주소를 입력하라는 의미입니다. 자주 사용하는 이메일 주소를 입력하세요. ~이다수도꼭지눌러주세요

https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf에서 서비스 약관을 읽으십시오. https://acme-v02.api.letsencrypt.org/directory- - - - - - - - - - - - - - - - - - - - - - - -에서 ACME 서버에 로그인하는 데 동의해야 합니다. 등록하려면 - - - - - - - - - - - -(A)수락/(C)취소:

이 메시지는 사용 약관에 동의할 것을 요청합니다.A를 입력한 다음 다음을 입력합니다..

귀하의 이메일 주소를 Let's Encrypt 프로젝트의 창립 파트너이자 Certbot을 개발하는 비영리 단체인 Electronic Frontier Foundation과 공유하시겠습니까? 인터넷 암호화 작업, EFF 뉴스, 캠페인 및 디지털 자유를 지원하는 방법에 대한 이메일을 보내드립니다.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -(하지만:

입력한 이메일 주소로 뉴스레터를 보낼 수 있는지 묻는 메시지입니다.N을 입력하고 입력.

도메인 이름을 입력하십시오(쉼표 및/또는 공백으로 구분)(취소하려면 "c" 입력):

이 메시지는 인증할 도메인을 입력하라는 메시지를 표시합니다.

bongta.net *.bongtae.net

위와 같이 도메인을 입력합니다.

중요 사항: - 축하합니다! 귀하의 인증서와 체인은 다음 위치에 저장되었습니다: /etc/letsencrypt/live/bongtae.net/fullchain.pem 귀하의 키 파일은 다음 위치에 저장되었습니다: /etc/letsencrypt/live/bongtae.net/privkey.pem 귀하의 인증서는 30./에 만료됩니다./ 2022년 4월부터. 나중에 이 인증서의 새 버전이나 개선된 버전을 얻으려면 certbot을 다시 실행하십시오. *모든* 인증서를 비대화식으로 갱신하려면 certbot renew를 실행하십시오. 계정 자격 증명이 /etc/letsencrypt의 certbot 구성 디렉토리에 저장되었습니다. 이제 이 폴더의 안전한 백업을 만들어야 합니다. 이 구성 디렉토리에는 Certbot에서 얻은 인증서와 개인 키도 포함되어 있으므로 이 폴더를 정기적으로 백업하는 것이 이상적입니다. - Certbot이 마음에 드시면 저희 작업 지원을 고려하십시오: ISRG에 기부 / Let's Encrypt: https://letsencrypt.org/donate EFF에 기부: https://eff.org/donate-le

그러면 위의 메시지가 나타납니다. 이 메시지에서 인증서가 저장된 위치도 확인할 수 있습니다. 나중에 필요할 수 있으므로 인증서가 저장된 위치를 기록해 둡니다.

Diffie-Hellman 키 교환에 사용할 키를 생성합니다.

openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

2048비트 긴 키/etc/ssl/certs/dhparam.pem다른 이름으로 저장. 다소 시간이 걸릴 수 있으므로 인내심을 가지십시오.

apt-get 설치 nginx

Nginx를 설치합니다.

vi /etc/nginx/sitios-disponibles/wordpress.conf

WordPress.conf 구성 파일을 만듭니다.

서버 { hört auf 80; hör zu[::]:80; 루트 /var/www/wordpress; 인덱스 index.php index.html index.htm; Name_Server bongtae.net www.bongtae.net; return 301 https://$host$request_uri;}서버 { wartet auf 443 ssl http2; hören [::]:443 ssl http2; 루트 /var/www/wordpress; 인덱스 index.php index.html index.htm; name_server www.bongtae.net; ssl_certificate /etc/letsencrypt/live/bongtae.net/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/bongtae.net/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/bongtae.net/chain.pem; Protokolle_ssl TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; 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-CHACHA20POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; add_header Strict-Transport-Security "최대 연령=31536000; includeSubDomains"; return 301 https://bongtae.net$request_uri;}server { 듣기 443 ssl http2; hören [::]:443 ssl http2; 루트 /var/www/wordpress; 인덱스 index.php index.html index.htm; name_servidor bongtae.net; ssl_certificate /etc/letsencrypt/live/bongtae.net/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/bongtae.net/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/bongtae.net/chain.pem; Protokolle_ssl TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; 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-CHACHA20POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers 활성; 공유 ssl_session_cache:SSL:50m; ssl_session_timeout 1d; ssl_session_tickets 비활성화; ssl_stapling 활동; ssl_stapling_verify 활성; 리졸버 8.8.8.8 8.8.4.4 gültig=300s; resolve_timeout 30초; ssl_dhparam /etc/ssl/certs/dhparam.pem; add_header Strict-Transport-Security "최대 연령=31536000; includeSubDomains"; add_header X-Frame-Optionen SAMEORIGIN; add_header X-Inhaltstyp-Optionen nosniff; client_max_body_size 100M; 자동 색인 aus; 현지화 / { try_files $uri $uri/ /index.php?$args; } 현지화 ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass 유닉스:/var/run/php/php8.0-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; schließen Sie fastcgi_params ein; }}

각 서버 블록에서서버 이름부품의 도메인을 서버에 사용할 도메인으로 변경하십시오.ssl_certificate인증서의 일부 및 키 위치 등Let's Encrypt 인증서 확인장소를 바꾸다.

구성을 간략히 설명하십시오.

  • 들어오는 포트 80/tcp(HTTP 연결)가 HTTPS로 변환됩니다.
  • www.bongtae.net의 입력은 bongtae.net으로 리디렉션됩니다.

요약하면 HTTPS 연결은 무조건 사용됩니다. 이것은 보안상의 이유로도 좋습니다.

ln -s /etc/nginx/sites-disponible/wordpress.conf /etc/nginx/sites-enabled/

이 설정을 활성화합니다.

rm -f /etc/nginx/sites-enabled/default

기존 패턴 파일을 삭제합니다.

nginx-t

Nginx 구성에 문제가 없는지 확인하십시오.

nginx: /etc/nginx/nginx.conf 구성 파일 구문은 oknginx입니다. /etc/nginx/nginx.conf 구성 파일 테스트 통과

문제가 없으면 위의 텍스트가 생성되어야 합니다.

systemctl activar nginxsystemctl reiniciar nginx

부팅 시 Nginx가 자동으로 시작되도록 설정하고 다시 시작합니다.

Let's Encrypt로 발급된 인증서는 3개월이므로 주기적으로 갱신해야 하며 nginx는 갱신할 때마다 인증서가 갱신되었음을 알려야 합니다.

당신은 /etc/crontab

crontab 설정 페이지로 이동합니다.

(.....)0 3 * * 6 루트 /usr/bin/certbot renova --post-hook "systemctl restart nginx.service"

위와 같은 것이 있어야 합니다. 앞의 숫자는 건드리지 마시고 다음과 같이 설정하세요.

0 3 * * 6 루트 /usr/bin/certbot renew0 3 * * 6 루트 nginx -s 다시 로드
apt-get 설치 mariadb-server mariadb-client

MariaDB를 설치합니다.

원래는 MariaDB에서 비밀번호를 설정해야 하는데 최신 버전의 MariaDB에서는 이 과정이 필요하지 않습니다. MariaDB에 로그인할 때우분투 루트 암호당신이 사용할 수있는.

mysql -u 데이터베이스 -p

MariaDB에 로그인합니다.

비밀번호 입력:

우분투 루트 암호목록당신은 쓸 수 있습니다에.

데이터베이스 생성 wordpressdb;

wordpressdb라는 데이터베이스를 만듭니다.

CREATE USER "wpuser"@"localhost", "강력한 비밀번호"로 식별;

wpuser사용자 이름을 만들고 사용자의 비밀번호를 입력하십시오.안전한 비밀번호충분히 복잡한 암호를 설정하십시오.

모든 권한을 wordpressdb에 부여합니다.* TO wpuser@'localhost';

wordpressdb의 모든 권리wpuser알았어

다운로드 권한;

변경 사항을 저장합니다.

살리다;

MariaDB를 종료합니다.

systemctl activar mariadbsystemctl reiniciar mariadb

시작할 때 MariaDB가 자동으로 시작되도록 설정하고 다시 시작합니다.

지금https://blog_domain_addresse로그인하면 아래와 같은 블로그 설정 화면을 볼 수 있습니다.

우분투 워드프레스 설치 (Wordpress, Nginx, PHP, SSL) - 봉태연구소 (1)

블로그 설정 과정에서 설치된 Mariadb를 데이터베이스로 사용할 수 있습니다.

인터넷에 리소스가 많기 때문에 블로그 설정은 건너뛰겠습니다.

읽어 주셔서 감사합니다.

References

Top Articles
Latest Posts
Article information

Author: Dan Stracke

Last Updated: 15/10/2023

Views: 6087

Rating: 4.2 / 5 (43 voted)

Reviews: 90% of readers found this page helpful

Author information

Name: Dan Stracke

Birthday: 1992-08-25

Address: 2253 Brown Springs, East Alla, OH 38634-0309

Phone: +398735162064

Job: Investor Government Associate

Hobby: Shopping, LARPing, Scrapbooking, Surfing, Slacklining, Dance, Glassblowing

Introduction: My name is Dan Stracke, I am a homely, gleaming, glamorous, inquisitive, homely, gorgeous, light person who loves writing and wants to share my knowledge and understanding with you.