Centos 7 安装Nextcloud
标签搜索
侧边栏壁纸
  • 累计撰写 6 篇文章
  • 累计收到 0 条评论

Centos 7 安装Nextcloud

Lance
2021-12-29 / 0 评论 / 137 阅读 / 正在检测是否收录...

安装nginx和php

1. 添加epel源

yum -y install epel-release

2. 安装nginx和php

yum install epel-release -y 
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y 
yum install yum-utils -y 
yum-config-manager --enable remi-php74 
yum -y install php php-xml php-gd php-mbstring php-process php-ldap php-xml php-zip  php-mysql php-intl php-fpm nginx

配置php

使用 vim 编辑默认的 php7-fpm 配置文件。

vim /etc/php-fpm.d/www.conf

在第 8 行和第 10行,user 和 group 赋值为 nginx。

user = nginx
group = nginx

在第 22 行,确保 php-fpm 运行在指定端口。

listen = 127.0.0.1:9000

取消第 366-370 行的注释,启用 php-fpm 的系统环境变量。

env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

保存文件并退出 vim 编辑器。

下一步,就是在 /var/lib/ 目录下创建一个新的文件夹 session,并将其拥有者变更为 nginx 用户。

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

然后启动 php-fpm,并且设置为随开机启动的服务。

sudo systemctl start php-fpm
sudo systemctl enable php-fpm

PHP7-FPM 配置完成

安装mysql或者MariaDB

使用 MariaDB 作为 Nextcloud 的数据库,直接使用 yum 命令进行安装即可

yum -y install mariadb mariadb-server

启动 MariaDB,并将其添加开机启动

systemctl start mariadb
systemctl enable mariadb

开始配置 MariaDB 的 root 用户密码。

mysql_secure_installation

在出现的选项中键入 Y ,然后根据自己的习惯设置密码

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

密码设置好后,使用密码登陆。我们开始创建给netxcloud使用的数据库和用户

mysql -u root -p

输入刚刚设置的 root 密码,然后登陆到数据库中

输入以下 mysql 语句来创建新的数据库和用户。以下命令会创建一个名为nextcloud_db额数据库,数据库访问用户和密码分别为nextcloud和test1234。以上三个参数可自行修改

MariaDB [(none)]> CREATE DATABASE nextcloud_db;
MariaDB [(none)]> GRANT ALL ON nextcloud_db.* TO 'nextcloud'@'localhost' IDENTIFIED BY 'next@gosun!@#';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit

添加ssl证书(可选)

如果使用域名来访问我们的网站,为了我们网站的安全性我们可以为域名配置一个ssl证书。证书需要自行去申请,可以使用let's encrypt 等免费 SSL 证书

为 SSL 文件创建新目录

mkdir -p /etc/nginx/cert/

将自己的域名ssl证书上传到改目录下

修改一下证书和所在文件夹的权限大小

chmod 700 /etc/nginx/cert
chmod 600 /etc/nginx/cert/*

下载netxcloud

去到netxcloud的官网下载最新版的nextcloud,并解压缩

wget https://download.nextcloud.com/server/releases/nextcloud-23.0.0.zip

unzip nextcloud-23.0.0.zip

将文件放到nginx的网站根目录下,然后在nextcloud目录下创建一个data目录用来存放上传的各类文件

mv nextcloud /usr/share/nginx/html/
cd /usr/share/nginx/html/
mkdir -p nextcloud/data/

修改nextclou目录的归属用户和组,修改为nginx

chown nginx:nginx -R nextcloud/

配置nginx,添加一个虚拟主机

在 Nginx 的 conf.d 目录下创建一个新的虚拟主机配置文件 nextcloud.conf

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

将以下内容粘贴到虚拟主机配置文件中:

upstream php-handler {
    server 127.0.0.1:9000;
    #server unix:/var/run/php5-fpm.sock;
}
server {
    listen 80;
    server_name cloud.nsvortex.cn;#此处绑定域名修改为自己的
    # enforce https
    return 301 https://$server_name$request_uri;
}
server {
    listen 443 ssl;
    server_name cloud.nextcloud.co;
    ssl_certificate /etc/nginx/cert/1_nsvortex.cn_bundle.crt;#改成自己的证书名字
    ssl_certificate_key /etc/nginx/cert/2_nsvortex.cn.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 配置文件是否有错误,没有的话就可以重启服务了。

nginx -t
systemctl restart nginx
0

评论 (0)

取消