웹사이트 검색

Rocky Linux에 Wikijs를 설치하는 방법


이 페이지에서

  1. 전제 조건
  2. Rocky Linux에 Nodejs 설치
  3. PostgreSQL 데이터베이스 설치
  4. 새 데이터베이스 및 사용자 만들기
  5. Wiki.js 다운로드 및 구성
  6. Wiki.js를 시스템 서비스로 설정
  7. Wiki.js용 리버스 프록시로 Nginx 설치 및 구성\n
  8. SSL Letsencrypt로 Wikijs 보호\n
  9. Wiki.js 관리자 및 기본 홈페이지 구성\n
  10. 결론

Wiki.js는 JavaScript로 작성되고 Node.js 런타임에서 실행되는 오픈 소스 위키 소프트웨어이며 APGL-v3 라이선스에 따라 출시됩니다. Wiki.js는 현대 웹용으로 설계된 아름답고 직관적인 사용자 인터페이스를 갖춘 가볍고 강력한 위키 소프트웨어입니다. Wiki.js는 매우 확장 가능한 위키 소프트웨어이며 다양한 유형의 문서 및 배포에 적합하며 기술자와 비기술자 모두 사용할 수 있습니다.

Wiki.js는 기능을 확장하고 강력하고 확장 가능한 위키 소프트웨어로 만들기 위해 다양한 유형의 모듈로 뒷받침됩니다. 일부 주목할만한 기본 Wiki.js 기능은 다음과 같습니다.

  • 여러 데이터베이스(PostgreSQL, MySQL, SQLite 및 MSSQL Server)를 지원합니다.\n
  • 개발자를 위한 Markdown, 일반 사용자를 위한 WYSIWYG, 코드 및 테이블 형식(Excel과 유사)을 비롯한 여러 편집기\n
  • 내장 데이터베이스 기반 검색 엔진, Apache Solr, Elasticsearch 등과 같은 다른 검색 엔진도 지원합니다.\n
  • Git, sFTP, AWS S3, Google Drive, Dropbox 등과 같은 백업용 다중 데이터 스토리지를 지원합니다.\n

이 가이드에서는 Rocky Linux 서버에 Wiki.js를 설치하는 방법을 배웁니다. PostgreSQL을 기본 데이터베이스로 사용하고 Nginx 웹 서버를 리버스 프록시로 사용하여 Node.js의 최신 LTS 버전과 함께 Wiki.js를 설치하게 됩니다.

전제 조건

  • Rocky Linux 시스템. 모든 패키지 및 리포지토리가 최신 버전으로 업데이트되었는지 확인하십시오.\n
  • 루트 사용자 또는 루트 권한이 있는 사용자. 새 패키지를 설치하고 시스템 구성을 편집하는 데 이 사용자를 사용하게 됩니다.\n

Rocky Linux에 Nodejs 설치

먼저 Rocky Linux에 Node.js를 설치합니다. 그리고 기본적으로 AppStream 리포지토리는 여러 Node.js LTS 버전을 제공합니다.

1. 다음 명령을 실행하여 nodejs용 리포지토리 모듈을 확인합니다.

sudo dnf module list nodejs

여러 버전의 Node.js 모듈이 표시됩니다.

2. 아래 명령을 사용하여 nodejs:14 리포지토리 모듈을 활성화합니다.

sudo dnf module enable nodejs:14

y를 입력하여 nodejs:14 리포지토리 모듈을 활성화합니다.

3. 그런 다음 다음 명령을 실행하여 Node.js 및 npm 패키지를 설치합니다.

sudo dnf install nodejs npm

y를 입력하고 Enter를 눌러 설치를 확인하십시오.

4. 설치가 완료되면 다음 명령어를 실행하여 Node.js 및 npm 버전을 확인합니다.

node --version
npm --version

아래와 비슷한 출력이 표시됩니다.

# Node.js version
v14.17.3

# NPM version
6.14.13

