원문 보기: https://dawoum.duckdns.org/wiki/Shellbox/Setup_shellbox_on_Nginx
위키미디어에서는 미디어위키 운영을 위해 Apache HTTP Server를 사용합니다. 이러다 보니, 그 설정의 설명이 대체로 아파치 웹 서버로 제한되는 경우가 있습니다. 물론 추후에 사용자가 늘어남에 따라 누군가의 기여로 다른 웹 서버, 예를 들어, Nginx에 대한 설정이 추가되기도 합니다.
한편, 여러 미디어위키 지원 호스팅 중에서 Miraheze는 Nginx 웹 서버를 사용하기 때문에, 여기서 기본적인 정보를 얻을 수 있습니다. 이 위키 농장의 운영을 위한 개발 과정과 결과물은 다음에서 볼 수 있습니다:
링크 내부에서 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에서 처럼, 배열 형태로 주니 제대로 작동을 하지 않았습니다.