OpenBSDs HTTPD를 사용하여 OpenBSD 6.6에서 WordPress 실행

소개

보안에 대한 OpenBSD의 손해를 감안할 때 WordPress 웹 사이트를 강화하는 것은 의미가 있습니다. 특히 WordPress 및 PHP는 스크립트 키즈 대상을 옮기는 경향이 있기 때문입니다. OpenBSD의 httpd는 기본적으로 정적 페이지를 제공하도록 설계되었으므로 POST 작업은 fastcgi 및 slowcgi 프로세스 용으로 예약되어 있습니다. 이로 인해 악의적 인 행위자가 웹 서버의 프로세스를 중단시키고 서버에 액세스하는 것이 어려워집니다. POST 조작은 fastcgi 프로세스로 파이프되고 외부 인터프리터를 사용합니다. 이 기사에서는 WordPress 사이트 설정뿐만 아니라 몇 가지 기본 유지 관리 기술과 사이트 및 데이터베이스를 백업 및 복원하는 방법에 대해 설명합니다. example.com도메인으로 표시 되는 곳이면 어디든지 도메인으로 바꾸십시오.

초기 구성

아직 그렇게하지 않았다면 /etc/doas.conf파일 을 만들어야 합니다. doas 명령은 OpenBSD의 sudo를 쉽게 대체합니다. 편의상 noas 옵션을 추가하여 doas를 사용할 때 비밀번호를 다시 입력 할 필요가 없습니다. 이것을 원하지 않으면 nopass를 생략하십시오.

su -
echo "permit nopass keepenv :wheel" > /etc/doas.conf

배포를 위해 OpenBSD를 패키지화 한 방법에 따라 때때로 패키지 관리자에 저장소가 구성되어 있지 않을 수 있습니다. OpenBSD 공식 저장소를 설정하려면 /etc/installurl파일 을 만들어야 합니다.

doas su
echo "https://cdn.openbsd.org/pub/OpenBSD" > /etc/installurl
exit

이제 이미지 및 암호화와 같은 것을 처리하기 위해 WordPress에 필요한 PHP 및 일부 추가 모듈을 추가해야합니다. 메시지가 표시되면 최신 PHP 패키지를 설치하도록 선택하십시오. 한 가지해야 할 일은 모듈 ini 파일을 샘플 디렉토리에서 기본 디렉토리로 복사하는 것입니다. 추가 PHP 모듈을 활성화하려면이 작업을 수행해야합니다.

