Nextcloud 설치 및 최적화 centos 7 php 7 nginx MariaDB

Nextcloud 설치 와 최적화 (환경: centos 7 php 7 nginx MariaDB) 는 초기 에 이것 을 한 동안 놀 았 지만 그 당시 에 모두 보탑 패 널 을 바탕 으로 했 기 때문에 많은 것들 이 무엇 을 위 한 것 인지 몰 랐 다. 지금 은 전기 에 신 들 의 작품 에 따라 처음부터 끝까지 한 번 했다.우리 소 백 에 게 문 제 는 설치 가 아니 라 최적화 에 있다 는 것 을 알 게 되 었 습 니 다. 대신 들 은 최적화 설 을 비교적 적 게 할 것 입 니 다. 그래서 저 는 자신의 과정 을 기록 하 겠 습 니 다. 1. 준비 작업: 1. 시스템 버 전 을 보고 cat / etc / redhat - relaseyum update - y 2. 자체 적 인 epel, nginx, phop 을 모두 rpm - qa | grep phoprpm - qa | grep phop - comonrpm - qa | grep nginx 3 를 마 운 트 해제 합 니 다.selinux 를 닫 고 방화벽 a, vi / etc / selinux / config 를 닫 습 니 다. SELINUX = disabled b, systemctl stop firewalld. servicesystemctl disable firewalld. service 1, nginx 를 설치 하고 설정 1. 먼저 CentOS 에 epel 소스 yum - y install epel - releaseyum - y install nginx 2 를 추가 해 야 합 니 다.php - fpmrpm - Uvh 를 설치 하기 위해 yum 원본 을 추가 합 니 다.https://mirror.webtatic.com/yum/el7/webtatic-release.rpm3php7 - fpm 및 기타 필요 한 구성 요소 yum - y install php70w - fpm php70w - cli php70w - gd php70w - mcrypt php70w - mysql php70w - pear php70w - xml php70w - mbstring php70w - pdo php70w - json php70w - pecl - apcu php70w - pecl - apcu - devel 4 설치 후,php - fpm 가 정상적으로 설치 되 어 있 는 지 확인 하고 php 7 - fpm vim / etc / php - fpm. d / 설정×××w. confuser = nginx / / 사용자 와 그룹 을 nginxgroup = nginx.... listen = 127.0.0.1: 9000 / php - fpm 가 감청 하 는 포트 를 9000 으로 변경 합 니 다./ var / lib 디 렉 터 리 에서 session 경 로 를 위 한 새 폴 더 를 만 들 고 사용자 이름과 그룹 을 nginxmkdir - p / var / lib / phop / session chown nginx: nginx - R / var / lib / phop / session / 7 로 설정 하고 Nginx 와 phop - fpm 서 비 스 를 시작 하 며, 시스템 ctl start phop - fpm systemctl start nginx systemctl enable phop - fpm systemctl enable nginx 2 를 추가 하여 MariaDB 1 을 설치 하고 설정 합 니 다.yum 설치 MaraiDB 서비스 yum - y 설치 mariadb mariadb - server 2, MariaDB 서 비 스 를 시작 하고 부팅 systemctl start mariadbsystemctl enable mariadb 3 를 추가 합 니 다. 다음은 MariaDB 의 루트 비밀 번 호 를 설정 합 니 다 [root@nextcloud-server ~]# mysql_secure_installation / / 알림 에 따라 비밀 번 호 를 설정 합 니 다. 먼저 현재 비밀 번 호 를 물 어 봅 니 다. 비밀 번 호 는 기본적으로 비어 있 습 니 다. 바로 차 로 돌아 가면 current password for root (enter for none) 를 입력 할 수 있 습 니 다. / 직접 차 로 돌아 갑 니 다. Set root password?[Y / n] YNew 비밀번호: / / 새 비밀 번 호 를 입력 합 니 다. 새 비밀 번 호 를 다시 입력 합 니 다. / / 새 비밀 번 호 를 다시 입력 합 니 다. 익명 의 사용 자 를 제거 합 니까?[Y/n] YDisallow root login remotely? [Y/n] YRemove test database and access to it? [Y/n] YReload privilege tables now? [Y/n] Y
4. MariaDB 의 비밀 번 호 를 설정 한 후 명령 행 으로 MariaDB 에 로그 인하 고 Nextcloud 에 해당 하 는 사용자 와 데이터 베 이 스 를 만 듭 니 다.예 를 들 어 데이터 베 이 스 는 nextclouddb, 사용 자 는 nextclouduser, 비밀 번 호 는 nextcloudpasswd: [root@nextcloud-server ~]# mysql -p......MariaDB [(none)]> create database nextcloud_db; MariaDB [(none)]> create user nextclouduser@localhost identified by 'nextcloudpasswd';MariaDB [(none)]> grant all privileges on nextcloud_db.* to nextclouduser@localhost identified by 'nextcloudpasswd';MariaDB [(none)]> flush privileges;MariaDB [(none)]> \q
3. Nextcloud 에 자체 서명 SSL 인증서 1, cd / etc / nginxmkdir certcd / etc / nginx / cert / openssl req - new - x509 - days 365 - nodes - out / etc / nginx / cert / nextcloud. crt - keyout / etc / nginx / cert / nextcloud. key....... country Name (2 letter code) [XX]: cn / / 국가 State or Province Name (full name) []: beijing / / 성 Locality Name (eg, city) [Default City]: beijing / / 지역 이름 Organization Name (eg, company) [Default Company Ltd]: kevin / / 회사 이름 Organizational Unit Name (eg, section) []: Technology / / 부서 공통 이름 (eg, your name or your server 's hostname) []: kevin / / CA 호스트 이름 이메일 주소 []:[email protected]
×××폴 더 권한 $chmod 600 / etc / nginx / cert / * $chmod 700 / etc / nginx / cert 4, 다운로드 및 설치 Nextcloudyum - y install wget unzipcd / usr / local / src / wgethttps://download.nextcloud.com/server/releases/nextcloud-14.0.3.zipunzip nextcloud-14.0.3.ziplsmv nextcloud /usr/share/nginx/html/
Nginx 의 루트 디 렉 터 리 에 들 어가 서 Nextcloud 에 data 디 렉 터 리 를 만 들 고 Nextcloud 의 사용자 와 그룹 을 nginx 로 변경 합 니 다.
cd /usr/share/nginx/html/mkdir -p nextcloud/data/chown nginx:nginx -R nextcloud/
5. Nginx 가상 호스트 설정
Nginx 의 가상 호스트 설정 파일 이 있 는 디 렉 터 리 에 들 어가 새로운 가상 호스트 설정 을 만 듭 니 다. (두 개의 server name 을 자신의 도 메 인 이름 으로 변경 하 는 것 을 기억 합 니 다) * 소 백 은 주의 하 십시오. 제 클 라 우 드 호스트 에 서 는 listen 443 을 442 로 바 꾸 고 listen 80 을 81 로 바 꾸 고 보안 그룹 에서 이 두 포트 를 놓 아야 합 니 다.이곳 은 오랫동안 곤 혹 스 러 웠 습 니 다. 서비스 업 체 가 80 과 443 포트 를 닫 았 기 때문에 저 는 다른 것 으로 수정 하 였 습 니 다. 또한 클 라 우 드 호스트 - 보안 그룹 에서 이 두 포트 를 놓 으 려 고 합 니 다.{server 127.0.0.1:9000;#server unix:/var/run/php5-fpm.sock;}
server {listen 80;server_name xxx.com;
enforce https
return 301 https://$server_name$request_uri;

}
server {listen 443 ssl;server_name xxx.com;
ssl_certificate /etc/nginx/cert/nextcloud.crt;
ssl_certificate_key /etc/nginx/cert/nextcloud.key;

# Add headers to serve security related headers
# Before enabling Strict-Transport-Security headers please read into this
# topic first.
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;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;

# Path to the root of your installation
root /usr/share/nginx/html/nextcloud/;

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

# The following 2 rules are only needed for the user_webfinger app.
# Uncomment it if you're planning to use this app.
#rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
#rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json
# last;

location = /.well-known/carddav {
  return 301 $scheme://$host/remote.php/dav;
}
location = /.well-known/caldav {
  return 301 $scheme://$host/remote.php/dav;
}

# set max upload size
client_max_body_size 512M;
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;

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

location / {
    rewrite ^ /index.php$uri;
}

location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
    deny all;
}
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
    deny all;
}

location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
    include fastcgi_params;
    fastcgi_split_path_info ^(.+\.php)(/.*)$;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_param HTTPS on;
    #Avoid sending the security headers twice
    fastcgi_param modHeadersAvailable true;
    fastcgi_param front_controller_active true;
    fastcgi_pass php-handler;
    fastcgi_intercept_errors on;
    fastcgi_request_buffering off;
}

