웹사이트 검색

Rocky Linux에 Nextcloud를 설치하는 방법


이 페이지에서

  1. 전제 조건
  2. Apache/Httpd 웹 서버 설치
  3. Rocky Linux에 PHP 설치
  4. MariaDB 설치 및 구성
  5. Nextcloud용 데이터베이스 생성
  6. Nextcloud 소스 코드 다운로드
  7. Apache/Httpd mod_ssl 모듈 활성화\n
  8. Certbot으로 SSL Letsencrypt 생성
  9. Nextcloud용 Apache 가상 호스트 설정\n
  10. Nextcloud 설치
  11. Nextcloud 성능 튜닝
  12. 결론

Nextcloud는 Dropbox, Google Drive 또는 Mega.nz와 같은 파일 호스팅 서비스를 만들 수 있는 무료 오픈 소스 소프트웨어입니다. 원래 owncloud 개발자 Frank Karlitschek이 만들었습니다. 2016년에 그는 Owncloud 프로젝트를 분기하고 "Nextcloud"라는 이름으로 새 프로젝트를 만듭니다.

이때까지 Nextcloud 프로젝트는 빠르게 성장하고 파일 호스팅 소프트웨어 이상이 되었습니다. 많은 플러그인의 지원으로 Nextcloud는 이러한 협업 소프트웨어가 됩니다. 프로젝트 관리, 화상 회의, 공동 편집, 메모 작성, 이메일 클라이언트 등을 위한 플러그인을 설치할 수 있습니다.

이 가이드에서는 Rocky Linux 8.4에 Nextcloud를 설치하는 방법을 배웁니다. LAMP 스택(Linux, Apache2/httpd, MySQL/MariaDB 및 PHP) 아래에 Nextcloud를 설치하게 됩니다.

전제 조건

  • Rocky Linux 서버. 모든 패키지가 최신 버전으로 업데이트되었는지 확인하십시오.\n
  • 루트 권한이 있는 사용자. 이 사용자는 sudo 명령을 통해 루트 권한을 얻습니다.\n

Apache/Httpd 웹 서버 설치

처음에는 Rocky Linux 서버에 Apache 또는 httpd 웹 서버를 설치합니다.

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

sudo dnf install httpd

"y"를 입력하고 "Enter"를 눌러 httpd 패키지를 확인하고 설치하십시오.

2. 설치가 완료되면 다음 명령을 사용하여 httpd 서비스를 활성화하고 시작합니다.

sudo systemctl enable httpd
sudo systemctl start httpd

"systemctl enable" 명령은 부팅할 때마다 서비스가 시작되도록 합니다.

3. 그런 다음 아래 명령을 실행하여 httpd 서비스를 확인합니다.

sudo systemctl status httpd

그러면 아래와 비슷한 결과를 얻을 수 있습니다.

상단 스크린샷에서 볼 수 있듯이 httpd가 활성화되어 실행 중입니다.

록키 리눅스에 PHP 설치하기

현재로서는 Nextcloud를 설치하려면 PHP 7.4 이상이 필요합니다. 이제 remi 저장소에서 PHP 7.4를 설치합니다.

1. 다음 명령을 실행하여 epel 및 remi 리포지토리를 추가합니다.

sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

epel 및 remi 저장소를 추가하려면 "y"를 입력하고 "Enter"를 누르십시오.

설치가 완료되면 다음 명령을 사용하여 epel 및 Remi 리포지토리를 확인합니다.

sudo dnf repolist

리포지토리 목록에 epel 및 remi 리포지토리가 표시됩니다.

2. 다음으로 기본 리포지토리 모듈 PHP를 재설정합니다. 그런 다음 remi 저장소에서 PHP 7.4용 모듈을 활성화합니다.

다음 명령을 실행하여 기본 php 모듈 리포지토리를 재설정합니다.

sudo dnf module reset php

이 과정에서 "y"를 입력하고 "Enter"를 눌러 gpg 키 remi 저장소를 추가합니다.

그런 다음 아래 명령을 실행하여 remi 저장소에서 php 모듈을 활성화하십시오.

sudo dnf module enable php:remi-7.4

