웹사이트 검색

Ubuntu 18.04 LTS에서 Nginx로 Seafile을 설치하는 방법


이 튜토리얼은 다음 OS 버전에 대해 존재합니다.

  • Ubuntu 15.04(생생한 Vervet)

이 페이지에서

  1. 전제 조건
  2. 무엇을 할 것인가?\n
  3. 1단계 - Seafile Python 종속성 설치
  4. 2단계 - MySQL 설치 및 구성
  5. 3단계 - Linux 시스템용 Seafile 서버 다운로드
  6. 4단계 - MySQL과 함께 Seafile 서버 설치\n
  7. 5단계 - Letsencrypt로 Nginx 설치 및 구성
  8. 6단계 - Nginx를 Seafile 서버용 리버스 프록시로 구성\n
  9. 7단계 - Seafile 서버 구성
  10. 8단계 - Seafile 서버를 서비스로 실행하기\n
  11. 8단계 - UFW 방화벽 구성\n
  12. 9단계 - 테스트
  13. 참조

Seafile은 오픈 소스 파일 호스팅 및 클라우드 스토리지 시스템으로 여러 플랫폼(크로스 플랫폼 시스템)에서 동기화, 내장 파일 암호화를 통한 개인 정보 보호, TFA(Two-Factor Authentication) 지원, 버전 제어, 파일 잠금, 온라인 편집 등. Seafile은 C 및 Python 프로그래밍 언어로 작성되었으며 Dropbox, mega.co.nz 등과 같은 유사한 기능을 제공합니다.

이 튜토리얼에서는 Nginx 웹 서버와 MySQL 데이터베이스로 Seafile 서버를 설치하고 구성하는 방법을 단계별로 보여드리겠습니다. Ubuntu 18.04 시스템에서 최신 MySQL 5.8을 사용하여 HTTPS SSL Letsencrypt가 활성화된 Nginx 웹 서버 아래에 Seafile 서버를 설치합니다.

전제 조건

  • 우분투 18.04
  • 루트 권한\n

우리는 무엇을 할 것입니까?

  1. Seafile Python 종속성 설치
  2. MySQL 설치 및 구성
  3. Linux 시스템용 Seafile 서버 다운로드
  4. Seafile 서버 설치
  5. Nginx 및 Letsencrypt 설치
  6. Nginx를 Seafile 서버용 리버스 프록시로 구성\n
  7. Seafile 서버 구성
  8. Seafile 서버를 서비스로 실행하기\n
  9. UFW 방화벽 구성\n
  10. 테스트

1단계 - Seafile Python 의존성 설치

시스템에 Seafile 서버를 설치하기 전에 취해야 할 첫 번째 단계는 종속 항목을 설치하는 것입니다. Seafile은 Python 기반 응용 프로그램이며 서버에서 실행하려면 Python 2.7이 필요합니다.

패키지를 설치하기 전에 Ubuntu 리포지토리를 업데이트해야 합니다.

sudo apt update

이제 아래의 apt 명령을 사용하여 Seafile 서버 설치에 필요한 모든 종속성과 함께 Python 2.7을 설치하십시오.

sudo apt install python -y
sudo apt install python2.7 libpython2.7 python-setuptools python-pil python-ldap python-urllib3 ffmpeg python-pip python-mysqldb python-memcache python-requests -y

모든 종속 항목이 설치될 때까지 기다립니다.

2단계 - MySQL 설치 및 구성

Seafile은 SQLite와 MySQL 데이터베이스 서버를 지원합니다. 이 가이드에서는 설치를 위해 MySQL 데이터베이스 서버를 사용합니다. 최신 MySQL 버전 5.8을 사용하여 Seafile 서버를 배포합니다.

아래의 apt 명령을 사용하여 MySQL 서버를 설치합니다.

sudo apt install mysql-server mysql-client -y

설치가 완료되면 MySQL 서비스를 시작하고 시스템 부팅 시마다 실행되도록 활성화합니다.

systemctl start mysql
systemctl enable mysql

