Debian12 使用 nginx 与 php8.2 使用 Nextcloud
最近将小服务器升级了下系统,使用了 debian12 的版本,正好试试 nginx 和 php-fpm 这种方式运行 Nextcloud 这个私有云的配置。
一、基本系统及应用安装
系统:debian12 x86_64 位版本最小安装,安装后可根据自己需求安装一些工具,比如 neofetch 等自己喜欢的工具;
nginx:使用系统源的包进行安装,主要是为了省事儿,要不然还得找服务启动脚本等各种配置,内容里会记录 nginx 的配置文件内容;另如需要使用源码安装的话,想使用系统的服务启动,服务脚本在最后的“附件”里查看;
php:使用系统源中的包进行安装,主要是使用 php-fpm 方式,主要也是为了省事儿,看缺什么组件就直接安装就可以,当前源中的版本是 8.2.7 版本,这个不太建议使用源码安装,主要是太麻烦,不容易记录也不必要弄太麻烦;
nextcloud:使用的是当前最新的版本 28.0.4,数据库使用 sqlite 主要也是为了省事儿,也没特别大的数据,所以就不再另安装数据库系统;
二、系统配置
1、配置 debian12:
最小安装完成后(要注意安装过程中要选择安装 ssh 服务,要不然系统安装完成还得自己另安装,太麻烦),修改源到自己习惯的国内源,并更新到最新
apt update && apt upgrade -y
安装一些自己习惯使用工具,比如 neofetch、btop、net-tools 什么的
并将系统的的 IP 设置为固定即可,方式很多,我使用的是直接设置 interfaces 文件:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).source /etc/network/interfaces.d/*# The loopback network interface
auto lo
iface lo inet loopback# The primary network interface
allow-hotplug enp1s0
# iface enp1s0 inet dhcp
iface enp1s0 inet staticaddress X.X.X.X/24gateway X.X.X.Xdns-nameservers X.X.X.X
重新网络服务以使其生效
systemctl restart networking.service
系统已经设置完毕;
2、安装配置 Nginx
apt install nginx # 安装nginx
编写 nginx 配置文件(注意:按配置文件内容中可以看到 nextcloud 程序的位置是在/var/www/nextcloud 下,后面直接将 nextcloud 解压到/var/www/下即可)
vim /etc/nginx/sites-available/nextcloud
# 注:这是访问方式为 http://IP:PORT/ 的配置
server {listen 80;server_name X.X.X.X;root /var/www/nextcloud;index index.html index.htm index.php;location / {try_files $uri $uri/ /index.php$is_args$args;}location ~ \.php(?:$|/) {fastcgi_split_path_info ^(.+\.php)(/.+)$;# 要注意下面这行的接口的版本,版本要与 php 的版本一样,可以去指定的地址查看一下fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;fastcgi_index index.php;include fastcgi_params;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;fastcgi_param PATH_INFO $fastcgi_path_info;}location ~ /\.ht {deny all;}# 解决 nextcloud 中的一个安全检查的 .mjs 问题location ~* \.mjs$ {types { }default_type application/javascript;}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;}# Optional: set long EXPIRES header on static assetslocation ~* \.(?:jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {expires 30d;access_log off;}
}
或是使用 url 路径的方式使用 http://IP:PORT/nextcloud/ 的配置内容(使用这种安装的会在nextcloud页面安装完成后自动转到没有 url 地址的网址,进而导致无法打开,此时手工加上 url 地址就可以)
根据自己需要二选一即可
mkdir -p /var/www/app
tar xjvf nextcloud-28.0.4.tar.bz2 -C /var/www/app/ # 解压 nextcloud 到 app 目录中
chown -R www-data:www-data /var/www/app
# 使用 url 路径的方式使用 http://IP:PORT/nextcloud/ 的配置
server {listen 80;server_name X.X.X.X;root /var/www/app;index index.html index.htm index.php;location /nextcloud {try_files $uri $uri/ /nextcloud/index.php$request_uri;}location ~ \.php(?:$|/) {fastcgi_split_path_info ^(.+\.php)(/.+)$;# 要注意下面这行的接口的版本,版本要与 php 的版本一样,可以去指定的地址查看一下fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;fastcgi_index index.php;include fastcgi_params;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;fastcgi_param PATH_INFO $fastcgi_path_info;}location ~ /\.ht {deny all;}# 解决 nextcloud 中的一个安全检查的 .mjs 问题location ~* \.mjs$ {types { }default_type application/javascript;}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 /nextcloud/remote.php/dav/; }location = /.well-known/caldav { return 301 /nextcloud/remote.php/dav/; }location = /.well-known/webfinger { return 301 /nextcloud/index.php/.well-known/webfinger; }location = /.well-known/nodeinfo { return 301 /nextcloud/index.php/.well-known/nodeinfo; }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 /nextcloud/index.php$request_uri;}# Optional: set long EXPIRES header on static assetslocation ~* \.(?:jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {expires 30d;access_log off;}
}
创建一个软链接
ln -s /etc/nginx/sites-available/nextcloud /etc/nginx/sites-enabled/
systemctl restart nginx.service # 重启nginx服务
3、安装配置 php
直接使用系统源中的版本就可以,当前版本是 8.2.7
# 安装 php 及 php-fpm
apt install php8.2-fpm -y# 安装 nextcloud 所需要的必要 php 组件,可以在运行 nextcloud 时看提示所缺少的组件安装也可以
apt install php8.2-sqlite3 php8.2-zip php8.2-xml php8.2-mbstring php8.2-gd php8.2-curl -y# 安装 nextcloud 正常使用时建议安装的 php 组件
apt install php8.2-gmp php8.2-bcmath php8.2-intl php8.2-imagick -y# 按 nextcloud 建议修改 php-fpm 的配置
# 解决:PHP 内存限制低于建议值 512 MB
vim /etc/php/8.2/fpm/php.ini
# 搜索 memory_limit,并将原值 128M 修改为 512M 后保存
# 搜索 interned_strings_buffer,启用并将原值 8 修改为 16,因为这个有可能会被提示需进行优化vim /etc/php/8.2/fpm/pool.d/www.conf
# 搜索 PATH,找到 env[PATH],= 的内容为在系统中的 PATH 值(echo $PATH 的结果)
# 例如:env[PATH] = /usr/local/bin:/usr/bin:/bin# 重启服务使组件及配置生效
systemctl restart php8.2-fpm.service
4、安装 Nextcloud
可以直接到官网上下载就可以(这个是官方各个版本的下载地址,选一个自己喜欢的就可以)Index of /server/releases (nextcloud.com)https://download.nextcloud.com/server/releases/我选择下载最新的版本
# 下载指定的版本包
wget https://download.nextcloud.com/server/releases/nextcloud-28.0.4.tar.bz2
# 解压到指定位置,也是按 nginx 的配置文件中所指的位置运行解压
tar xjvf nextcloud-28.0.4.tar.bz2 -C /var/www/
# 修改目标目录的所属权限
chown -R www-data:www-data /var/www/nextcloud/
# 此时输入 ip:port 就可以正常访问 nextcloud 第一运行的安装向导页面了
# 如果 php 组件没有安装完全,也会提示,按提示安装完全后,重启 php 服务并刷新页面即可
# 需要另找一个位置专门给 nextcloud 存数据文件使用,所有上传的文件都会保存在该目录下
# 数据目录的权限也是 www-data 用户的,例如:
mkdir /nextcloud-data
chown -R www-data:www-data /nextcloud-data/
5、配置 nextcloud
在安装完成后可以修改配置文件中的内容,修改一些设置
vim /var/www/nextcloud/config/config.php
# 如果有域名的可以在这段里添加
'trusted_domains' =>array (0 => '127.0.0.1:80',1 => 'www.abc.com:80',),# 解决默认电话区域和默认地域的提示,在配置文件中添加'default_phone_region' => 'CN','default_language' => 'zh_CN','default_locale' => 'zh',
附件一:
nginx 源码安装并使用服务启动管理所需使用脚本(暂未测试,但看着应该是可以正常使用)
vim /etc/init.d/nginx # 创建服务启动脚本
#!/bin/sh
### BEGIN INIT INFO
# Provides: nginx
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4
# Default-Stop: 0 1 6
# Short-Description: starts the nginx web server
# Description: starts nginx using start-stop-daemon
### END INIT INFODAEMON=/usr/local/nginx/sbin/nginx
NAME=nginx
DESC=nginxtest -x $DAEMON || exit 0case "$1" instart)echo -n "Starting $DESC: "$DAEMONecho "$NAME.";;stop)echo -n "Stopping $DESC: "$DAEMON -s stopecho "$NAME.";;reload)echo -n "Reloading $DESC configuration: "$DAEMON -s reloadecho "$NAME.";;restart)echo -n "Restarting $DESC: "$DAEMON -s quit$DAEMONecho "$NAME.";;*)N=/etc/init.d/$NAMEecho "Usage: $N {start|stop|restart|reload}" >&2exit 1;;
esacexit 0
chmod a+x /etc/init.d/nginx # 添加可执行权限
update-rc.d nginx defaults # 添加并更新到启动服务,使其可以自动启动
# 之后的启动服务操作
sudo /etc/init.d/nginx start
sudo /etc/init.d/nginx stop
sudo /etc/init.d/nginx reload
相关文章:

Debian12 使用 nginx 与 php8.2 使用 Nextcloud
最近将小服务器升级了下系统,使用了 debian12 的版本,正好试试 nginx 和 php-fpm 这种方式运行 Nextcloud 这个私有云的配置。 一、基本系统及应用安装 系统:debian12 x86_64 位版本最小安装,安装后可根据自己需求安装一些工具&…...

Java设计模式:代理模式的静态和动态之分(八)
码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! 在软件设计中,代理模式是一种常用的设计模式,它为我们提供了一种方式来控制对原始对象的访问。在Java中&a…...

【论文通读】AgentStudio: A Toolkit for Building General Virtual Agents
AgentStudio: A Toolkit for Building General Virtual Agents 前言AbstractMotivationFramework评估GUI GroudingReal-World Cross-Application Benchmark Suite Conclusion 前言 来自昆仑万维的一篇智能体环境数据大一统框架工作,对未来计算机智能体的发展具有指…...
wordvect嵌入和bert嵌入的区别
Word2Vec 嵌入和 BERT 嵌入之间有几个关键区别: 训练方式: Word2Vec:Word2Vec 是一个基于神经网络的词嵌入模型,它通过训练一个浅层的神经网络来学习单词的分布式表示。它有两种训练方式:连续词袋模型(CBOW…...

渗透测试练习题解析 5(CTF web)
1、[安洵杯 2019]easy_serialize_php 1 考点:PHP 反序列化逃逸 变量覆盖 【代码审计】 通过 GET 的方式获取参数 f 的值,传递给变量 function 定义一个过滤函数,过滤掉特定字符(用空字符替换) 下面的代码其实没什么用…...

PCA(Principal Component Analysis,主成分分析)
PCA(Principal Component Analysis,主成分分析)是一种在数据分析中广泛应用的统计方法,主要用于数据降维、可视化和去噪。以下是对PCA的发展史、工作原理以及理论基础的详细解释: Principal Component Analysis 一、PC…...

干货 | 探索CUTTag:从样本到文库,实验步步为营!
CUT&Tag(Cleavage Under Targets and Tagmentation)是一种新型DNA-蛋白互作研究技术,主要用于研究转录因子或组蛋白修饰在全基因组上的结合或分布位点。相比于传统的ChIP-seq技术,CUT&Tag反应在细胞内进行,创新…...

提质不增本,降本不降质
#公益巡讲# #质量万里行# 公开课、沙龙活动...

数据结构---顺序表实现
目录 1.顺序表 2.动态顺序表的实现 (4)顺序表初始化 (5)顺序表销毁 (6)顺序表的插入 a.尾插 b.头插 (7)顺序表的删除 a.尾删 b.头删 (8)指定位置之…...
python docx 添加动态表格
在Python中,使用python-docx库可以创建Word文档并添加动态表格。以下是一个简单的例子,演示如何创建一个包含动态内容的表格: from docx import Document# 创建一个Word文档 document Document()# 添加一个标题 document.add_heading(动态表…...

git配置多SSH
目的: 一台电脑可以让github、gitee等账号同时存在,让不同账号配置不同的密钥 第一步:创建不同平台的SSH公钥 执行命令: ssh-keygen -t rsa -C "对应仓库邮箱地址" -f ~/.ssh/id_rsa.github 如果执行上面的命令&…...

IDEA连接SqlServer数据库
目录 下载jar包 下载sqljdbc_12.6压缩包 解压 导入IDEA 新建文件夹 复制粘贴进JDBC文件夹并设为library 编写类及方法 代码 下载jar包 以sqljdbc_12.6为例 下载sqljdbc_12.6压缩包 最新地址:sqljdbc 官方最新地址 解压 解压即用 导入IDEA 新建文件夹 复制…...

LeetCode 378 有序矩阵中第K小的元素
题目信息 LeetoCode地址: . - 力扣(LeetCode) 题解内容大量转载于:. - 力扣(LeetCode) 题目理解 题意很直观,就是求二维矩阵中所有元素排序后第k小的数。 最小堆写法 该写法不再赘述,维护…...

Vue3(domdiff)最长递归子序列求解简易版(超简单)
Vue3(domdiff)最长递归子序列求解简易版 ⚠️ 关键词(每一个都需要理解)js 代码实现写完感想欢迎关注 ⚠️ 关键词(每一个都需要理解) 动态规划(O(N^2))(不提倡…...
LLaMA-Factory+qwen多轮对话微调
LLaMA-Factory地址:https://github.com/hiyouga/LLaMA-Factory/blob/main/README_zh.md qwen地址:https://huggingface.co/Qwen/Qwen-7B-Chat/tree/main 数据准备 数据样例 [ {"id": "x3959", "conversations": [{&qu…...
邦芒面试:如何在面试中巧妙回答自己的缺点
在面试中,被问及自己的缺点时,如何巧妙回答是一门学问。恰当的回答不仅能够展示你的自我认知,还能让面试官看到你的成长潜力和积极态度。 首先,切忌谈一些看似缺点实则优点的话题,如追求完美、待人接物太客气等。这些…...
Android:身份证识别功能实现
说明: 此文使用华为SDK、百度SDK、百度在线API三种方式实现。 一、使用华为SDK实现身份证识别: 说明:免费,不需要联网。 1.AndroidManifest.xml添加权限:<uses-permission android:name"android.permissio…...
MacOS安装Homebrew教程
安装 Homebrew 是在 macOS 上管理软件包的一种简便方法。以下是安装 Homebrew 的步骤: 打开终端:你可以通过在 Spotlight 搜索栏中输入“终端”并按下回车键来打开 macOS 的终端应用程序。 执行安装命令:在终端中粘贴以下命令并按下回车键执…...
laravel如何通过DB获取一条数据并转成数组
在 Laravel 中,你可以使用原生数据库查询构建器(DB facade)来获取一条数据,并将其转换为数组。这可以通过在查询链的末尾调用 first() 方法后,使用 toArray() 方法来实现。first() 方法会返回一个 StdClass 对象&#…...

ENSP USG防火墙接入虚拟机;开启Web访问;
1.添加防火墙及云,启动防火墙; 2.配置桥接网卡; 默认账户:admin 默认密码:Admin123 #第一次登陆需修改密码; 默认G0/0/0口为管理口,而在模拟器中进入防火墙的web需如下配置: 配置 …...

Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...

全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...