"y"를 입력하여 확인하고 "Enter"를 눌러 계속하십시오. 이제 PHP와 WordPress 설치를 위한 모든 확장을 설치할 준비가 되었습니다.

3. 다음 명령을 실행하여 몇 가지 필요한 확장과 함께 php를 설치합니다.

sudo dnf install php php-ctype php-curl php-gd php-iconv php-json php-libxml php-mbstring php-openssl php-posix php-session php-xml php-zip php-zlib php-pdo php-mysqlnd php-intl php-bcmath php-gmp php-imagick php-apcu

4. PHP 설치가 완료되면 nano 편집기를 사용하여 구성 "php.ini"를 편집합니다.

nano /etc/php.ini

아래 구성으로 기본값을 변경하십시오.

file_uploads = On
allow_url_fopen = On
memory_limit = 512M
upload_max_filesize = 500M
post_max_size = 600M
max_execution_time = 300
display_errors = Off
date.timezone = Europe/Amsterdam

구성을 저장하고 종료하려면 "Ctrl+x"를 누르고 "Y"를 입력하십시오.

알아야 할 중요한 구성:

  • Nextcloud 프로덕션을 위해서는 512MB 이상의 "memory_limit"가 필요합니다.\n
  • "upload_max_filesize" 옵션을 사용하면 Nextcloud 서버에 업로드할 최대 크기를 설정할 수 있습니다.\n
  • "post_max_size" 옵션은 "upload_max_filesize" 옵션보다 커야 합니다.\n
  • "date.timezone" 옵션은 시스템 현지 시간 "/etc/localtime"과 일치해야 합니다.\n
  • 서버 로드에 따라 \max_execution_time\을 늘립니다.

5. 다음으로 작업 디렉토리를 "/etc/php.d/"로 변경하고 nano 편집기를 사용하여 "10-opcache.ini" 구성을 편집합니다.

cd /etc/php.d/
nano 10-opcache.ini

다음 구성을 추가하여 PHP opcache 플러그인을 활성화합니다.

opcache.enable = 1
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 10000
opcache.memory_consumption = 128
opcache.save_comments = 1
opcache.revalidate_freq = 1

구성을 저장하고 종료하려면 "Ctrl+x" 버튼을 누르고 "Y"를 입력하십시오.

6. 새 PHP 구성을 적용하려면 다음 명령을 사용하여 httpd 서비스를 다시 시작합니다.

sudo systemctl restart httpd

MariaDB 설치 및 구성

이 단계에서는 mariadb 데이터베이스 서버를 설치하고 mariadb 배포를 보호하며 Nextcloud에 대한 새 데이터베이스 및 사용자를 만듭니다.

1. mariadb 데이터베이스 서버를 설치하려면 아래 명령을 실행하십시오.

sudo dnf install mariadb mariadb-server

mariadb 설치를 기다립니다.

2. 설치가 완료되면 다음 명령을 사용하여 mariadb 서비스를 활성화하고 시작합니다.

sudo systemctl enable mariadb
sudo systemctl start mariadb

4. mariadb가 활성화되고 실행될 것입니다. 다음 명령을 실행하여 mariadb 서비스를 확인합니다.

sudo systemctl status mariadb

mariadb 서비스가 실행 중인 경우 아래와 유사한 출력이 표시됩니다.

5. 다음으로 mariadb의 루트 암호를 설정하고 일부 기본 구성을 제거하여 mariadb 배포를 보호해야 합니다. 이를 위해 기본 mariadb 설치에 포함된 명령줄 도구 mysql_secure_installation을 사용할 수 있습니다.

아래의 "mysql_secure_installation" 명령을 실행합니다.

mysql_secure_installation

처음에는 mariadb 루트 비밀번호를 설정하라는 메시지가 표시됩니다.

강력한 mariadb 루트 암호를 입력하고 반복한 다음 "Enter"를 눌러 계속하십시오.

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!

이제 "Y"를 입력하고 "Enter"를 눌러 mariadb 서버에서 기본 익명 사용자를 제거합니다.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

그런 다음 기본 사용자 루트에 대한 원격 로그인을 비활성화합니다. 계속하려면 "Y"를 입력하고 "Enter"를 누르십시오.

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

