웹사이트 검색

CentOS 7에서 Nginx로 Seafile을 설치하는 방법


이 페이지에서

  1. 전제 조건
  2. 1단계 - Seafile용 CentOS 준비
  3. 2단계 - Seafile 종속성 설치
  4. 3단계 - MariaDB 구성
  5. 4단계 - Seafile 설치
  6. 5단계 - Seafile 및 Seahub 서비스 구성
  7. 6단계 - SSL 인증서 파일 생성
  8. 7단계 - Nginx를 역방향 프록시로 구성\n
  9. 8단계 - 방화벽 구성D\n
  10. 9단계 - Seafile 테스트
  11. 결론

Seafile은 자체 서버에서 호스팅되는 Dropbox, mega.co.nz 등과 같은 유사한 기능을 제공하는 사설 클라우드 소프트웨어입니다. Seafile은 Python 프로그래밍 언어를 기반으로 하며 오픈 소스 라이선스로 출시되어 나만의 프라이빗 클라우드를 만들 수 있으며 훨씬 더 안전합니다.

Seafile은 데이터를 안전하게 저장하기 위해 암호화를 지원합니다. 저장소 라이브러리의 파일을 암호화하려면 라이브러리를 생성할 때 암호를 설정해야 합니다. 암호는 Seafile 클라우드에 저장되지 않습니다. 따라서 서버 관리자도 암호 없이는 암호화된 데이터를 볼 수 없습니다.

이 튜토리얼에서는 Nginx 웹 서버와 MariaDB를 데이터베이스 서버로 사용하여 CentOS 7에 Seafile을 설치합니다.

전제 조건

  • CentOS 7 서버
  • 루트 권한\n

1단계 - Seafile용 CentOS 준비

ssh 루트 암호로 centOS 서버에 로그인합니다.