MySQL 서버는 Ubuntu 시스템에 설치됩니다.

이제 mysql_secure_installation 명령을 사용하여 MySQL 루트 암호를 구성해야 합니다.

mysql_secure_installation

이제 MySQL 암호 정책에 대해 묻는 메시지가 나타납니다. 0은 LOW, 1은 MEDIUM, 2는 STRONG입니다. MEDIUM 비밀번호 정책에 숫자 1을 입력하고 Enter 키를 누른 다음 보안 비밀번호를 입력하십시오.

그 외의 경우 아래와 같이 Y를 입력하십시오.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y

MySQL 루트 비밀번호 설정이 완료되었습니다.

다음으로 Seafile 서버용 새 데이터베이스를 생성합니다. 각 Seafile 구성 요소에 대해 3개의 데이터베이스를 생성하고 새 데이터베이스 사용자를 생성합니다. seafile이라는 새 사용자를 생성하고 ccnet-db, seafile-db 및 seahub-db의 3개 데이터베이스 모두에 대한 모든 권한을 갖게 됩니다.

MySQL 클라이언트 명령을 사용하여 MySQL 셸에 로그인합니다.

mysql -u root -p

이제 새 데이터베이스 ccnet-db, seafile-db, seahub-db를 만들고 새 사용자 seafile을 만듭니다. 그런 다음 Seafile 사용자에게 3개의 데이터베이스 권한을 모두 부여합니다.

아래에서 MySQL 쿼리를 실행합니다.

create database `ccnet-db` character set = 'utf8';
create database `seafile-db` character set = 'utf8';
create database `seahub-db` character set = 'utf8';

create user 'seafile'@'localhost' identified by '';

GRANT ALL PRIVILEGES ON `ccnet-db`.* to `seafile`@localhost;
GRANT ALL PRIVILEGES ON `seafile-db`.* to `seafile`@localhost;
GRANT ALL PRIVILEGES ON `seahub-db`.* to `seafile`@localhost;

MySQL 서버가 설치되었고 루트 비밀번호가 설정되었으며 Seafile 설치를 위한 데이터베이스가 생성되었습니다.

3단계 - Linux 시스템용 Seafile 서버 다운로드

이 튜토리얼에서 Seafile 서버는 systemd 시스템에서 서비스로 실행되며 루트가 아닌 사용자로 실행됩니다.

mohammad라는 새 사용자를 만듭니다.

useradd -m -s /bin/bash mohammad

이제 mohammad 사용자로 로그인하고 wget을 사용하여 Seafile 서버 최신 버전을 다운로드합니다.

su - mohammad
wget https://download.seadrive.org/seafile-server_6.2.5_x86-64.tar.gz

seafile-server.tar.gz 파일을 추출하고 마스터 디렉토리의 이름을 seafile-server로 변경합니다.

tar -xf seafile-server_6.2.5_x86-64.tar.gz
mv seafile-server-6.2.5/ seafile-server/

Seafile 서버 소스 코드는 /home/mohammad/seafile-server 디렉토리에 다운로드되었습니다.

4단계 - MySQL과 함께 Seafile 서버 설치

이 단계에서는 Seafile에서 제공하는 MySQL 설정 스크립트를 사용하여 Seafile 서버를 설치합니다.

mohammad 사용자로 로그인하고 seafile-server 디렉토리로 이동합니다.

su - mohammad
cd seafile-server/

이제 setup-seafile-mysql.sh 스크립트를 실행하십시오.

./setup-seafile-mysql.sh

설치 스크립트는 파이썬 모듈 검사를 수행합니다. 모든 종속성이 설치되었는지 확인한 다음 Enter 키를 누릅니다.

이제 Seafile 구성이 시작됩니다.

  • 서버 이름: hakase-cloud와 같은 Seafile 서버 이름을 입력합니다.\n
  • 서버 도메인 이름: Seafile 서버 cloud.hakase-labs.io의 도메인 이름을 입력합니다.\n
  • seafile 데이터 디렉토리: 구성 기본값을 그대로 두고 Enter 키를 누릅니다.
  • seafile fileserver 포트: 기본 포트 8082에 그대로 둡니다.