PostgreSQL 데이터베이스 설치

이 단계에서는 공식 PostgreSQL 리포지토리에서 PostgreSQL을 설치합니다. 프로덕션의 경우 PostgreSQL을 Wiki.js의 기본 데이터베이스로 사용하는 것이 좋습니다.

1. 이제 다음 명령을 실행하여 PostgreSQL 리포지토리를 Rocky Linux 시스템에 추가합니다.

sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

2. 다음 명령을 사용하여 기본 Rocky Linux PostgreSQL 리포지토리를 비활성화합니다.

sudo dnf module -qy disable postgresql

3. 다음으로 아래 명령을 실행하여 Rocky Linux 서버에 PostgreSQL 13을 설치합니다.

sudo dnf install postgresql13-server

y를 입력하고 Enter를 눌러 설치를 계속하십시오.

4. PostgreSQL 설치가 완료되면 다음 명령을 실행하여 PostgreSQL 데이터베이스를 초기화하고 PostgreSQL 서비스를 시작 및 활성화합니다.

아래 명령을 사용하여 PostgreSQL 데이터베이스를 초기화합니다.

sudo /usr/pgsql-13/bin/postgresql-13-setup initdb

아래 명령을 사용하여 시스템 시작 시 PostgreSQL이 자동으로 시작되도록 활성화합니다.

sudo systemctl enable postgresql-13

이제 PostgreSQL 서비스를 시작하고 다음 명령을 사용하여 상태를 확인합니다.

sudo systemctl start postgresql-13
sudo systemctl status postgresql-13

PostgreSQL 서비스가 실행 중인 경우 아래 스크린샷과 같이 메시지 출력이 활성(실행 중)으로 표시됩니다.

새 데이터베이스 및 사용자 만들기

PostgreSQL 서버를 설치한 후 Wiki.js 설치를 위한 새 데이터베이스와 사용자를 생성하게 됩니다.

1. 다음 명령을 실행하여 PostgreSQL 셸에 로그인합니다.

sudo -u postgres psql

2. 다음 쿼리를 사용하여 암호가 wikijspassworddb인 새 PostgreSQL 사용자 이름 wiki를 만듭니다.

CREATE USER wiki WITH 
CREATEDB
PASSWORD 'wikijspassworddb';

3. 이제 새 데이터베이스 이름 wikidb를 만들고 아래 PostgreSQL 쿼리를 사용하여 사용자 wiki를 데이터베이스 소유자로 만듭니다.

CREATE DATABASE wikidb OWNER wiki;

이제 \\q를 입력하여 PostgreSQL 셸을 종료합니다.

선택적으로 아래 쿼리를 사용하여 사용자와 데이터베이스를 확인할 수 있습니다.

# Check available users
\du

# Display list of databases
\l

Wiki.js 다운로드 및 구성

이 가이드에서는 Wiki.js를 서비스로 실행하고 루트가 아닌 사용자로 실행합니다.

1. 아래 명령을 실행하여 Wiki.js 설치를 위한 새 사용자 wiki를 만듭니다.

sudo adduser --system --user-group --no-create-home --shell /sbin/nologin wiki

2. 새 디렉토리 /var/wiki를 생성하고 작업 디렉토리를 여기로 변경합니다. 그런 다음 wget 명령을 실행하여 안정적인 최신 버전의 Wiki.js 소스 코드를 다운로드합니다.

mkdir -p /var/wiki; cd /var/wiki/
wget https://github.com/Requarks/wiki/releases/download/2.5.201/wiki-js.tar.gz

다운로드 프로세스가 완료되면 아래 tar 명령을 사용하여 Wiki.js 소스 코드를 추출합니다.

tar -xf wiki-js.tar.gz

3. 다음으로 Wiki.js 샘플 구성을 config.yml에 복사하고 nano로 편집합니다.

cp config.sample.yml config.yml
nano config.yml

데이터베이스 이름, 사용자, 암호의 세부 정보를 아래와 같이 변경합니다.

