웹사이트 검색

OpenSUSE Leap 42.1에서 Nginx와 함께 ownCloud 9를 설치하는 방법


이 페이지에서

  1. 1단계 - SuSEfirewall2 설치
  2. 2단계 - Nginx 설치
  3. 3단계 - MariaDB 설치 및 구성
  4. 4단계 - PHP-FPM 설치 및 구성
  5. 5단계 - SSL 인증서 생성
  6. 6단계 - ownCloud 설치 및 구성

ownCloud는 PHP 프로그래밍 언어를 기반으로 하는 OpenSource 파일 공유 애플리케이션입니다. OwnCloud는 드롭박스, 메가 등과 같은 기능을 갖춘 모든 주요 모바일 및 데스크탑 플랫폼을 위한 멋진 웹 인터페이스 및 동기화 앱과 함께 자체 호스팅 파일 동기화 및 공유를 제공합니다. ownCloud를 사용하면 파일, 캘린더 및 연락처에 쉽게 액세스하고 동기화할 수 있습니다. 장치.

이 튜토리얼에서는 ownCloud로 자신만의 동기화 및 공유 서버 플랫폼을 만드는 방법을 안내합니다. 웹 서버로 Nginx, 데이터베이스로 MariaDB(MySQL 포크) 및 Linux OpenSUSE Leap 42.1에서 php에 대한 요청을 처리하기 위해 php-fpm과 함께 ownCloud를 설치합니다.

전제 조건

  • OpenSUSE 도약 42.1
  • 루트 권한\n
  • zypper 명령 이해\n

1단계 - SuSEfirewall2 설치

SuSEfirewall은 "/etc/sysconfig/SuSEfirewall2" 파일에 구성을 저장하는 방화벽 스크립트입니다. SuSEfirewall2를 사용하면 "SuSEfirewall2" 파일을 편집하여 포트를 열 수 있습니다.

zypper 명령을 사용하여 SuSEfirewall2를 설치합니다.

zypper in SuSEfirewall2

방화벽이 설치되면 sysconfig 디렉토리로 이동하여 vim으로 "SuSEfirewall2" 구성을 편집합니다.

cd /etc/sysconfig/
vim SuSEfirewall2

253행으로 이동하여 사용하려는 모든 서비스의 포트를 추가하십시오. 이 단계에서는 ssh, http 및 https 포트를 추가합니다.

FW_SERVICES_EXT_TCP="22 80 443"

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

다음으로 SuSEfirewall2를 시작하고 부팅 시 실행되도록 활성화합니다.

systemctl start SuSEfirewall2
systemctl enable SuSEfirewall2

이제 sshd 서비스를 다시 시작합니다.

systemctl restart sshd

SSH 서버 포트를 테스트하려면 telnet 명령을 사용하여 포트 22에 연결할 수 있습니다.

telnet 192.168.1.101 22

2단계 - Nginx 설치

Nginx는 메모리와 CPU 사용량이 적은 가벼운 웹 서버입니다. 우리는 자체 클라우드 설치를 위한 웹 서버로 nginx를 사용할 것입니다.

zypper 명령으로 nginx를 설치합니다.

zypper in nginx

nginx를 시작하고 systemctl 명령으로 부팅 시 실행되도록 활성화합니다.

systemctl start nginx
systemctl enable nginx

다음으로 index.html 파일을 추가하여 nginx가 작동하는지 테스트합니다.

echo "This is Nginx Page OpenSUSE Leap" > /srv/www/htdocs/index.html

이제 웹 브라우저에서 nginx 웹 서버에 액세스하거나 curl로 확인할 수 있습니다.

curl -I 192.168.1.101
curl 192.168.1.101

3단계 - MariaDB 설치 및 구성

MariaDB는 MySQL 데이터베이스의 OpenSource RDBMS 기반 포크입니다. 이 단계에서는 MariaDB를 설치하고 구성합니다. 그런 다음 ownCloud 설치를 위한 새 사용자 및 데이터베이스를 생성합니다.

아래 zypper 명령을 사용하여 MariaDB를 설치합니다.

zypper in mariadb mariadb-client

이제 MariaDB를 시작하고 시스템 시작에 추가하십시오.

systemctl start mysql
systemctl enable mysql

MariaDB가 시작되었으므로 이제 아래 명령어를 사용하여 MariaDB의 루트 비밀번호를 구성할 수 있습니다.

mysql_secure_installation

MariaDB/MySQL 암호를 설정합니다.

Enter current password for root (enter for none): PRESS ENTER
Set root password? [Y/n] Y
New password: TYPE YOUR PASSWORD
Re-enter new password: REPEAT PASSWORD
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Reload privilege tables now? [Y/n] Y

MariaDB 루트 암호가 구성되었습니다. 이제 MariaDB/MySQL 셸에 로그인하고 ownCloud를 위한 새 데이터베이스와 새 사용자를 생성할 수 있습니다.

