Centos7.9 脚本一键部署nextcloud,配置Nginx代理Https。

目录

 一键安装nextcloud

出现错误TypeError Cannot read properties of undefined (reading ‘writeText‘)

生成自签名SSL证书

编辑Nginx配置文件

启动Nginx


 一键安装nextcloud

本脚本参考文章,本文较长建议先看完在操作!!!

全网最详细CentOS 7下部署最新版nextcloud教程_centos7 安装nextcloud-CSDN博客


Nginx服务配置篇·第三课:NextCloud部署安装-腾讯云开发者社区-腾讯云

此安装脚本不包含安装数据库,且默认授权/var/www/html    为nextcloud的数据目录

并且使用官方推荐的Apache httpd代理/var/www/html 即代理nextcloud(这种方式非https 在v26+版本中会出现无法自动复制分享链接的问题)

且安装后最好重启下 确认SELinux已经关闭

#!/bin/bash# 确保脚本以root权限运行
if [ "$EUID" -ne 0 ]; thenecho "请以root用户运行此脚本"exit
fi# 检查并卸载旧版本的PHP
echo "检查并卸载旧版本的PHP..."
if php -v > /dev/null 2>&1; thenyum remove -y php*
fi# 安装EPEL仓库和Remi仓库
echo "安装EPEL仓库和Remi仓库..."
yum install -y epel-release
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm# 安装yum-utils,如果尚未安装
echo "检查并安装yum-utils..."
if ! command -v yum-config-manager &> /dev/null; thenyum install -y yum-utils
fi# 启用PHP 8.0仓库并安装PHP及其扩展
echo "启用PHP 8.0仓库并安装PHP..."
yum-config-manager --enable remi-php80
yum install -y php php-bcmath php-cli php-common php-devel php-fpm php-gd php-intl php-ldap php-mbstring php-mysqlnd php-odbc php-pdo php-pear php-pecl-xmlrpc php-pecl-zip php-process php-snmp php-soap php-sodium php-xml# 启动PHP-FPM服务并设置开机自启
echo "启动PHP-FPM服务并设置开机自启..."
systemctl start php-fpm
systemctl enable php-fpm# 安装Apache服务器
echo "安装Apache服务器..."
yum remove httpd*
yum install httpd
systemctl start httpd
systemctl enable httpd# 开放CentOS 7的80端口并配置防火墙
echo "开放80端口并配置防火墙..."
systemctl stop firewalld
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload# 获取Nextcloud安装包并解压
echo "获取Nextcloud安装包并解压..."
wget https://download.nextcloud.com/server/release/latest.zip
yum install -y unzip
unzip latest.zip -d /var/www/html# 将Nextcloud文件转移到Apache根目录并设置权限
echo "设置Nextcloud文件权限..."
chown -R apache:apache /var/www/html
chmod -R 755 /var/www/html# 关闭SELinux
echo "关闭SELinux..."
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0echo "Nextcloud安装准备完成,现在可以进行前端配置。"# 注意:以上脚本不包含数据库安装和配置步骤,需要用户自行配置数据库。

上述安装完成后存在一个新的问题

无法正常复制分享链接

出现错误TypeError Cannot read properties of undefined (reading ‘writeText‘)

原因是没有https 导致的,修复此问题的脚本为(依赖于上述步骤)

# 关闭httpd的代理 关闭自启动
systemctl stop httpd
systemctl disable httpd# 安装nginx
yum -y install nginx
  • 生成自签名SSL证书

首先,我们需要创建一个自签名证书。在你的主机上运行以下命令:

sudo mkdir -p /etc/nginx/certs
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/certs/nextcloud.key -out /etc/nginx/certs/nextcloud.crt

这个随便填写一下即可。

然后检查这两个文件是否存在

/etc/nginx/certs/nextcloud.crt
/etc/nginx/certs/nextcloud.key

  • 编辑Nginx配置文件

然后,我们需要编辑Nginx的配置文件。在 /etc/nginx/conf.d/​ 或者 /etc/nginx/sites-available/​ 目录下创建一个新的配置文件,例如 nextcloud.conf​

nano /etc/nginx/conf.d/nextcloud.conf

内容如下(实例)