db:
  type: postgres

  # PostgreSQL / MySQL / MariaDB / MS SQL Server only:
  host: localhost
  port: 5432
  user: wiki
  pass: wikijspassworddb
  db: wikidb
  ssl: false

아래와 같이 SQLite 저장소 옵션 앞에 #을 입력합니다.

  # SQLite only:
  #storage: path/to/database.sqlite

bindIP 옵션을 127.0.0.1로 변경하여 로컬 IP에서만 Wiki.js를 실행합니다.

# ---------------------------------------------------------------------
# IP address the server should listen to
# ---------------------------------------------------------------------
# Leave 0.0.0.0 for all interfaces

bindIP: 127.0.0.1

구성을 저장하고 Ctrl+x 버튼을 눌러 종료하고 y를 입력한 다음 Enter 키를 누릅니다.

4. 다음으로 가장 중요한 것은 아래 명령어를 사용하여 /var/wiki 디렉토리의 소유권을 사용자 및 그룹 위키로 변경하는 것입니다.

sudo chown -R wiki:wiki /var/wiki

Wiki.js를 시스템 서비스로 설정

1. 새 systemd 서비스 파일을 생성하려면 작업 디렉토리를 /etc/systemd/system으로 변경하고 nano를 사용하여 새 서비스 파일 wikijs.service를 생성합니다.

cd /etc/systemd/system/
sudo nano wikijs.service

다음 구성을 복사하여 붙여넣습니다.

[Unit]
Description=Wiki.js
After=network.target postgresql-13.service

[Service]
Type=simple
ExecStart=/bin/node server
Restart=always
# Consider creating a dedicated user for Wiki.js here:
User=wiki
Group=wiki
Environment=NODE_ENV=production
WorkingDirectory=/var/wiki

[Install]
WantedBy=multi-user.target

Ctrl+x를 누르고 y를 입력한 다음 Enter를 눌러 구성을 저장하고 종료합니다.

2. systemd-manager를 다시 로드하여 새 서비스 구성을 적용합니다.

sudo systemctl daemon-reload

3. 다음으로 아래 명령을 사용하여 시스템 시작 시 서비스 wikijs가 실행되도록 활성화합니다.

sudo systemctl enable wikijs

4. wikijs 서비스를 시작하고 다음 명령을 사용하여 상태를 확인합니다.

sudo systemctl start wikijs
sudo systemctl status wikijs

이제 wikijs.service가 활성화되고 Rocky Linux 시스템에서 실행되는 것을 볼 수 있습니다.

Nginx를 Wiki.js용 리버스 프록시로 설치 및 구성

이 단계에서는 Nginx 웹 서버를 Wiki.js용 리버스 프록시로 설치 및 구성합니다. 서버에 Nginx 웹 서버를 설치했다면 Nginx 서버 블록 구성을 위한 2단계로 이동합니다.

1. Nginx 웹 서버를 설치하려면 아래의 dnf 명령을 실행합니다.

sudo dnf install nginx

y를 입력하여 Nginx 웹 서버를 확인하고 설치합니다.

2. 설치가 완료되면 작업 디렉토리를 /etc/nginx/conf.d로 변경하고 nano를 사용하여 새 Nginx 서버 블록 구성 wikijs.conf를 생성합니다.

cd /etc/nginx/conf.d/
sudo nano wikijs.conf

다음 구성을 복사하여 붙여넣고 server_name 옵션 값을 도메인 이름으로 변경하십시오.

server {
    listen 80;

    server_name wiki.domain-name.io;

    charset utf-8;
    client_max_body_size 50M;

    location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_next_upstream error timeout http_502 http_503 http_504;
    }

}

Ctrl+x를 누르고 y를 입력한 다음 Enter를 눌러 구성을 저장하고 종료합니다.

3. 다음으로 Nginx 구성을 테스트하고 오류가 없는지 확인한 다음 Nginx 서비스를 활성화합니다.