MariaDB/MySQL 셸에 로그인합니다.

mysql -u root -p
TYPE your password

새 데이터베이스 "owncloud_db"와 비밀번호 "[email "로 새 사용자 "ownclouduser"를 만듭니다.

create database owncloud_db;
create user ';
flush privileges;
exit

ownCloud 설치를 위한 데이터베이스가 생성되었습니다.

4단계 - PHP-FPM 설치 및 구성

PHP-FPM(FastCGI Process Manager)은 방문자가 많은 사이트를 처리하기 위한 최신 FastCGI 대안입니다. PHP-FPM에는 고급 프로세스 관리 기능이 있으며 관리 및 구성이 쉽습니다.

이 단계에서는 php-fpm과 일부 PHP 확장 프로그램을 설치한 다음 php-fpm을 통해 php 파일 요청을 처리하도록 nginx 웹 서버를 구성합니다.

다음 "zypper in" 명령으로 php-fpm을 설치합니다.

zypper in php5-fpm php5-gd php5-mcrypt php5-mysql php5-pear php5-zip php5-curl php5-ldap php5-json

설치가 완료되면 php-fpm 디렉토리로 이동하여 기본 구성 파일을 복사합니다.

cd /etc/php5/fpm/
cp php-fpm.conf.default php-fpm.conf

vim 또는 nano 편집기로 php-fpm.conf 파일을 편집합니다.

vim php-fpm.conf

php-fpm 로그를 활성화하려면 32행의 주석을 제거하십시오. 나중에 PHP 스크립트에 오류가 있으면 \/var/log/\ 디렉토리에서 로그 파일을 찾을 수 있습니다.

error_log = log/php-fpm.log

프로세스의 유닉스 사용자/그룹에 대해 148 - 149행을 "nginx"로 변경합니다.

user = nginx
group = nginx

소켓 파일로 php-fpm을 실행하려면 159행의 값을 변경하십시오.

listen = /var/run/php-fpm.sock

170 - 172행의 값을 주석 해제하고 변경하여 유닉스 소켓의 권한을 설정하십시오.

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

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

다음으로 cli 디렉토리에서 php.ini 파일을 편집합니다.

cd /etc/php5/cli/
vim php.ini

758행의 값을 주석 해제하고 변경하십시오.

cgi.fix_pathinfo=0

저장 및 종료.

php.ini 파일을 conf.d 디렉토리에 복사합니다:

cp php.ini /etc/php5/conf.d/

이제 PHP 세션 핸들러 경로를 구성하십시오. 이 튜토리얼에서는 nginx 사용자로 php-fpm을 실행하므로 nginx 사용자가 세션 디렉토리에 쓸 수 있는지 확인합니다. 1390행의 php.ini 파일에서 세션 경로 구성을 볼 수 있습니다.

session.save_path = "/var/lib/php5"

세션 디렉터리 "/var/lib/php5/"의 소유자를 변경하고 nginx 사용자를 디렉터리의 소유자로 만듭니다.

chown -R nginx:nginx /var/lib/php5/

다음으로 nginx 웹 서버에서 작동하도록 php-fpm을 구성합니다. 구성을 수정하기 전에 nginx 구성 디렉토리로 이동하여 nginx.conf 파일을 백업하세요.

cd /etc/nginx/
cp nginx.conf nginx.conf.backup
vim nginx.conf

65행에 다음 새 구성을 추가합니다. 이 구성은 모든 PHP 파일 요청을 처리합니다.

       location ~ \.php$ {
                root /srv/www/htdocs;
                try_files $uri =404;
                include /etc/nginx/fastcgi_params;
                fastcgi_pass unix:/var/run/php-fpm.sock;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       }

저장하고 종료한 다음 nginx 구성을 테스트하여 구성에 오류가 없는지 확인합니다.

nginx -t

오류가 없으면 아래와 같은 결과를 볼 수 있습니다.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

이제 php-fpm을 시작하고 부팅 시 stat에 추가한 다음 nginx 서비스를 다시 시작합니다.

systemctl start php-fpm
systemctl enable php-fpm
systemctl restart nginx

Nginx 및 php-fpm이 구성되었으므로 웹 루트 디렉토리에 새 phpinfo() 파일을 생성하여 php 파일을 테스트할 수 있습니다.

cd /srv/www/htdocs/
echo "<?php phpinfo(); ?>" > info.php

브라우저를 열고 서버 IP를 방문하십시오.

또는 컬을 사용할 수 있습니다.

curl -I 192.168.1.101/info.php

5단계 - SSL 인증서 생성

보안 https 연결을 통해 ownCloud를 실행하는 것은 파일을 안전하게 비공개로 유지하는 데 매우 중요합니다. 자체 회사에서 ownCloud를 실행하는 경우 SSL 인증서를 구매하거나 무료 SSL 인증서를 원하는 경우 Lets-encrypt를 사용할 수 있습니다. 여기에서는 소위 "자체 서명" SSL 인증서를 생성합니다. 자체 서명 인증서의 암호화는 공식 인증서보다 낮지 않지만 서비스에 액세스할 때 브라우저에서 보안 경고를 수락해야 합니다. 처음으로.