upstream php-handler {server 127.0.0.1:9000;#server unix:/var/run/php/php7.4-fpm.sock;
}# Set the `immutable` cache control options only for assets with a cache busting `v` argument
map $arg_v $asset_immutable {"" "";default "immutable";
}server {listen 80;listen [::]:80;server_name 192.168.252.74;# Prevent nginx HTTP Server Detectionserver_tokens off;# Enforce HTTPSreturn 301 https://$server_name$request_uri;
}server {listen 443      ssl http2;listen [::]:443 ssl http2;server_name 192.168.252.74;# Path to the root of your installationroot /var/www/html;# Use Mozilla's guidelines for SSL/TLS settings# https://mozilla.github.io/server-side-tls/ssl-config-generator/ssl_certificate /etc/nginx/certs/nextcloud.crt;  # 与上面的相同ssl_certificate_key /etc/nginx/certs/nextcloud.key;   # 与上面的相同# Prevent nginx HTTP Server Detectionserver_tokens off;# HSTS settings# WARNING: Only add the preload option once you read about# the consequences in https://hstspreload.org/. This option# will add the domain to a hardcoded list that is shipped# in all major browsers and getting removed from this list# could take several months.#add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload" always;# set max upload size and increase upload timeout:client_max_body_size 8192M;client_body_timeout 300s;fastcgi_buffers 64 4K;# Enable gzip but do not remove ETag headersgzip on;gzip_vary on;gzip_comp_level 4;gzip_min_length 256;gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/wasm application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;# Pagespeed is not supported by Nextcloud, so if your server is built# with the `ngx_pagespeed` module, uncomment this line to disable it.#pagespeed off;# The settings allows you to optimize the HTTP2 bandwitdth.# See https://blog.cloudflare.com/delivering-http-2-upload-speed-improvements/# for tunning hintsclient_body_buffer_size 512k;# HTTP response headers borrowed from Nextcloud `.htaccess`add_header Referrer-Policy                      "no-referrer"   always;add_header X-Content-Type-Options               "nosniff"       always;add_header X-Download-Options                   "noopen"        always;add_header X-Frame-Options                      "SAMEORIGIN"    always;add_header X-Permitted-Cross-Domain-Policies    "none"          always;add_header X-Robots-Tag                         "none"          always;add_header X-XSS-Protection                     "1; mode=block" always;# Remove X-Powered-By, which is an information leakfastcgi_hide_header X-Powered-By;# Specify how to handle directories -- specifying `/index.php$request_uri`# here as the fallback means that Nginx always exhibits the desired behaviour# when a client requests a path that corresponds to a directory that exists# on the server. In particular, if that directory contains an index.php file,# that file is correctly served; if it doesn't, then the request is passed to# the front-end controller. This consistent behaviour means that we don't need# to specify custom rules for certain paths (e.g. images and other assets,# `/updater`, `/ocm-provider`, `/ocs-provider`), and thus# `try_files $uri $uri/ /index.php$request_uri`# always provides the desired behaviour.index index.php index.html /index.php$request_uri;# Rule borrowed from `.htaccess` to handle Microsoft DAV clientslocation = / {if ( $http_user_agent ~ ^DavClnt ) {return 302 /remote.php/webdav/$is_args$args;}}location = /robots.txt {allow all;log_not_found off;access_log off;}# Make a regex exception for `/.well-known` so that clients can still# access it despite the existence of the regex rule# `location ~ /(\.|autotest|...)` which would otherwise handle requests# for `/.well-known`.location ^~ /.well-known {# The rules in this block are an adaptation of the rules# in `.htaccess` that concern `/.well-known`.location = /.well-known/carddav { return 301 /remote.php/dav/; }location = /.well-known/caldav  { return 301 /remote.php/dav/; }location /.well-known/acme-challenge    { try_files $uri $uri/ =404; }location /.well-known/pki-validation    { try_files $uri $uri/ =404; }# Let Nextcloud's API for `/.well-known` URIs handle all other# requests by passing them to the front-end controller.return 301 /index.php$request_uri;}# Rules borrowed from `.htaccess` to hide certain paths from clientslocation ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)(?:$|/)  { return 404; }location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console)                { return 404; }# Ensure this block, which passes PHP files to the PHP process, is above the blocks# which handle static assets (as seen below). If this block is not declared first,# then Nginx will encounter an infinite rewriting loop when it prepends `/index.php`# to the URI, resulting in a HTTP 500 error response.location ~ \.php(?:$|/) {# Required for legacy supportrewrite ^/(?!index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+|.+\/richdocumentscode\/proxy) /index.php$request_uri;fastcgi_split_path_info ^(.+?\.php)(/.*)$;set $path_info $fastcgi_path_info;try_files $fastcgi_script_name =404;include fastcgi_params;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;fastcgi_param PATH_INFO $path_info;fastcgi_param HTTPS on;fastcgi_param modHeadersAvailable true;         # Avoid sending the security headers twicefastcgi_param front_controller_active true;     # Enable pretty urlsfastcgi_pass php-handler;fastcgi_intercept_errors on;fastcgi_request_buffering off;fastcgi_max_temp_file_size 0;}location ~ \.(?:css|js|svg|gif|png|jpg|ico|wasm|tflite|map)$ {try_files $uri /index.php$request_uri;add_header Cache-Control "public, max-age=15778463, $asset_immutable";access_log off;     # Optional: Don't log access to assetslocation ~ \.wasm$ {default_type application/wasm;}}location ~ \.woff2?$ {try_files $uri /index.php$request_uri;expires 7d;         # Cache-Control policy borrowed from `.htaccess`access_log off;     # Optional: Don't log access to assets}# Rule borrowed from `.htaccess`location /remote {return 301 /remote.php$request_uri;}location / {try_files $uri $uri/ /index.php$request_uri;}
}

