1. 程式人生 > 其它 >關於自建NextCloud的過程詳解

關於自建NextCloud的過程詳解

技術標籤:nginxcentos

關於自建NextCloud的過程詳解(連結: [link](https://zhuanlan.zhihu.com/p/47135562.)

使用Centos系統

//需要安裝以下元件
NGINX
PHP
PHP-FPM
NEXTCLOUD

更新Centos yum源

//如果系統中沒有安裝wget,就需要安裝
 yum -y install wget
 ********************
 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
 yum makecache
 yum -y update

在安裝之前,需要清除系統中存在的PHP

yum -y remove php*
 yum install nginx
 yum install php
yum -y install php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-fpm php72w-gd php72w-mbstring php72w-mysqlnd php72w-opcache php72w-pdo php72w-xml

必須安裝php-intl,否則在執行過程中會一直報錯

yum install php72w-php-intl
systemctl start nginx
systemctl start php-fpm
vi /etc/php-fpm.d/www.conf

設定執行的賬號全部為nginx
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx

listen的方式和埠一定要正確,此處的配置與NGINX一定要對應。
listen = 127.0.0.1:9000

啟用此處幾個配置
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

建立session目錄,並且修改許可權。

mkdir -p /var/lib/php/session
chown nginx:nginx -R /var/lib/php/session/ 

安裝和配置 MariaDB

yum install mariadb mariadb-server
create database nextcloud_db;
啟動mariadb服務
systemctl start mariadb

開機啟動
systemctl enable mariadb

配置mariadb
mysql_secure_installation

會提示設定root的密碼
Remove anonymous users? [Y/n] <– 是否刪除匿名使用者,Y回車
Disallow root login remotely? [Y/n] <–是否禁止root遠端登入,n回車,
Remove test database and access to it? [Y/n] <– 是否刪除test資料庫,y回車
Reload privilege tables now? [Y/n] <– 是否重新載入許可權表,y回車
mysql -uroot -p 

然後執行下面兩條命令。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '123456' WITH GRANT OPTION;
其中123456換成你的密碼。
重新整理許可權
flush privileges;

最後就成功了。
use mysql;
select * from user;
就可以看到現在遠端主機登入的許可權情況。
#安裝解壓縮軟體
yum install unzip 

#下載,此處連結可以直接開啟,選擇最新版本14.0.3
wget https://download.nextcloud.com/server/releases/nextcloud-10.0.2.zip

#解壓
unzip nextcloud-10.0.2.zip

#移動到nginx的root目錄
mv nextcloud/ /usr/share/nginx/html/

#建立一個存放檔案的Data目錄
cd /usr/share/nginx/html/
mkdir -p nextcloud/data/

#變更 nextcloud 目錄的擁有者為 nginx 使用者和組
chown nginx:nginx -R nextcloud/
cd /etc/nginx/conf.d/
vi nextcloud.conf 
upstream php-handler {  
  server 127.0.0.1:9000;  
  #server unix:ar/run/php5-fpm.sock;  
}  
  
server {  
  listen 80;  
  server_name localhost;  
  
  access_log /home/pan/log/nginx/access.log;  
  error_log /home/pan/log/nginx/error.log;  
  
  # Path to the root of your installation  
  root /home/pan/www;  
  # set max upload size  
  client_max_body_size 10G;  
  fastcgi_buffers 64 4K;  
  
  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/ /index.php;  
  }  
  
  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_pass php-handler;  
  }  
  
  # Optional: set long EXPIRES header on static assets  
  location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {  
    expires 30d;  
    # Optional: Don't log access to assets  
    access_log off;  
  }  
  
}  
# -t引數進行配置檔案的檢測
nginx -t

#檢測配置成功之後,可以啟動服務
systemctl restart nginx 

要正確設定PHP和ningx的特別是監聽服務的方式。否則會出現500.502錯誤。在出現這些錯誤的時候,要使用nginx和php-fpm的日誌進行判斷。它們的存放位置一般都在var/log下面。
要設定目錄許可權,否則會提示無法安裝,正確的設定許可權可以是nginx或者是www-data,這裡使用nginx,如果是apache的話可能就要選擇www-data。只要前後保持一致即可。
如果提示非安全域名的話,進入nextclou/config/config.php中增加trust_domain,格式參考上面一行即可。

docker pull rootlogin/nextcloud
docker run -d --name nextcloud -p 8111:80 -v /usr/local/nextcloud:/data rootlogin/nextcloud

1).進入到安裝的nextcloud的apps目錄下(我的是在容器中的 /opt/nextcloud/apps )

cd apps

2).將onlyoffice.tar.gz拷貝到此目錄並解壓(可以使用docker cp)

下載地址:https://apps.nextcloud.com/apps/onlyoffice

tar -zxvf onlyoffice.tar.gz

3).更改所有者以直接從Nextcloud Web介面更新應用程式:

chown -R www-data:www-data onlyoffice

4).在nextcloud管理端: 應用-已禁用應用 中找到onlyoffice並啟用

5).在nextcloud管理端: 設定-ONLYOFFICE,下面可以選擇哪
onlyoffice的轉載於: https://blog.csdn.net/xiao_____wu/article/details/103390622.