sudo nginx -t
sudo systemctl enable nginx

4. 이제 다음 명령을 실행하여 Nginx 서비스를 시작하고 상태를 확인합니다.

sudo systemctl start nginx
sudo systemctl enable nginx

아래와 같이 Nginx 서비스의 출력이 활성(실행 중)인 것을 볼 수 있습니다.

SSL Letsencrypt로 Wikijs 보호

이 단계에서는 SSL Letsencrypt를 사용하여 Wiki.js 설치를 보호합니다.

1. 다음 명령을 실행하여 certbot 및 certbot-nginx 플러그인을 설치합니다.

sudo dnf install certbot python3-certbot-nginx

2. 설치가 완료되면 아래 certbot 명령을 사용하여 라디칼 도메인 이름에 대한 새 SSL Letsencrtypt를 생성합니다.

sudo certbot --nginx --agree-tos --email  -d wiki.domain-name.io

그리고 아래에 몇 가지 질문을 받게 됩니다.

  • 이메일 주소: SSL 인증서가 만료되면 이 이메일로 알려드립니다.
  • Letsencrypt TOS(서비스 약관): A를 입력하여 동의합니다.\n
  • EFF와 이메일 공유: 아니오를 N으로 선택할 수 있습니다.\n
  • HTTP를 HTTPS로 자동 리디렉션: 자동 리디렉션을 사용하려면 2번을 선택합니다.\n

프로세스가 완료되면 /etc/letsencrypt/live/wiki.domain-name.io 디렉토리에서 SSL 인증서를 사용할 수 있음을 알 수 있습니다. 그리고 letsencrypt의 추가 구성으로 Nginx 서버 블록 구성이 변경되었습니다.

Wiki.js 관리 및 기본 홈페이지 구성

웹 브라우저를 열고 주소 표시줄에 Wiki.js 설치의 URL 주소를 입력합니다.

1. HTTPS 연결로 리디렉션되고 다음 페이지가 표시됩니다.

이메일 주소 및 비밀번호와 함께 관리자 계정의 세부 정보를 입력한 다음 Wiki.js 도메인을 사이트 URL로 입력하고 설치 버튼을 클릭합니다.

Wiki.js 설치를 기다립니다.

2. 그리고 설치가 완료되면 아래와 같이 Wiki.js 로그인 페이지로 이동됩니다.

관리자 이메일 주소와 암호를 입력한 다음 로그인 버튼을 클릭합니다.

3. 그러면 Wiki.js의 환영 메시지가 표시됩니다.

버튼 + CREATE HOME PAGE를 클릭하여 위키에 대한 새 홈페이지를 만듭니다.

4. 편한대로 편집기를 선택하고 해당 편집기를 클릭하십시오. 이 예에서는 Markdown 편집기를 사용합니다.

5. 페이지 속성 팝업에서 세부 정보 제목과 홈 페이지에 대한 간단한 설명을 입력합니다. 그리고 경로를 기본 홈으로 둡니다.

확인을 클릭하여 페이지 속성 구성을 확인합니다.

6. 홈 페이지의 내용을 입력한 다음 만들기 버튼을 클릭하여 저장합니다.

7. 이제 아래와 같이 Wiki.js 홈 페이지로 리디렉션됩니다.

결론

축하합니다! 이제 Rocky Linux 서버에서 Wiki.js로 Wiki를 성공적으로 만들었습니다. Wiki.js는 이제 안정적인 최신 버전의 Node.js, 데이터베이스 PostgreSQL 및 Nginx 리버스 프록시와 함께 실행됩니다. 또한 SSL Letsencrypt로 보호됩니다. 다음 단계에서는 필요에 따라 분석, 인증, 로깅 및 코드/텍스트 편집기와 같은 몇 가지 추가 모듈을 추가할 수 있습니다. 그리고 프로젝트에 대한 문서를 작성할 준비가 되었습니다.