location ~ ^/(?:updater|ocs-provider)(?:$|/) {
    try_files $uri/ =404;
    index index.php;
}

# Adding the cache control header for js and css files
# Make sure it is BELOW the PHP block
location ~* \.(?:css|js)$ {
    try_files $uri /index.php$uri$is_args$args;
    add_header Cache-Control "public, max-age=7200";
    # Add headers to serve security related headers (It is intended to
    # have those duplicated to the ones above)
    # Before enabling Strict-Transport-Security headers please read into
    # this topic first.
    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;
    add_header X-Download-Options noopen;
    add_header X-Permitted-Cross-Domain-Policies none;
    # Optional: Don't log access to assets
    access_log off;
}

location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
    try_files $uri /index.php$uri$is_args$args;
    # Optional: Don't log access to other assets
    access_log off;
}

}
다음은 다음 프로필 에 오류 가 있 는 지 확인 하고 문제 가 없 는 지 확인 한 후 Nginx 서 비 스 를 다시 시작 합 니 다. [root@nextcloud-server conf.d]# nginx -tnginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful[root@nextcloud-server conf.d]# systemctl restart nginx
7. Nextcloud 를 설치 하여 위 nginx 에 설 치 된 도 메 인 이름 nextcloud. kevin - inc. com 을 분석 하고 접근 합 니 다.http://nextcloud.kevin-inc.comNextcloud 인터페이스 설 치 를 진행 합 니 다. (http 도 메 인 이름 에 접근 하면 자동 으로 https 로 이동 합 니 다. 설치 알림 설치 만 하면 됩 니 다!)
중요 한 곳 이 왔 습 니 다. 여러분 의 신 들 은 모두 왼쪽 에 일부분 을 쓰 고 오른쪽 에 일부분 을 쓰 기 때문에 저 는 많은 시간 을 들 여 설정 하 였 습 니 다. 다음은 제 잘못된 해결 표 지 를 보 여 드 리 겠 습 니 다. 첫째, 메모리 캐 시 문 제 를 해결 합 니 다. 1. redysium install redis - y systemctl start redis systemctl enable redisps ax | grep redis 2, 설치 확장: pp - redis
원칙: phop 버 전과 일치 하 는 확장 솔 루 션 a. 명령 을 통 해 현재 phop 버 전 phop - vb 를 봅 니 다. 설치 할 수 있 는 모든 phop 패키지 목록 yum list | grep phop7c, redis 패키지 의 전체 이름 을 보고 yum install phop70w - pecl - redis. x86 64d 를 표시 합 니 다. phop - fpm systemctl restart phop - fpm 3 를 다시 시작 하고 프로필 cd / usr / share / nginx / html / nextcloud / config / cp config. p 를 편집 합 니 다.hp config.php.bakvi config.php'memcache.local' => '\OC\Memcache\Redis','redis' => array('host' => 'localhost','port' => 6379,),
systemctl restart nginxsystemctl start redis systemctl enable redis 2. 해결: PHP OPcache 모듈 이 로드 되 지 않 습 니 다. 문제 1, find / name "php. ini"php. ini 파일 2, 백업 php. ini cp / etc / php. ini / etc / php. ini. bak 3, php 버 전에 대응 하 는 OPcachea, yum list | grep php7b, yum install php70w - opcache. x86 64c 설치, php - fpmsystemctl restart php - fpm 4 재 부팅, opcache 설정 파일 편집: 위치: / etc / php. d / opcache. inivi / etc / php. d / opcache. iniopcache. enable = 1opcache. interned strings buffer = 8opcache. max accelerated files = 1000nopcache. memory consumption = 128 opcache. save comments = 1opcache. revalidate freq = 1 3, centos 7 에 구 축 된 nextcloud 후 로그 인 할 수 없습니다.
/ var / lib / php / session 디 렉 터 리 권한 을 만 들 고 설정 한 후 문제 가 해결 되 었 습 니 다. chown nginx: nginx - R / var / lib / php / session / 4. 내부 서버 오류:
cd / usr / share / nginx / html / chown nginx: nginx - R nextcloud / 5. 정시 작업 해결:
centos 7 의 정시 작업 설정: 1. 디 렉 터 리 진입: cd / etc / systemd / system / 2, 파일 vi nextcloudcron. service 생 성
[Unit]Description=Nextcloud cron.php job[Service]User=nginxExecStart=/usr/bin/php -f /usr/share/nginx/html/nextcloud/cron.php[Install]WantedBy=basic.target
nginx 와 / usr / share / nginx / html / nextcloud / cron. php 를 자신의 사용자 이름과 주소 로 저장 하고 종료 3, nextcloudcron. timer [Unit] 설명 = Run Nextcloud cron. php every 15 minutes [Timer] OnBootSec = 5minOnUnitActiveSec = 15min Unit = nextcloudcron. service [Install]WantedBy = timers. target 4, systemctl start 를 실행 합 니 다. nextcloudcron. timersystemctl enable nextcloudcron. timer

좋은 웹페이지 즐겨찾기