"Y"를 다시 입력하여 기본 데이터베이스 "test"를 제거하고 "Enter"를 누르십시오.

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

마지막으로 "Y"를 다시 입력하면 모든 테이블 권한을 다시 로드하여 새 구성을 적용할 수 있습니다.

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

이제 프로세스가 완료되었으며 다음 출력이 표시됩니다.

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Nextcloud용 데이터베이스 생성

1. 아래의 mysql 명령을 사용하여 mariadb 셸에 로그인합니다.

mysql -u root -p

2. 이제 다음 mysql 쿼리를 실행하여 새 데이터베이스 "nextcloud_db"를 만듭니다.

CREATE DATABASE netxcloud_db;

3. 다음 쿼리를 실행하여 새 데이터베이스 사용자 "nextuser"를 만듭니다. 강력한 비밀번호로 "strongpassword"를 변경하십시오.

CREATE USER  IDENTIFIED BY 'StrongPassword';

4. "nextuser" 사용자가 다음 쿼리를 사용하여 "nextcloud_db"에 액세스하고 쓸 수 있도록 허용합니다.

GRANT ALL PRIVILEGES ON netxcloud_db.* TO ;

5. 이제 모든 테이블 권한을 다시 로드하여 새 데이터베이스 구성을 적용합니다.

FLUSH PRIVILEGES;

그런 다음 "quit"를 입력하고 "Enter"를 눌러 mariadb 셸을 종료할 수 있습니다.

Nextcloud 소스 코드 다운로드

1. 작업 디렉토리를 "/var/www"로 변경하고 아래와 같이 wget 명령을 사용하여 최신 버전의 Nextcloud 소스 코드를 다운로드합니다.

cd /var/www/
wget https://download.nextcloud.com/server/releases/nextcloud-22.1.0.zip

2. Nextcloud 소스 코드 "nextcloud-xx.zip"을 추출하면 새 디렉터리 "nextcloud"가 생성되고 "nextcloud" 디렉터리의 소유자를 "apache" 사용자로 변경합니다.

unzip nextcloud-22.1.0.zip
chown -R apache:apache nextcloud

이제 Nextcloud에 대한 httpd 가상 호스트를 구성할 준비가 되었습니다.

Apache/Httpd mod_ssl 모듈 활성화

이 자습서에서는 Nextcloud를 설치하고 Letsencrypt의 SSL로 보호합니다. 따라서 Rocky Linux에서 httpd 서버에 대해 mod_ssl을 활성화해야 합니다.

1. 아래의 dnf 명령을 사용하여 "mod_ssl" 패키지를 설치합니다.

sudo dnf install mod_ssl mod_http2

2. 그런 다음 아래의 openssl 명령을 사용하여 localhost에 대한 기본 SSL을 생성합니다. 그러나 \/etc/pki/tls/private/localhost.key\ 및 \/etc/pki/tls/certs/localhost.crt 인증서가 이미 있는 경우 \, 이 단계를 건너뛸 수 있습니다.

openssl req -newkey rsa:2048 -nodes -keyout /etc/pki/tls/private/localhost.key -x509 -days 365 -out /etc/pki/tls/certs/localhost.crt

이 인증서는 WordPress 도메인 이름이 아닌 localhost에만 사용되므로 모든 질문에 대해 Enter 키를 누르기만 하면 됩니다.

3. 이제 다음 명령을 실행하여 httpd 웹 서버에서 mod_ssl을 사용할 수 있는지 확인합니다.

apachectl -M | grep ssl

"ssl"과 같은 출력이 있으면 mod_ssl이 활성화된 것입니다. 그렇지 않으면 빈 출력이 표시됩니다.

Certbot으로 SSL Letsencrypt 생성

이 단계에서는 cerbot 도구를 설치하고 WordPress 설치를 위한 SSL 인증서를 생성합니다. webroot 플러그인으로 SSL Letsencrypts를 생성하게 됩니다.

1. 다음 명령을 실행하여 SSL Letsencrypt 생성을 위한 certbot 도구를 설치합니다.

sudo dnf install certbot

설치 과정을 기다립니다.

2. 설치가 완료되면 다음 명령을 사용하여 letsencrypt 인증을 위한 새 디렉토리를 생성합니다.