其中需要更改的配置为

原文中的修改的配置为

server_name cloud.example.com; #更改为自己的域名

root /var/www/nextcloud; #更改为你的nextcloud目录

ssl_certificate /etc/ssl/nginx/cloud.example.com.crt; #SSL证书目录,一般放.pem根证书 ssl_certificate_key /etc/ssl/nginx/cloud.example.com.key; #SSL证书目录,.key私钥

笔者修改的是

  • /var/www/html      你的代理的nextcloud的目录 这里面包含了启动的网页
  • 192.168.252.74    更改为你的IP或者域名,笔者这里是直接使用ip代替域名

  • client_max_body_size 8192M;      此设置为你的web端可以上传的文件大小的上限,笔者设置的是8G

  • ssl_certificate /etc/nginx/certs/nextcloud.crt;  # 你的秘钥文件

    ssl_certificate_key /etc/nginx/certs/nextcloud.key;   # 你的秘钥文件

启动Nginx
nginx -t  # 检查配置是否正确
systemctl reload nginx  # 重新加载配置
systemctl start nginx
systemctl enable nginx  # 开机自启
systemctl status nginx.service  # 查看运行状态

最后使用https访问你的域名/ip   比如https://192.168.252.74/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/3114.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【性能测试】ChaosTesting(混沌测试)ChaosBlade(混沌实验工具)(四)-k8s容器混沌实验