이제 데이터베이스 구성입니다. 스크립트에서 데이터베이스를 생성하도록 하거나 기존 데이터베이스를 사용하는 두 가지 옵션을 묻는 메시지가 표시됩니다.

기존 데이터베이스 설정을 사용하려면 옵션 2를 선택하십시오.

  • 데이터베이스 호스트: 기본 localhost\n
  • 데이터베이스 포트: mysql 일반 포트 3306의 기본값
  • 데이터베이스 사용자는 비밀번호[email 가 있는 seafile입니다.\n
  • ccnet 데이터베이스: ccnet-db
  • seafile 데이터베이스: seafile-db
  • seahub 데이터베이스: seahub-db

이제 Enter 키를 다시 눌러 Seafile 서버 구성을 확인하십시오.

그리고 설치가 완료되면 아래와 같은 결과를 얻을 수 있습니다.

Seafile 서버 설치 및 설정이 성공적으로 완료되었습니다. Seafile 파일 서버는 포트 8082에서 실행되고 Seahub 서비스는 포트 8000에서 실행됩니다.

다음으로 start 스크립트를 사용하여 Seafile 서버와 Seahub 서버를 실행하여 테스트해 보겠습니다.

mohammad 사용자는 ~/seafile-server-latest 디렉토리로 이동합니다.

su - mohammad
cd ~/seafile-server-latest/

이제 아래 명령을 실행하여 Seafile 서버를 시작합니다.

./seafile.sh start

그런 다음 seahub 서버를 실행합니다.

./seahub.sh start

seahub.sh 시작 스크립트를 처음 실행하면 Seafile 서버의 관리 사용자와 비밀번호를 생성하라는 메시지가 표시됩니다.

관리자 이메일과 암호를 입력한 다음 Enter 키를 누릅니다.

그리고 admin 사용자와 암호가 생성되었습니다. 이제 netstat 명령을 사용하여 seafile 및 seahub 서비스 포트 8082 및 8080을 확인하십시오.

netstat -plntu

그러면 Seafile 서버와 Seahub 서버가 Ubuntu 18.04 시스템에서 실행되는 것을 볼 수 있습니다.

이제 seafile과 seahub 서버를 중지합니다.

./seafile.sh stop
./seahub.sh stop

5단계 - Letsencrypt로 Nginx 설치 및 구성

이 가이드에서 Seafile 서버는 HTTPS가 활성화된 Nginx 웹 서버에서 실행됩니다. 그리고 이 단계에서는 Nginx 웹 서버와 Letsencrypt 도구를 설치한 다음 Seafile 서버 도메인 이름에 대한 SSL letsencrypt 및 DHPARAM 키를 생성합니다.

아래의 apt 명령을 사용하여 Nginx 웹 서버를 설치합니다.

sudo apt install nginx -y

설치가 완료되면 Nginx 서비스를 시작하고 시스템 부팅 시마다 실행되도록 활성화합니다.

systemctl start nginx
systemctl enable nginx

이제 SSL letsencrypt 인증서를 생성하기 위한 letsencrypt 도구를 설치하십시오.

sudo apt install letsencrypt -y

Nginx 웹 서버 및 letsencrypt 도구가 설치되었습니다.

다음으로 /etc/nginx 디렉토리로 이동하여 letsencrypt에 대한 새 구성 파일 certbot.conf를 만듭니다.

cd /etc/nginx/
vim snippets/certbot.conf

다음 구성을 거기에 붙여넣으십시오.

location /.well-known {
    alias /var/www/html/.well-known;
}

저장 및 종료.

기본 가상 호스트 파일을 편집합니다.

vim sites-available/default

서버 {...} 대괄호 아래에 다음 포함 줄을 추가합니다.

include snippets/certbot.conf;

저장 및 종료.

nginx 구성을 테스트하고 웹 서버를 다시 시작하십시오.

nginx -t
systemctl restart nginx

Seafile 서버 도메인 이름에 대한 새 letsencrypt SSL 인증서를 생성할 준비가 되었습니다.

아래와 같이 certbot 명령을 사용하여 SSL 인증서 파일을 생성합니다.

certbot certonly --rsa-key-size 4096 --webroot --agree-tos --no-eff-email --email  -w /var/www/html -d cloud.hakase-labs.io

메모:

  • 새 SSL 인증서를 생성하고 키 크기를 4096으로 지정합니다.\n

이제 /etc/letsencrypt/live 디렉토리에 있는 모든 SSL 인증서 파일을 얻을 수 있습니다.

그리고 추가 보안을 위해 OpenSSL 명령을 사용하여 크기 4096의 Diffie-Hellman 키를 생성합니다.

openssl dhparam -out /etc/nginx/dhparam.pem 4096

필요한 모든 인증서가 생성되었습니다.

6단계 - Nginx를 Seafile 서버의 리버스 프록시로 설정

/etc/nginx 구성 디렉토리로 이동하여 vim을 사용하여 새 가상 호스트 파일 seafile을 생성합니다.

cd /etc/nginx/
vim sites-available/seafile

다음 구성을 거기에 붙여넣으십시오.

 server {
        listen       80;
        server_name  cloud.hakase-labs.io;
        rewrite ^ https://$http_host$request_uri? permanent;
        server_tokens off;
    }
    server {
        listen 443 ssl http2;
        server_name cloud.hakase-labs.io;
        
        ssl on;
        ssl_certificate /etc/letsencrypt/live/cloud.hakase-labs.io/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/cloud.hakase-labs.io/privkey.pem;
        ssl_session_timeout 5m;
        ssl_session_cache shared:SSL:5m;

        ssl_dhparam /etc/nginx/dhparam.pem;

        #SSL Security
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
        ssl_ecdh_curve secp384r1;
        ssl_prefer_server_ciphers on;
        server_tokens off;
        ssl_session_tickets off;

        proxy_set_header X-Forwarded-For $remote_addr;

        location / {
            proxy_pass         http://127.0.0.1:8000;
            proxy_set_header   Host $host;
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Host $server_name;
            proxy_read_timeout  1200s;

            # used for view/edit office file via Office Online Server
            client_max_body_size 0;

            access_log      /var/log/nginx/seahub.access.log;
            error_log       /var/log/nginx/seahub.error.log;
        }

        location /seafhttp {
            rewrite ^/seafhttp(.*)$ $1 break;
            proxy_pass http://127.0.0.1:8082;
            client_max_body_size 0;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_connect_timeout  36000s;
            proxy_read_timeout  36000s;
            proxy_send_timeout  36000s;
            send_timeout  36000s;
        }
        location /media {
            root /home/mohammad/seafile-server-latest/seahub;
        }
    }

저장 및 종료.

Seafile 가상 호스트를 활성화하고 구성을 테스트하십시오.

ln -s /etc/nginx/sites-available/seafile /etc/nginx/sites-enabled/
nginx -t

오류가 없는지 확인하고 nginx 서비스를 다시 시작하십시오.

systemctl restart nginx

Seafile 서버의 리버스 프록시로 Nginx 구성이 완료되었습니다.

7단계 - Seafile 서버 구성

Nginx 웹 서버 도메인 이름으로 Seafile 서버를 실행하려면 ccnet 서비스, Seafile 서버 및 Seahub 서버에 대한 기본 Seafile 구성을 편집해야 합니다.

mohammad 사용자로 로그인하고 conf/ 디렉토리로 이동합니다.

su - mohammad
cd conf/

ccnet 서비스 구성 파일 ccnet.conf를 편집합니다.

vim ccnet.conf

SERVICE_URL 줄에서 아래와 같이 HTTPS를 사용하는 도메인 이름으로 값을 변경합니다.

SERVICE_URL = https://cloud.hakase-labs.io

저장 및 종료.

이제 Seafile 서버 설정을 위해 seafile.conf 파일을 편집하십시오.

vim seafile.conf

아래와 같이 값이 127.0.0.1 localhost인 호스트 라인을 추가합니다.

[fileserver]
host = 127.0.0.1
port = 8082

저장 및 종료.

마지막으로 seahub_settings.py 파일을 편집합니다.

vim seahub_settings.py

FILE_SERVER_ROOT 줄에서 값을 HTTPS를 사용하는 도메인 이름으로 변경합니다.

FILE_SERVER_ROOT = 'https://cloud.hakase-labs.io/seafhttp'

저장 및 종료.

8단계 - Seafile 서버를 서비스로 실행하기

이 튜토리얼에서는 Ubuntu 18.04 시스템에서 Seafile 서버를 서비스로 실행합니다. Seafile 및 Seahub에 대한 새로운 서비스 스크립트를 생성합니다.

/etc/systemd/system 디렉토리로 이동하여 새 서비스 파일 seafile.service를 만듭니다.

cd /etc/systemd/system/
vim seafile.service

거기에 다음 Seafile 서비스 스크립트를 붙여넣으십시오.

[Unit]
Description=Seafile
After=network.target mysql.service

[Service]
Type=forking
ExecStart=/home/mohammad/seafile-server-latest/seafile.sh start
ExecStop=/home/mohammad/seafile-server-latest/seafile.sh stop
User=mohammad
Group=mohammad

[Install]
WantedBy=multi-user.target

저장 및 종료.

이제 seahub 서비스 파일 seahub.service를 생성합니다.

vim seahub.service

거기에 다음 seahub 서비스 스크립트를 붙여넣습니다.

[Unit]
Description=Seafile hub
After=network.target seafile.service

[Service]
Type=forking
ExecStart=/home/mohammad/seafile-server-latest/seahub.sh start
ExecStop=/home/mohammad/seafile-server-latest/seahub.sh stop
User=mohammad
Group=mohammad

[Install]
WantedBy=multi-user.target

저장 및 종료.

메모:

  • seafile.sh 및 seahub.sh 스크립트의 경로를 변경합니다.\n

이제 systemd 시스템을 다시 로드하십시오.

systemctl daemon-reload

그리고 seafile과 seahub 서비스를 시작합니다.

systemctl start seafile
systemctl start seahub

시스템 부팅 시마다 이러한 서비스가 시작되도록 활성화합니다.

systemctl enable seafile
systemctl enable seahub

seafile 및 seahub 서비스가 실행 중입니다. 아래 명령을 사용하여 확인하십시오.

systemctl status seafile
systemctl status seahub

netstat -plntu

8단계 - UFW 방화벽 구성

모든 시스템에서 항상 방화벽을 켜는 것이 좋습니다. 우분투 시스템의 경우 UFW 방화벽을 켜고 SSH, HTTP 및 HTTPS 포트를 추가합니다.

ssh 포트를 추가하고 UFW 방화벽을 활성화합니다.

ufw allow ssh
ufw enable

y를 입력하여 방화벽을 켭니다.

이제 HTTP 및 HTTPS 서비스를 추가하십시오.

ufw allow http
ufw allow https

방화벽에서 목록 규칙을 확인하십시오.

ufw status numbered

그리고 목록에 세 가지 서비스 SSH, HTTP 및 HTTPS가 표시됩니다.

9단계 - 테스트

웹 브라우저를 열고 Seafile 서버 URL 설치를 입력하십시오. 내 것은:

그러면 보안 HTTPS 연결 로그인 페이지로 리디렉션됩니다.

관리자 이메일[email 과 비밀번호 mypassword를 입력한 다음 로그인 버튼을 클릭합니다.

이제 아래와 같은 Seafile 대시보드가 나타납니다.

추가 - Seafile 대시보드에 이미지와 보기를 업로드했습니다.

Ubuntu 18.04에서 Nginx 웹 서버 및 Letsencrypt로 Seafile 서버 설치 및 구성이 성공적으로 완료되었습니다.

참조

  • https://manual.seafile.com/