sudo mkdir -p /var/lib/letsencrypt/.well-known
sudo chgrp apache /var/lib/letsencrypt
sudo chmod g+s /var/lib/letsencrypt

3. 다음으로 작업 디렉토리를 "/etc/httpd/conf.d/"로 변경하고 nano 편집기를 사용하여 새 구성 "well-known.conf"를 만듭니다.

cd /etc/httpd/conf.d/
nano well-known.conf

다음 구성을 추가합니다.

Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/"
<Directory "/var/lib/letsencrypt/">
    AllowOverride None
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Require method GET POST OPTIONS
</Directory>

저장하고 종료하려면 "Ctrl+x"를 누르고 "y"를 입력하십시오.

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

apachectl configtest
sudo systemctl restart httpd

오류가 없으면 webroot 플러그인으로 SSL Letsencrypt를 생성할 준비가 된 것입니다.

5. SSL Letsencrypt를 생성하기 전에 도메인 이름이 서버 IP 주소로 확인되는지 확인하십시오. 그런 다음 아래 certbot 명령을 실행하여 webroot 플러그인으로 SSL Letsencrypt를 생성할 수 있습니다. 또한 이메일 주소와 도메인 이름을 자신의 것으로 변경하십시오.

sudo certbot certonly --agree-tos --email 

프로세스가 완료되면 "/etc/letsencrypt/live/files.domain.com/" 디렉터리에서 SSL 인증서를 사용할 수 있습니다.

Nextcloud용 Apache 가상 호스트 설정

이 단계에서는 Nextcloud에 대한 새로운 apache/httpd 가상 호스트 구성을 추가합니다.

1. 작업 디렉토리를 "/etc/httpd/conf.d"로 변경하고 nano 편집기를 사용하여 새 구성 "nextcloud.conf"를 만듭니다.

cd /etc/httpd/conf.d/
nano nextcloud.conf

세부 도메인 이름과 SSL 경로 디렉터리를 자신의 것으로 변경하고 구성을 "nextcloud.conf" 파일에 붙여넣습니다.

<VirtualHost *:80>
    ServerName files.domain.com
    ServerAlias www.files.domain.com

    # auto redirect HTTP to HTTPS
    Redirect permanent / https://files.domain.com/
</VirtualHost>

<VirtualHost *:443>
    ServerName files.domain.com
    ServerAlias www.files.domain.com
 
    DocumentRoot /var/www/nextcloud/

    Protocols h2 http/1.1

    # auto redirect www to non-www
    <If "%{HTTP_HOST} == 'www.files.domain.com'">
        Redirect permanent / https://files.domain.com/
    </If>

    # log files
    ErrorLog /var/log/httpd/files.domain.com-error.log
    CustomLog /var/log/httpd/files.domain.com-access.log combined

    SSLEngine On
    SSLCertificateFile /etc/letsencrypt/live/files.domain.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/files.domain.com/privkey.pem

    # HSTS
    <IfModule mod_headers.c>
        Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
    </IfModule>

    <Directory /var/www/nextcloud/>
        Options +FollowSymlinks
        AllowOverride All

        <IfModule mod_dav.c>
            Dav off
        </IfModule>

        SetEnv HOME /var/www/nextcloud
        SetEnv HTTP_HOME /var/www/nextcloud
    </Directory>
</VirtualHost>

구성을 저장하고 종료하려면 "Ctrl+x"를 누르고 "Y"를 입력하십시오.

3. 다음으로 다음 명령을 실행하여 httpd 구성을 확인합니다.

sudo apachectl configtest

오류가 없으면 아래 명령을 사용하여 httpd 서비스를 다시 시작하십시오.

sudo systemctl restart httpd

이제 웹 브라우저를 통해 Nextcloud를 설치할 준비가 되었습니다.

넥스트클라우드 설치

모든 관련 서버 구성이 완료되면 웹 브라우저를 사용하여 Nextcloud 설치에 액세스할 수 있습니다.

1. 웹 브라우저를 열고 Nextcloud 설치의 URL 주소를 입력합니다.