5. 创建 kubernetes 相关的实验场景 5.0 blade create k8s 5.0.1 介绍 创建 kubernetes 相关的实验场景,除了使用 blade 命令创建场景外,还可以将实验使用 yaml 文件描述,使用 kubectl 命令执行。目前支持的实验场景如下: [bl…

6、ES单机设置用户名密码、集群设置用户名密码、es-head登录、如何去掉密码

目录 一、ES单节点密码配置1、修改配置文件2、 重启es服务3,执行修改密码命令4、访问服务 二、ES集群密码配置1、确定主节点2、生成elastic-stack-ca.p123、生成elastic-certificates.p124、修改配置文件并重启集群5、进行密码配置6、验证 三、es-head登录增加密码的…

数据可视化(七):Pandas香港酒店数据高级分析,涉及相关系数,协方差,数据离散化,透视表等精美可视化展示

Tips:"分享是快乐的源泉💧,在我的博客里,不仅有知识的海洋🌊,还有满满的正能量加持💪,快来和我一起分享这份快乐吧😊! 喜欢我的博客的话,记得…

HarmonyOS开发案例:【图片编辑】

介绍 本篇Codelab是基于ArkTS的声明式开发范式的样例,主要介绍了图片编辑实现过程。样例主要包含以下功能: 图片的解码。使用PixelMap进行图片编辑,如裁剪、旋转、亮度、透明度、饱和度等。图片的编码。 相关概念 [图片解码]:读…

【书生浦语第二期实战营学习笔记作业(四)】

课程文档:https://github.com/InternLM/Tutorial/blob/camp2/xtuner/readme.md 作业文档:https://github.com/InternLM/Tutorial/blob/camp2/xtuner/homework.md 书生浦语第二期实战营学习笔记&作业(四) 1.1、微调理论讲解及 XTuner 介绍 两种Fin…

不要摆摊,不要开早餐店,原因如下

关注卢松松,会经常给你分享一些我的经验和观点。 我最近开通了视频号会员专区嘛,专区有个问答功能可以提问,有个会员问了我问题,其中一条问答分享给大家: 松哥,突然想去兼职,早上卖点杂粮煎饼果…

C语言自定义类型【结构体】

结构体的概念 结构是一些值的集合,这些值被称为成员变量。结构的每个成员可以是不同类型的变量。 1.结构体的声明 1.1普通声明 我们假设要创建一本书的类型,那我们需要书名,作者,价格,书的ID 代码如下:…

2024年04月09日 Go生态洞察:2024年上半年Go开发者调查报告洞察

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 专栏链接: 🔗 精选专栏:…

Linux——web基础实验

实验前的安装 [rootwebserver ~]# yum -y install httpd [rootwebserver ~]# systemctl enable --now httpd Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service. [rootwebserver ~]# echo test for apach…

性能监控数据(本地、服务器)

CPU、内存、磁盘等的监控 一、mac本地性能监控 1. top 终端: top load Avg: 平均负载(1分钟,5 分钟,15 分钟)值不能超过 4,要不然就是超负荷运行 Tasks: 进程数 %Cpu(s): idle :剩余百分比 KiB Mem: free:剩余内存&#xff0…

再谈C语言——理解指针(五)(完结篇)

数组名的理解 在上⼀个章节我们在使⽤指针访问数组的内容时,有这样的代码: int arr[10] {1,2,3,4,5,6,7,8,9,10}; int *p &arr[0]; 这⾥我们使⽤ &arr[0] 的⽅式拿到了数组第⼀个元素的地址,但是其实数组名本来就是地址&#xf…

视频剪辑新高度:轻松为视频添加字幕,提升内容质量与传播力

视频已经成为最直观、最动人的信息传播方式。但是,仅仅依靠画面和声音,往往难以完全传达视频的核心内容或情感。这时,字幕的加入就显得尤为重要。它们不仅能够增强观众的观看体验,还能为视频增添独特的文字魅力。 首先&#xff0…

让你的电脑准时“打个盹”:Win10定时休眠

哈喽,大家好,我是木头左! 一、Windows 10任务计划程序 在快节奏的工作生活中,常常需要让电脑在特定时间执行某些任务,而Windows 10的任务计划程序就是为此而生的神器。它不仅可以自动更新系统、备份文件,甚…

九泰智库 | 医械周刊- Vol.23

⚖️ 法规动态 新疆药品和医疗器械产品注册费收费标准大幅降低平均降幅95% 近日,新疆自治区发展和改革委会同自治区财政厅印发《关于调整药品医疗器械产品注册费收费标准的通知》,明确自2024年4月29日起,取消药品补充申请注册费,药…

打造人脸磨皮算法新标杆,满足企业多元化需求

高清视频和图片已成为企业展示形象、传递信息的重要载体,拍摄过程中难以避免的皮肤瑕疵和纹理不均等问题,常常让精美的画面失色。美摄科技凭借其领先的人脸磨皮算法解决方案,为企业提供了高效、精细的图像处理服务,让每一帧画面都…

Git ignore、exclude for TortoiseGit 小结

1.Ignore Type:忽略类型,也即忽略规则,如何去忽略文件? 1.1.Ignore item(s) only in containing folder(s):仅忽略在包含在文件夹中项目。 仅忽略该文件夹下选定的patterns。the patterns其实就是文件类型,比如.txt后…

python安装pytorch@FreeBSD

先上结论,最后在conda下安装成功了! PyTorch是一个开源的人工智能深度学习框架,由Facebook人工智能研究院(FAIR)基于Torch库开发并维护。PyTorch提供了一个高效、灵活且易于使用的工具集,用于构建和训练深…

SpringMVC基础篇(一)

文章目录 1.基本介绍1.特点2.SpringMVC跟SpringBoot的关系 2.快速入门1.需求分析2.图解3.环境搭建1.创建普通java工程2.添加web框架支持3.配置lib文件夹1.导入jar包2.Add as Library3.以后自动添加 4.配置tomcat1.配置上下文路径2.配置热加载 5.src下创建Spring配置文件applica…

找不到openjdk-1.8-tools和openjdk-1.8-jconsole

每次打包都报找不到openjdk-1.8-tools和openjdk-1.8-jconsole,但是在项目中并没有用到。 这个是在maven仓库下的druid下的pom文件中。根本没有用到,于是把这两行注释调。解决 .m2\repository\com\alibaba\druid\1.2.6\druid-1.2.6.pom