새 "ssl" 디렉토리를 만들고 openssl 명령어로 인증서를 생성합니다.

cd /etc/nginx/
mkdir ssl; cd ssl/
openssl req -new -x509 -days 365 -nodes -out /etc/nginx/ssl/example-owncloud.crt -keyout /etc/nginx/ssl/example-owncloud.key

다음으로 키의 권한을 변경합니다.

chmod 600 example-owncloud.key

6단계 - ownCloud 설치 및 구성

이 단계에서는 ownCloud를 설치하고 ownCloud 도메인에 대한 새 nginx 가상 호스트를 구성합니다. 도메인 이름 "example-owncloud.co"로 owncloud를 설치하고 "/srv/www/owncloud/" 디렉토리에 웹 루트 파일을 설치합니다.

다운로드하기

"/srv/www/" 디렉토리로 이동하여 ownCloud 소스를 다운로드하고 압축을 풉니다.

cd /srv/www/
wget https://download.owncloud.org/community/owncloud-9.0.2.zip
unzip owncloud-9.0.2.zip

이제 owncloud 디렉터리 아래에 새 데이터 디렉터리를 생성하여 모든 사용자 데이터를 저장합니다. ownCloud 디렉터리의 소유자를 nginx 사용자로 변경합니다.

mkdir -p owncloud/data/
chown -R nginx:nginx owncloud/

ownCloud용 Nginx 가상 호스트 구성

nginx 디렉터리로 이동하여 가상 호스트 파일 구성을 위한 새 디렉터리를 만듭니다.

cd /etc/nginx/
mkdir vhosts.d/

vhosts.d 디렉터리로 이동하여 owncloud "example-owncloud.conf"에 대한 새 가상 호스트 파일을 만듭니다.

cd vhosts.d/
vim example-owncloud.conf

아래 구성을 붙여넣습니다.

upstream php-handler {
  #server 127.0.0.1:9000;
  server unix:/var/run/php-fpm.sock;
}

server {
  listen 80;
  server_name example-owncloud.co;
  # enforce https
  return 301 https://$server_name$request_uri;
}

server {
  listen 443 ssl;
  server_name example-owncloud.co;

  ssl_certificate /etc/nginx/ssl/example-owncloud.crt;
  ssl_certificate_key /etc/nginx/ssl/example-owncloud.key;

  # Path to the root of your installation
  root /srv/www/owncloud/;
  # set max upload size
  client_max_body_size 10G;
  fastcgi_buffers 64 4K;

  # Disable gzip to avoid the removal of the ETag header
  gzip off;

  # Uncomment if your server is build with the ngx_pagespeed module
  # This module is currently not supported.
  #pagespeed off;

  rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
  rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
  rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;

  index index.php;
  error_page 403 /core/templates/403.php;
  error_page 404 /core/templates/404.php;

  location = /robots.txt {
    allow all;
    log_not_found off;
    access_log off;
  }

  location ~ ^/(?:\.htaccess|data|config|db_structure\.xml|README){
    deny all;
  }

  location / {
    # The following 2 rules are only needed with webfinger
    rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
    rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;

    rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
    rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;

    rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;

    try_files $uri $uri/ =404;
  }

  location ~ \.php(?:$|/) {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_param HTTPS on;
    fastcgi_pass php-handler;
    fastcgi_intercept_errors on;
  }

  # Adding the cache control header for js and css files
  # Make sure it is BELOW the location ~ \.php(?:$|/) { block
  location ~* \.(?:css|js)$ {
    add_header Cache-Control "public, max-age=7200";
    # Add headers to serve security related headers
    add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Robots-Tag none;
    # Optional: Don't log access to assets
    access_log off;
  }

  # Optional: Don't log access to other assets
  location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|swf)$ {
    access_log off;
  }
}

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

nginx 구성을 테스트하고 모든 서비스를 다시 시작하는 것을 잊지 마십시오.

nginx -t
systemctl restart nginx
systemctl restart php-fpm
systemctl restart mysql

테스트

owncloud 도메인 방문:

example-owncloud.co

https 연결로 리디렉션됩니다.

그런 다음 관리 사용자 및 암호, 데이터베이스 이름, 사용자 및 암호를 입력하고 "설정 완료"를 클릭합니다.

잠시 기다리면 owncloud 파일 관리자가 표시됩니다.

OpenSUSE Leap 42.1에서 nginx 및 MariaDB와 함께 ownCloud 설치가 완료되었습니다.

참조

  • https://linux-console.net/tutorial/how-to-install-owncloud-8-with-nginx-and-mariadb-on-centos-7/