이제 보안 HTTPS 연결로 리디렉션되고 다음과 같은 페이지가 표시됩니다.

  • "관리자 계정 만들기 섹션"에서 관리자의 새 사용자 이름과 암호를 입력합니다.\n
  • \데이터 폴더\ 섹션의 경우 지금까지 기본값으로 두십시오.
  • "데이터베이스 구성" 섹션에서 "MySQL/MariaDB"를 선택하고 데이터베이스 구성 세부 정보를 입력합니다.\n
  • 또한 체크박스 옵션을 선택하여 추천 앱을 설치할 수 있습니다. 또는 원하지 않는 경우 상자 옵션을 선택 취소하십시오.\n

그런 다음 "설정 완료" 버튼을 클릭할 수 있습니다.

2. 설치 프로세스가 완료되면 아래와 같이 기본 Nextcloud 대시보드가 표시됩니다.

3. 이제 "파일" 메뉴를 클릭하면 파일 및 폴더의 사용자 대시보드 목록이 표시됩니다.

4. 관리 페이지에 액세스하려면 상단의 사용자 프로필을 클릭하고 "설정"을 선택합니다.

"관리" 섹션에서 기본 Nextcloud 구성을 변경할 수 있습니다.

5. 새 플러그인이나 앱을 추가하려면 상단의 사용자 프로필을 클릭하고 "앱"을 선택합니다.

이제 다음과 같은 페이지가 나타납니다.

자신에게 맞는 플러그인 카테고리를 선택한 다음 "다운로드 및 활성화" 버튼을 클릭하세요. 그런 다음 "활성화"를 클릭하여 앱이나 플러그인을 활성화하세요.

아래는 Nextcloud Breeze Dark 테마를 활성화한 후의 스크린샷입니다.

Nextcloud 성능 튜닝

Nextcloud를 설치한 후 로컬 메모리 캐시를 활성화하고 Nextcloud 자체에 대한 cronjob을 설정하여 Nextcloud 성능을 향상시키기 위해 몇 가지 단계를 더 수행할 수 있습니다.

1. 상단의 PHP 설치 섹션에서 캐싱을 위한 PHP를 이미 설정했습니다. Nextcloud에서 캐싱을 활성화하려면 Nextcloud 구성 "config.php"를 편집하십시오.

작업 디렉토리를 "/var/www/nextcloud/config"로 변경하고 nano 편집기를 사용하여 "config.php" 구성을 편집합니다.

cd /var/www/nextcloud/config/
nano config.php

배열 내부에 다음 구성을 추가합니다( .. ). 아래와 같이 브래킷

<?php
$CONFIG = array (
....
....
....
  # Additional configuration
  'memcache.local' => '\OC\Memcache\APCu',
);

이제 "Ctrl+x" 버튼을 누르고 "y"를 입력하여 구성을 저장하고 종료합니다.

2. Nextcloud 시스템은 사용자/관리자 상호 작용 없이 정기적으로 일부 백그라운드 작업을 실행해야 합니다. 이를 위해 작업 스케줄러 Nextcloud 작업에 cronjob을 사용할 수 있습니다.

Rocky Linux에서 기본 httpd 사용자는 \apache\입니다. 아래 명령을 사용하여 "apache" 사용자에 대한 새 cronjob을 만듭니다.

crontab -u apache -e

다음 구성을 추가합니다.

*/5  *  *  *  * php -f /var/www/nextcloud/cron.php

구성 및 종료에 대한 참고 사항입니다.

알아야 할 Cronjob 구성:

  • 이 cronjob 구성을 통해 "apache" 사용자는 5분마다 PHP 스크립트 "/var/www/nextcloud/cron.php"를 실행할 수 있습니다.\n

cronjob 구성을 확인하려면 다음 명령을 실행할 수 있습니다.

crontab -u apache -l

구성이 성공하면 구성이 출력으로 표시됩니다. 그렇지 않으면 빈 결과를 얻게 됩니다.

결론

축하합니다! Rocky Linux 8.4에 Nextcloud를 성공적으로 설치했습니다. Nextcloud 서버는 SSL이 활성화된 LAMP 스택에서 실행됩니다. 또한 Nextcloud 설치는 PHP APC 및 opcache 확장으로 활성화된 메모리 캐싱으로 실행됩니다.