본문 바로가기
미디어위키

Setup shellbox on Nginx

by 다움위키 2024. 11. 2.

원문 보기: https://dawoum.duckdns.org/wiki/Shellbox/Setup_shellbox_on_Nginx

 

위키미디어에서는 미디어위키 운영을 위해 Apache HTTP Server를 사용합니다. 이러다 보니, 그 설정의 설명이 대체로 아파치 웹 서버로 제한되는 경우가 있습니다. 물론 추후에 사용자가 늘어남에 따라 누군가의 기여로 다른 웹 서버, 예를 들어, Nginx에 대한 설정이 추가되기도 합니다.

한편, 여러 미디어위키 지원 호스팅 중에서 MirahezeNginx 웹 서버를 사용하기 때문에, 여기서 기본적인 정보를 얻을 수 있습니다. 이 위키 농장의 운영을 위한 개발 과정과 결과물은 다음에서 볼 수 있습니다:

링크 내부에서 shellbox와 관련된 설정은 다음에서 볼 수 있습니다:

문제는 이들 설정을 가져와도 제대로 동작하기 위해 추가적인 수정이 필요하다는 것입니다.

어쨌든, 일반 사용자는 여러 곳에 서비스를 설치해서 운영할 필요없이 한 컴퓨터에서 모든 것을 수행하는 것이 바람직할 수도 있습니다.

이미 기존 MediaWiki가 8080 포트에서 실행되고 있으므로, 8000 포트를 이용해서 시도할 것입니다.

Installation

원래 문서의 설명에 따라 진행합니다:

  • Shellbox 소스와 종속성을 가져옵니다:
cd /srv
sudo git clone https://gerrit.wikimedia.org/r/mediawiki/libs/Shellbox shellbox
cd shellbox
sudo composer install --no-dev
  • Shellbox에 대한 권한이 없는 사용자를 만듭니다:
sudo useradd -r shellbox
  • Shellbox에 대한 임시 작업 디렉토리를 만듭니다:
sudo install -o shellbox -g shellbox -d /var/tmp/shellbox
  • 임시 작업 디렉토리 /srv/shellbox/config/config.json을 참조하는 Shellbox 구성 파일을 만듭니다:
 {
 	"url": "http://localhost/shellbox",
 	"tempDir": "/var/tmp/shellbox"
 }
  • 비밀 키를 생성합니다; 128비트 최소 강도를 사용하는 것이 강력히 권장되므로 여기서는 16개의 난수 바이트를 16진수 문자열로 포맷하여 사용합니다:
php -r 'print bin2hex(fread(fopen("/dev/urandom","r"),16))."\n";'
  • Nginx 구성 /etc/nginx/sites-available/shellbox.internal를 만들고, 비밀 키를 안에 붙여넣습니다:
server {
  listen *:8000;

  server_name localhost;
  root /srv/shellbox/public_html;
			
  location /shellbox {
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root/shellbox.php;
    fastcgi_param SHELLBOX_SECRET_KEY "...YOUR SECRET KEY HERE...";
    fastcgi_pass unix:/run/php/php8.3-fpm.sock;
  }

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

  location /srv/shellbox/public_html {
    satisfy any;
    allow 127.0.0.1;
    deny all;
  }
}
  • 서버에서 Nginx를 실행하도록 구성된 사용자 또는 그룹이 아닌 다른 시스템 사용자 또는 그룹의 비밀 키에 대한 권한 없는 읽기 및 권한 없는 수정으로부터 아파치 구성 파일을 보호합니다:
chown root:root /etc/nginx/sites-available/shellbox.internal
chmod 600 /etc/nginx/sites-available/shellbox.internal
  • 이제 해당 서비스를 심볼릭 링크를 만듭니다:
cd /etc/nginx/sites-enable
sudo ln -sf /etc/nginx/sites-available/shellbox.internal .

Configurations

Shellbox

위에서 설정한 파일 /srv/shellbox/config/config.json 내부에서 secretKey 설정이 있으니, Nginx에서 입력한 값을 그대로 복사해 붙여넣습니다.

MediaWiki

Shellbox를 실행할 미디어위키 가족에 다음을 추가하십시오:

$wgShellboxUrls = "http://localhost/shellbox";
$wgShellboxSecretKey = '... your screct key ...';

Nginx

이제 준비가 끝났으니, 웹 서버 테스트를 진행하고 재시작합니다:

  • sudo nginx -t
  • sudo systemctl restart nginx

Extension Score

확인을 위해 Extension:Score 확장 설정을 추가한 후에, 해당 패키지에 제대로 음보가 출력되는지 확인하십시오.

그런-다음 Special:Version 정보를 확인하십시오.

이전 설정에서, 미디어위키 $wgShellboxUrls를 Shellbox에서 처럼, 배열 형태로 주니 제대로 작동을 하지 않았습니다.