doas pkg_add -r mariadb-client mariadb-server php php-curl php-mysqli php-zip pecl73-mcrypt pecl73-imagick wget
doas cp /etc/php-7.3.sample/* /etc/php-7.3/.

인증서를 암호화합시다

오늘날 세계에서 웹 사이트는 SSL을 통해 제공되거나 검색 엔진에 의해 등급이 낮아지는 얼굴이어야합니다. 운 좋게도 OpenBSD에는 acme-client라는 훌륭한 응용 프로그램이 있습니다. acme-client는 자동으로 새 개인 키를 생성하고 완전히 유효한 새 인증서를 요청합니다. acme-client는 웹 서버가 있어야하므로 빠른 기본 서버 정의를 작성해야합니다.

좋아하는 편집기로을 만듭니다 /etc/httpd.conf. 나중에 다른 서버 정의를 파일에 추가합니다. 현재로서는 acme-client가 제대로 작동하기에 충분합니다.

prefork 5
types { include "/usr/share/misc/mime.types" }

server "default" {
    listen on egress port 80
    root "/htdocs"
    directory index "index.html"

    location "/.well-known/acme-challenge/*" {
        request strip 2
        root "/acme"
    }
}

또한 좋아하는 편집기를 사용하여을 만드십시오 /etc/acme-client.conf.

authority letsencrypt {
    api url "https://acme-v02.api.letsencrypt.org/directory"
    account key "/etc/acme/letsencrypt-privkey.pem"
}

authority letsencrypt-staging {
    api url "https://acme-staging-v02.api.letsencrypt.org/directory"
    account key "/etc/acme/letsencrypt-staging-privkey.pem"
}

domain example.com {
    alternative names { www.example.com }
    domain key "/etc/ssl/private/example.com.key"
    domain full chain certificate "/etc/ssl/example.com.crt"
    sign with letsencrypt
}

이제 httpd를 활성화하고 시작해야합니다. 이 작업을 마치면 acme-client를 실행하여 새 인증서를 얻을 때까지 기다릴 수 있습니다. 이 작업을 수행 한 후 7 일마다 자동으로 새 작업을 요청하는 크론 작업을 추가하여 만료에 대해 걱정할 필요가 없습니다.

doas rcctl enable httpd
doas rcctl start httpd
doas acme-client -v example.com

이제 cron 작업을 만듭니다. 가장 마지막 항목 아래에이 줄을 추가하십시오. 이 경우 acme-client에게 매주 토요일 오전 1시에 새 인증서를 요청하도록합니다.

doas crontab -e
0       1       *       *       6       acme-client -F example.com && rcctl reload httpd

WordPress에 대한 HTTPD 구성

이제 WordPress에 httpd를 설정할 차례입니다. 웹 사이트 정의를에 직접 /etc/httpd.conf배치하는 대신 별도의 파일에 배치 /etc/httpd.conf.example.com하여 기본 구성 파일에 포함시킵니다. 일반적으로 기본 구성 파일과 도메인 별 설정에서 사이트 전체 정의를 다른 설정으로 유지하면서 두 가지를 분리하는 것이 좋습니다.

/etc/httpd.conf파일 맨 아래에 다음 줄을 추가 하십시오.

include "/etc/httpd.conf.example.com"

이제 좋아하는 편집기를 사용하여을 만드십시오 /etc/httpd.conf.example.com. 편의상 도메인에 대해 별도의 로그 파일을 작성합니다. 이를 통해 사이트의 잠재적 인 문제를 추적 할 때 더 쉬워집니다.

server "example.com" {
    listen on egress port 80
    alias "www.example.com"

    # Automatically redirect to SSL
    block return 302 "https://$SERVER_NAME$REQUEST_URI"

    log {
            access "access-example.com"
            error "error-example.com"
    }
}

server "example.com" {
    listen on egress tls port 443
    alias "www.example.com"
    root "/htdocs/wordpress"
    directory index "index.php"

    log {
            access "access-example.com"
            error "error-example.com"
    }
    tcp { nodelay, backlog 10 }

    tls {
            certificate "/etc/ssl/example.com.crt"
            key "/etc/ssl/private/example.com.key"
    }
    hsts {
            # max-age value is the number of seconds in 1 year
            max-age 31556952
            preload
            subdomains
    }

    location "/.well-known/acme-challenge/*" {
            root "/acme"
            request strip 2
    }
    location "/posts/*" {
            fastcgi {
                    param SCRIPT_FILENAME \
                            "/htdocs/wordpress/index.php"
                    socket "/run/php-fpm.sock"
            }
    }
    location "/page/*" {
            fastcgi {
                    param SCRIPT_FILENAME \
                            "/htdocs/wordpress/index.php"
                    socket "/run/php-fpm.sock"
            }
    }
    location "/feed/*" {
            fastcgi {
                    param SCRIPT_FILENAME \
                            "/htdocs/wordpress/index.php"
                    socket "/run/php-fpm.sock"
            }
    }
    location "/comments/feed/*" {
            fastcgi {
                    param SCRIPT_FILENAME \
                            "htdocs/wordpress/index.php"
                    socket "/run/php-fpm.sock"
            }
    }
     location "/wp-json/*" {
            fastcgi {
                    param SCRIPT_FILENAME \
                            "htdocs/wordpress/index.php"
                    socket "/run/php-fpm.sock"
            }
    }
    location "/wp-login.php*" {
            authenticate "WordPress" with "/htdocs/htpasswd"
            fastcgi socket "/run/php-fpm.sock"
    }
    location "*.php*" {
            fastcgi socket "/run/php-fpm.sock"
    }
}

보안 강화를 위해 WordPress 관리 사이트에 로그인 할 때 사용자 이름과 비밀번호를 묻는 추가 프롬프트를 구현할 것입니다. 스크립트 키즈는 WordPress의 로그인을 반복적으로 시도하고 무차별 공격하는 것을 좋아하기 때문에 웹 서버 수준에서 추가 로그인을 만듭니다. 일반적으로 WordPress에서 401 Unauthorized 오류가 발생하기 전에 약 5 번의 추측을합니다.

doas su
cd /var/www/htdocs
doas htpasswd htpasswd <user>
doas chown www:www htpasswd
doas chmod 0640 htpasswd
doas rcctl reload httpd

PHP 및 PHP-FPM 준비 및 구성

WordPress 설치에서 이메일을 보낼 수 있도록 PHP를 변경해야합니다. WordPress 및 일부 플러그인은 업그레이드, 경고 및 변경 사항을 알리는 이메일을 보내는 기능에 의존합니다. 이메일을 보내지 못하면 WordPress의 특정 기능이 손상 될 수 있습니다. httpd는 chroot 환경에서 실행되므로, PHP에게 이메일을 보내는 방법을 알려줘야합니다. 또한, 우리는 php-fpm에 몇 주 동안 성능을 수행해야합니다.

을 찾아 sendmail_path/etc/php-7.3.ini하고 다음과 같이 변경합니다

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; sendmail_path =
sendmail_path = /bin/femail -t -i

다음 줄을 /etc/php-fpm.conf찾아서 다음과 같이 변경하십시오.

pm.start_servers = 5
pm.min_spare_servers = 1
pm.max_spare_servers = 6

다음 단계는 php-fpm을 활성화하고 시작하는 것입니다.

doas rcctl enable php73_fpm
doas rcctl start php73_fpm

MariaDB 준비 및 구성

MariaDB는 MySQL의 드롭 인 대체 포크입니다. WordPress에 대한 초기 구성 및 데이터베이스 준비 작업을 수행해야합니다.

MariaDB를 효과적으로 사용하려면 mysql 데몬이 기본 리소스보다 더 많은 리소스를 사용하도록 허용해야합니다. 이렇게하려면 /etc/login.conf맨 아래에이 항목을 추가 하여 다음과 같이 변경 하십시오.

mysqld:\
    :openfiles-cur=1024:\
    :openfiles-max=2048:\
    :tc=daemon:

MariaDB 구성 파일에서 일부를 변경해야합니다 /etc/my.cnf. mysql 클라이언트와 서버가 TCP 대신 UNIX 도메인 소켓을 통해 통신하게함으로써 서버의 메모리 사용량을 낮게 유지할 수 있습니다. 아래 제안 된 사항을 모두 변경할 필요는 없습니다. 변경해야 할 중요한 두 가지는 socket회선과 주석 처리 bind-address입니다. 이렇게하면 소켓이 /var/wwwchroot 환경 내부로 이동하여 WordPress가 데이터베이스에 연결할 수 있습니다. bind-address회선 을 주석 처리하여 MariaDB가 TCP 포트에서 수신하지 못하게합니다.

[client-server]
socket=/var/www/var/run/mysql/mysql.sock
#port=3306

# This will be passed to all MariaDB clients
[client]
#password=my_password

# The MariaDB server
[mysqld]
# To listen to all IPv4 network addresses, use "bind-address = 0.0.0.0"
#bind-address=127.0.0.1
# Directory where you want to put your data
#data=/var/mysql
# This is the prefix name to be used for all log, error and replication files
#log-basename=mysqld
# Logging
#log-bin=/var/mysql/mariadb-bin
#max_binlog_size=100M
#binlog_format=row
#expire_logs_days = 7
#general-log
#slow_query_log
query_cache_type = 1
query_cache_limit = 1M
query_cache_size = 16M

이제 MariaDB 설치 바이너리를 실행하고 MariaDB를 활성화하고 시작해야합니다. 이 절차는 루트 암호를 설정하고 선택적으로 테스트 데이터베이스를 삭제합니다. 보안 설치 단계에서 모든 제안을 따르는 것이 좋습니다.

doas mysql_install_db
doas rcctl enable mysqld
doas rcctl start mysqld
doas mysql_secure_installation

WordPress 데이터베이스 및 데이터베이스 사용자를 작성하십시오. <wp_user>선택한 데이터베이스 사용자 이름과 <password>복잡한 암호 로 바꿔야 합니다.

mysql -u root -p 
CREATE DATABASE wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO '<wp_user>'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;
EXIT

워드 프레스 설치 및 구성

워드 프레스는 공식 OpenBSD 포트를 가지고 있지 않았다. WordPress 설치 폴더를 다운로드, 추출 및 이동하십시오.

cd /tmp
wget https://wordpress.org/latest.tar.gz
tar xvfz latest.tar.gz
doas mv wordpress /var/www/htdocs/.
doas chown -R www:www /var/www/htdocs/wordpress
doas chmod 0755 /var/www/htdocs/wordpress
cd /var/www/htdocs/wordpress/
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

우리는을 만들 디렉토리 에 복사 /etc/resolv.conf하고 복사해야합니다 . 이것은 WordPress가 시장에 성공적으로 도달 할 수 있도록하기위한 것입니다. WordPress 관리 사이트를 통해 플러그인 및 테마를 다운로드하려면이 기능이 필요합니다. Jet Pack 플러그인이 제대로 작동하는 것도 중요합니다./etc/hosts/var/www/etc

doas mkdir /var/www/etc
doas cp /etc/hosts /var/www/etc/.
doas cp /etc/resolv.conf /var/www/etc/.

여기에서 웹 서버 정의에 지정한 URL을 통해 https를 사용하여 WordPress 웹 사이트를 찾으십시오. 모든 것이 올바르게 작동하면 WordPress 설치 마법사가 나타납니다. 데이터베이스 서버를 지정하는 옵션에 도달하면localhost:/var/run/mysql/mysql.sock

워드 프레스가 설치되면, SEO에보다 친숙해 지도록 퍼머 링크를 설정할 차례입니다. 워드 프레스 관리 화면에서으로 이동하십시오 Settings -> Permalinks. 사용자 정의 구조를 클릭하고을 입력하십시오 /posts/%postname%. 이 변경을 수행 한 후 변경 사항 저장 버튼을 클릭하십시오. 이제 훨씬 더 멋진 링크가 생겼습니다. 예를 들어, 퍼머 링크는 다음과 같습니다 :https://example.com/posts/example-blog-post

여기에서 기본 웹 사이트를 준비해야합니다. Jet Pack 및 WP-Super Cache와 같은 플러그인을 설치해야합니다. WP-Super Cache 플러그인은 웹 페이지를 캐싱하고 지속적인 데이터베이스 조회를 제거하여 웹 사이트 속도를 높이고 JetPack은 우수한 시청률 통계를 제공합니다.

WordPress 웹 사이트 및 데이터베이스 백업

웹 사이트와 데이터베이스를 백업하는 것이 매우 중요하다는 ��은 말할 필요도 없습니다. 고맙게도, 이것은 비교적 쉬운 일입니다. 홈 디렉토리에 모두 백업 한 다음 scp를 통해 다른 위치로 복사 할 수 있습니다. Vultr 제어판을 통해 스냅 샷을 생성 할 수도 있습니다. 두 가지를 모두 수행하는 것이 좋습니다.

cd /var/www/htdocs
tar cvfz wordpress.tgz wordpress/
cp wordpress.tgz /home/user
mysqldump -u root -p wordpress > wordpress.sql && gzip wordpress.sql

워드 프레스 웹 사이트 복원

데이터베이스가 손상되어 복원이 필요한 경우 다음을 수행하십시오.

gunzip wordpress.sql.gz
mysql -u root -p wordpress
DROP USER '<user>'@'localhost';
DROP DATABASE wordpress;
CREATE DATABASE wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO '<wp_user>'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;
EXIT
mysql -u root -p wordpress < wordpress.sql

문제가 발생한 WordPress 스크립트 파일을 변경 한 경우 언제든지 관리자 제어판을 통해 WordPress를 다시 설치할 수 있습니다. 을 찾아 Updates섹션과 링크를 클릭합니다. 이라고 표시된 버튼을 찾으십시오 Re-install Now. 이렇게하면 최소한 깨진 부분이 수정되지만 대부분의 구성은 그대로 유지됩니다.

데이터베이스의 상태는 좋지만 실수로 파일을 편집하여 WordPress 관리 콘솔에 도달 할 수없는 수준까지 파산 한 경우 다음을 수행하십시오.

rm /var/www/htdocs/wordpress
cp /home/user/wordpress.tgz /tmp
tar xvfz wordpress.tgz
mv wordpress /var/www/htdocs/.
chown -R www:www /var/www/htdocs/wordpress
cd /var/www/htdocs/wordpress
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;


Leave a Comment

AI가 랜섬웨어 공격의 증가와 싸울 수 있습니까?

AI가 랜섬웨어 공격의 증가와 싸울 수 있습니까?

랜섬웨어 공격이 증가하고 있지만 AI가 최신 컴퓨터 바이러스를 처리하는 데 도움이 될 수 있습니까? AI가 답인가? AI boone 또는 bane인지 여기에서 읽으십시오.

ReactOS: 이것이 Windows의 미래입니까?

ReactOS: 이것이 Windows의 미래입니까?

오픈 소스이자 무료 운영 체제인 ReactOS가 최신 버전과 함께 제공됩니다. 현대 Windows 사용자의 요구 사항을 충족하고 Microsoft를 무너뜨릴 수 있습니까? 이 구식이지만 더 새로운 OS 환경에 대해 자세히 알아보겠습니다.

WhatsApp 데스크톱 앱 24*7을 통해 연결 유지

WhatsApp 데스크톱 앱 24*7을 통해 연결 유지

Whatsapp은 마침내 Mac 및 Windows 사용자용 데스크톱 앱을 출시했습니다. 이제 Windows 또는 Mac에서 Whatsapp에 쉽게 액세스할 수 있습니다. Windows 8 이상 및 Mac OS 10.9 이상에서 사용 가능

AI는 어떻게 프로세스 자동화를 다음 단계로 끌어올릴 수 있습니까?

AI는 어떻게 프로세스 자동화를 다음 단계로 끌어올릴 수 있습니까?

인공 지능이 소규모 회사에서 어떻게 인기를 얻고 있으며 어떻게 인공 지능이 성장할 가능성을 높이고 경쟁자가 우위를 점할 수 있는지 알아보려면 이 기사를 읽으십시오.

macOS Catalina 10.15.4 추가 업데이트로 인해 해결보다 더 많은 문제가 발생함

macOS Catalina 10.15.4 추가 업데이트로 인해 해결보다 더 많은 문제가 발생함

최근 Apple은 문제를 해결하기 위해 macOS Catalina 10.15.4 추가 업데이트를 출시했지만 이 업데이트로 인해 Mac 컴퓨터의 브릭킹으로 이어지는 더 많은 문제가 발생하는 것 같습니다. 자세히 알아보려면 이 기사를 읽어보세요.

빅데이터의 13가지 상용 데이터 추출 도구

빅데이터의 13가지 상용 데이터 추출 도구

빅데이터의 13가지 상용 데이터 추출 도구

저널링 파일 시스템이란 무엇이며 어떻게 작동합니까?

저널링 파일 시스템이란 무엇이며 어떻게 작동합니까?

우리 컴퓨터는 모든 데이터를 저널링 파일 시스템이라고 하는 체계적인 방식으로 저장합니다. 검색을 누르는 즉시 컴퓨터에서 파일을 검색하고 표시할 수 있는 효율적인 방법입니다.https://wethegeek.com/?p=94116&preview=true

기술적 특이점: 인류 문명의 먼 미래?

기술적 특이점: 인류 문명의 먼 미래?

과학이 빠른 속도로 발전하고 우리의 많은 노력을 인수함에 따라 설명할 수 없는 특이점에 처할 위험도 높아집니다. 특이점이 우리에게 무엇을 의미할 수 있는지 읽어보십시오.

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

2021년 의료 분야에서 인공 지능의 영향

2021년 의료 분야에서 인공 지능의 영향

의료 분야의 AI는 지난 수십 년 동안 큰 도약을 했습니다. 따라서 의료 분야에서 AI의 미래는 여전히 나날이 성장하고 있습니다.