ssh 
TYPE YOUR PASSWORD

    vim으로 SELinux 구성 파일을 편집합니다.

    vim /etc/sysconfig/selinux

    값 강제를 비활성화로 바꿉니다.

    SELINUX=disabled

    파일을 저장하고 편집기를 종료합니다.

    SELinux 정책 변경 사항을 적용하기 위해 서버를 재부팅합니다.

    reboot

    서버 재부팅을 기다린 다음 루트 사용자로 서버에 다시 로그인하십시오.

    아래 명령으로 selinux를 확인하십시오.

    getenforce

    결과로 비활성화됨이 표시되어야 합니다.

    2단계 - Seafile 종속성 설치

    Seafile은 Python을 기반으로 하므로 먼저 설치를 위해 Python을 설치해야 합니다. Seafile은 SQLite 및 MySQL/MariaDB 데이터베이스를 지원합니다. 여기서는 MariaDB가 SQLite보다 더 나은 성능을 제공하므로 여기서는 Seafile용 데이터베이스로 MariaDB를 사용하겠습니다. Nginx는 Seafile 및 Seahub의 리버스 프록시로 사용됩니다.

    이 단계에서는 여러 Python 패키지인 MariaDB 및 Nginx를 설치합니다. CentOS 서버에 EPEL 저장소를 설치하는 것으로 시작합니다.

    yum -y install epel-release

    다음으로 Python 패키지 MariaDB 및 Nginx를 설치합니다.

    yum -y install python-imaging MySQL-python python-simplejson python-setuptools mariadb mariadb-server nginx

    모든 패키지가 설치될 때까지 기다리십시오.

    3단계 - MariaDB 구성

    2단계에서 이미 MariaDB 서버를 설치했으므로 이제 서비스를 시작하고 루트 암호를 구성하기만 하면 됩니다.

    MariaDB를 시작하고 아래 명령을 사용하여 루트 암호를 구성합니다.

    systemctl start mariadb
    mysql_secure_installation

    루트 암호를 입력하십시오.

    Set root password? [Y/n] Y
    New password:
    Re-enter new password:
    Remove anonymous users? [Y/n] Y
    Disallow root login remotely? [Y/n] Y
    Remove test database and access to it? [Y/n] Y
    Reload privilege tables now? [Y/n] Y

    MariaDB 루트 암호가 구성되었으며 이제 mysql 셸에 로그인할 수 있습니다.
    참고: MariaDB 명령줄 셸의 이름은 mysql입니다.

    Seafile용으로 3개의 데이터베이스를 생성합니다:

    1. ccnet_db
    2. seafile_db
    3. seahub_db

    그리고 비밀번호 yourpassword로 새 사용자 seacloud를 생성합니다. 비밀번호를 안전한 비밀번호로 바꾸세요!

    mysql 클라이언트로 mysql 셸에 로그인합니다.

    mysql -u root -p
    TYPE YOUR PASSWORD

    Seafile 설치를 위한 데이터베이스와 사용자를 생성하려면 아래의 mysql 쿼리를 실행하세요.

    create database ccnet_db character set = 'utf8';
    create database seafile_db character set = 'utf8';
    create database seahub_db character set = 'utf8';

    create user identified by 'yourpassword';
    flush privileges;
    exit

    위의 명령에서 암호를 자신의 암호로 바꿉니다.

    4단계 - Seafile 설치

    이 단계에서는 Seafile을 설치합니다. Seafile은 nginx 사용자로 실행되므로 nginx를 seafile 및 seahub 서비스의 리버스 프록시로 사용할 수 있습니다.

    /var/www/seafile 디렉토리의 nginx 사용자 아래에 seafile을 설치하고 해당 디렉토리를 만든 다음 cd로 입력합니다.

    mkdir -p /var/www/seafile
    cd /var/www/seafile

    wget 명령으로 Seafile을 다운로드하고 다운로드한 압축을 풉니다.

    wget https://bintray.com/artifact/download/seafile-org/seafile/seafile-server_6.0.5_x86-64.tar.gz
    tar -xzvf seafile-server_6.0.5_x86-64.tar.gz

    디렉터리 이름을 seafile-server로 바꾸고 해당 디렉터리로 전환합니다.

    mv seafile-server-6.0.5 seafile-server
    cd seafile-server/

    setup-seafile-mysql.sh 파일을 실행하여 데이터베이스를 구성합니다.

    ./setup-seafile-mysql.sh

    Enter 키를 누르면 아래 정보를 묻는 메시지가 나타납니다.

    • 서버 이름 - 서버 호스트 이름인 natsume을 사용하겠습니다.\n
    • 서버 IP 또는 도메인 - 서버의 IP 주소, 제 경우에는 192.168.1.115
    • 기본 데이터 디렉터리 - 그냥 Enter 키를 누르십시오.
    • 기본 포트 - Enter 키를 누릅니다.
    • 이제 데이터베이스 구성을 위해 2번을 선택합니다.\n

    MySQL 구성의 경우:

    • 기본 호스트 사용 - localhost\n
    • 기본 포트 - 3306
    • mysql 사용자 - seacloud
    • 비밀번호는 귀하의 비밀번호입니다.\n
    • ccnet 데이터베이스는 ccnet_db입니다.
    • seafile 데이터베이스는 seafile_db입니다.
    • seahub 데이터베이스는 seahub_db입니다.

    Enter 키를 누르면 스크립트가 Seafile용 데이터베이스 테이블을 생성합니다.

    이제 seafile과 seahub 서비스를 시작할 수 있습니다.

    ./seafile.sh start
    ./seahub.sh start

    seahub.sh 파일이 실행되면 관리자 구성을 묻는 메시지가 나타납니다.

    관리자 이메일과 비밀번호를 입력하면 seahub 서비스가 실행됩니다.

    현재 Seafile이 설치되어 실행 중입니다. 웹 브라우저에서 포트 8000(제 경우에는 192.168.1.115:8000)의 서버 IP로 Seafile에 액세스할 수 있습니다. seafile 서버와 systemd 서비스 파일로 seafile을 실행합니다.

    그래서 우리는 당분간 seafile과 seahub 서비스를 중단해야 합니다.

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

    5단계 - Seafile 및 Seahub 서비스 구성

    우리는 nginx 사용자로 seafile을 실행할 것이므로 seafile 설치 디렉토리와 seahub_cache 디렉토리의 소유자를 nginx 사용자로 변경해야 합니다:

    cd /var/www/
    chown -R nginx:nginx *
    chown -R nginx:nginx /tmp/seahub_cache

    다음으로 systemd 디렉토리로 이동하여 vim으로 seafile.service 파일을 생성합니다.

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

    Seafile 서비스 구성을 아래에 붙여넣으십시오:

    [Unit]
    Description=Seafile Server
    Before=seahub.service
    After=network.target mariadb.service

    [Service]
    Type=oneshot
    ExecStart=/var/www/seafile/seafile-server/seafile.sh start
    ExecStop=/var/www/seafile/seafile-server/seafile.sh stop
    RemainAfterExit=yes
    User=nginx
    Group=nginx

    [Install]
    WantedBy=multi-user.target

    저장 및 종료.

    이제 새로운 seahub.service 파일을 생성합니다.

    vim seahub.service

    그리고 아래에 구성을 붙여넣습니다.

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

    [Service]
    Type=oneshot
    ExecStart=/var/www/seafile/seafile-server/seahub.sh start-fastcgi
    ExecStop=/var/www/seafile/seafile-server/seahub.sh stop
    RemainAfterExit=yes
    User=nginx
    Group=nginx

    [Install]
    WantedBy=multi-user.target

    저장 및 종료.

    systemd 서비스를 다시 로드하고 systemctl로 seafile과 seahub를 시작합니다.

    systemctl daemon-reload
    systemctl start seafile
    systemctl start seahub

    오류가 없는지 확인하고 포트 8082 및 8000에서 seafile 및 seahub 서비스가 실행 중인지 확인합니다.

    netstat -plntu

    6단계 - SSL 인증서 파일 생성

    이 튜토리얼에서는 Nginx 프록시를 통해 Seafile을 실행하고 Nginx는 데이터 보안을 위한 보안(HTTPS) 연결을 제공합니다. 무료 SSL 인증서 파일 또는 유료 SSL 인증서를 사용할 수 있으며 이는 구성에 중요하지 않습니다. 이 단계에서는 /etc/nginx/ssl 디렉토리에 OpenSSL을 사용하여 자체 서명된 SSL 인증서 파일을 생성합니다.

    ssl 디렉터리를 만듭니다.

    mkdir -p /etc/nginx/ssl
    cd /etc/nginx/ssl

    아래 명령을 사용하여 자체 서명된 인증서 파일과 dhparam 파일을 생성합니다.

    openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048
    openssl req -new -x509 -sha256 -days 365 -newkey rsa:2048 -nodes -keyout server.key -out server.crt

    이름, 상태, 이메일, 도메인 이름 등과 같이 OpenSSL에서 요청한 대로 인증서 세부 정보에 응답합니다. 그런 다음 디렉터리 및 인증서 파일의 권한을 변경합니다.

    chmod -R 700 /etc/nginx/ssl
    chmod 400 server.*
    chmod 400 dhparam.pem

    SSL 인증서 파일이 생성되었습니다.

    7단계 - Nginx를 역방향 프록시로 구성

    이 단계에서는 Nginx를 포트 8000 및 8002에서 seafile 서버의 역방향 프록시로 구성합니다.

    nginx 구성 디렉토리로 이동하여 Seafile용 새 가상 호스트 파일을 만듭니다.

    cd /etc/nginx/
    vim conf.d/seafile.conf

    아래에 가상 호스트 구성을 붙여넣으십시오.

    server {  
            listen        80;
            server_name   cloud.natsume.co;
            return 301  https://$host$request_uri;
    }

    server { 
        listen 443 ssl;
        server_name cloud.natsume.co;
        ssl on;
        ssl_protocols           TLSv1 TLSv1.1 TLSv1.2;
        ssl_certificate         /etc/nginx/ssl/server.crt;
        ssl_certificate_key    /etc/nginx/ssl/server.key;

        ssl_ciphers  'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4';
        ssl_dhparam   /etc/nginx/ssl/dhparam.pem;
        ssl_prefer_server_ciphers  on;

        location / {
            fastcgi_pass    127.0.0.1:8000;
            fastcgi_param   SCRIPT_FILENAME     $document_root$fastcgi_script_name;
            fastcgi_param   PATH_INFO           $fastcgi_script_name;

            fastcgi_param   SERVER_PROTOCOL        $server_protocol;
            fastcgi_param   QUERY_STRING        $query_string;
            fastcgi_param   REQUEST_METHOD      $request_method;
            fastcgi_param   CONTENT_TYPE        $content_type;
            fastcgi_param   CONTENT_LENGTH      $content_length;
            fastcgi_param   SERVER_ADDR         $server_addr;
            fastcgi_param   SERVER_PORT         $server_port;
            fastcgi_param   SERVER_NAME         $server_name;
            fastcgi_param   REMOTE_ADDR         $remote_addr;

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

        # Reverse Proxy for seahub
        location /seafhttp {
            rewrite ^/seafhttp(.*)$ $1 break;
            proxy_pass http://127.0.0.1:8082;
            client_max_body_size 0;
            proxy_connect_timeout  36000s;
            proxy_read_timeout  36000s;
            proxy_send_timeout  36000s;
            send_timeout  36000s;
        }

        #CHANGE THIS PATH WITH YOUR OWN DIRECTORY
        location /media {
            root /var/www/seafile/seafile-server/seahub;
        }

    }

    저장 및 종료.

    도메인 이름으로 cloud.natsume.co를 사용하겠습니다. 위 구성에서 자신의 도메인 이름으로 바꾸십시오.

    이제 Nginx 구성을 테스트하고 오류가 없는지 확인하십시오.

    nginx -t

    systemctl 명령으로 Nginx를 시작합니다.

    systemctl start nginx

    netstat가 제공하는 목록에서 포트 80 및 443을 사용할 수 있는지 확인하십시오.

    netstat -plntu

    다음으로 Seafile 구성에 도메인 이름을 추가해야 합니다. seafile 디렉토리로 이동하여 구성 파일을 편집합니다.

    cd /var/www/seafile/
    vim conf/ccnet.conf

    서비스 URL을 도메인 이름으로 변경합니다.

    SERVICE_URL = https://cloud.natsume.co

    저장 및 종료.

    seahub 구성 파일을 편집합니다.

    vim conf/seahub_settings.py

    두 번째 줄에 아래 구성을 추가합니다.

    HTTP_SERVER_ROOT = 'https://cloud.natsume.co/seafhttp'

    여기에서 도메인 이름을 귀하의 도메인으로 다시 바꾸십시오. 저장 및 종료.

    Seafile을 다시 시작하고 부팅 시 시작하도록 모든 서비스를 추가하십시오:

    systemctl restart seafile
    systemctl restart seahub

    systemctl enable nginx
    systemctl enable mariadb
    systemctl enable seafile
    systemctl enable seahub

    8단계 - 방화벽 구성D

    7단계에서 HTTP 및 HTTPS 포트를 사용하도록 Nginx를 구성했습니다. 이제 방화벽에서 해당 포트를 firewalld에 추가하여 열어야 합니다.

    방화벽을 시작합니다.

    systemctl start firewalld
    systemctl enable firewalld

    아래의 firewall-cmd 명령을 사용하여 방화벽 구성에 HTTP 및 HTTPS 포트를 추가합니다.

    firewall-cmd --zone=public --add-port=80/tcp --permanent
    firewall-cmd --zone=public --add-port=443/tcp --permanent

    방화벽 구성을 다시 로드하고 포트 목록을 확인하십시오.

    firewall-cmd --reload
    firewall-cmd --list-all

    9단계 - Seafile 테스트

    브라우저를 열고 seafile 도메인 이름을 입력하세요. 제 경우에는 cloud.natsume.co를 입력하면 https 연결로 리디렉션됩니다.

    관리자 이메일과 비밀번호를 입력하고 로그인을 클릭합니다.

    Seafile 관리 대시보드:

    Seafile 파일 보기.

    Nginx를 리버스 프록시로 사용하는 Seafile과 SSL이 CentOS 7 서버에 성공적으로 설치되었습니다.

    결론

    오늘날 다양한 클라우드 애플리케이션과 함께 Seafile은 오늘날 사용하기에 적합한 프라이빗 클라우드 솔루션입니다. 라이브러리/폴더 수준의 암호화 기능을 사용하면 데이터를 Seacloud 서버에 안전하게 저장할 수 있습니다. 그 외에도 Seafile은 자체 서버에서 구성하고 구현하기 쉽습니다.