当前位置: 首页 > news >正文

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)icon-default.png?t=N7T8https://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))(不提倡&#xf…...

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:身份证识别功能实现

说明&#xff1a; 此文使用华为SDK、百度SDK、百度在线API三种方式实现。 一、使用华为SDK实现身份证识别&#xff1a; 说明&#xff1a;免费&#xff0c;不需要联网。 1.AndroidManifest.xml添加权限&#xff1a;<uses-permission android:name"android.permissio…...

MacOS安装Homebrew教程

安装 Homebrew 是在 macOS 上管理软件包的一种简便方法。以下是安装 Homebrew 的步骤&#xff1a; 打开终端&#xff1a;你可以通过在 Spotlight 搜索栏中输入“终端”并按下回车键来打开 macOS 的终端应用程序。 执行安装命令&#xff1a;在终端中粘贴以下命令并按下回车键执…...

laravel如何通过DB获取一条数据并转成数组

在 Laravel 中&#xff0c;你可以使用原生数据库查询构建器&#xff08;DB facade&#xff09;来获取一条数据&#xff0c;并将其转换为数组。这可以通过在查询链的末尾调用 first() 方法后&#xff0c;使用 toArray() 方法来实现。first() 方法会返回一个 StdClass 对象&#…...

ENSP USG防火墙接入虚拟机;开启Web访问;

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

数据结构算法题(力扣)——链表

以下题目建议大家先自己动手练习&#xff0c;再看题解代码。这里只提供一种做法&#xff0c;可能不是最优解。 1. 移除链表元素&#xff08;OJ链接&#xff09; 题目描述&#xff1a;给一个链表的头节点 head 和一个整数 val &#xff0c;删除链表中所有满足值等于 val 的节点…...

LeetCode---391周赛

题目列表 3099. 哈沙德数 3100. 换水问题 II 3101. 交替子数组计数 3102. 最小化曼哈顿距离 一、哈沙德数 简单的模拟题&#xff0c;代码如下 class Solution { public:int sumOfTheDigitsOfHarshadNumber(int x) {int s 0, tmp x;while(tmp){stmp%10;tmp/10;}return x…...

微信小程序的页面交互2

一、自定义属性 &#xff08;1&#xff09;定义&#xff1a; 微信小程序中的自定义属性实际上是由data-前缀加上一个自定义属性名组成。 &#xff08;2&#xff09;如何获取自定义属性的值&#xff1f; 用到target或currentTarget对象的dataset属性可以获取数据 &#xff…...

【VSCode】修改插件地址

不想放在原始C盘下面C:\Users\{用户}\.vscode\extensions为了后续存储空间考虑&#xff0c;想通过添加环境变量创建名为VSCODE_EXTENSIONS的环境变量&#xff0c;内容指向vs Code扩展所在目录即可 直接配置环境变量&#xff0c;不要在有空格的文件夹下面 变量名称&#xff1a;…...

自然语言处理NLP概述

大家好&#xff0c;自然语言处理(NLP)是计算机科学领域与人工智能领域中的一个重要方向&#xff0c;其研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。本文将从自然语言处理的本质、原理和应用三个方面&#xff0c;对其进行概述。 一、NLP的本质 NLP是一种…...

计算机网络——37认证

认证 目标&#xff1a;Bob需要Alice证明他的身份 Protocol ap1.0&#xff1a;Alice说"A am Alice" 可能出现的问题&#xff1a; 在网络上Bob看不到Alice&#xff0c;因此Trudy可以简单的声称他是Alice 认证&#xff1a;重新尝试 Protocol ap2.0&#xff1a;Alice…...

Java中利用BitMap位图实现海量级数据去重

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java全栈-专栏 &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正 目录 前言 什么是BitMap&#xff1f;有什么用&#xff1f; 基本概念 位图的优势 …...

Linux知识点记录

Linux知识点记录 1. 后台运行应用程序方法一&#xff1a;&方法二&#xff1a;nohup & 2. 一个shell脚本中执行多个应用程序3. 2>&14. shell脚本清除日志5. 通过grep查找匹配字符串 1. 后台运行应用程序 参考文章&#xff1a;https://blog.csdn.net/Pan_peter/…...

js的check函数

在JavaScript中&#xff0c;并没有一个内置的名为check的函数。然而&#xff0c;你可以根据需求自定义一个check函数&#xff0c;用于执行各种验证和检查任务。这个check函数的具体作用完全取决于你如何定义和实现它。 以下是一个简单的示例&#xff0c;展示了如何定义一个che…...

赛尼格磁电科技邀您到场参观2024第13届生物发酵展

参展企业介绍 北京赛尼格磁电科技有限公司是一家中加合资的专业永磁组件生产商&#xff0c;2001年成立于中国北京。公司专业从事磁性材料的应用及各类磁系统的设计、开发及制造&#xff0c;公司产品广泛应用于汽车行业、建筑行业、电子行业、航海领域、医学领域、教育领域等。 …...

常用网站建设软件/百度关键词工具在哪里

公众号&#xff1a; 爱写bug&#xff08;ID&#xff1a;icodebugs&#xff09; 给定一个已按照升序排列 的有序数组&#xff0c;找到两个数使得它们相加之和等于目标数。 函数应该返回这两个下标值 index1 和 index2&#xff0c;其中 index1 必须小于 index2。 说明: 返回的下标…...

著名的wordpress主题公园/java成品网站

【欧洲杯】锡瓦斯体育vs安塔利亚体育【欧洲杯】锡瓦斯体育vs安塔利亚体育【土超】锡瓦斯体育vs安塔利亚体育2020年12月15日 00:00锡瓦斯体育本赛季锡瓦斯体育在土超历经10轮后录得2胜4平4负的战绩&#xff0c;累积下10分排名积分榜第17位。近日球队战况不佳&#xff0c;上轮欧罗…...

哪个网站做团购要求低点/广州网站制作服务

您好&#xff01;共享不了的原因是多种多样的&#xff0c;有些是因为安装防火墙阻挡&#xff0c;有些是因为权限设置&#xff0c;有些是因为服务或者计算机设置原因等等。而且解决方法都各不相同。而且因为您有多台电脑&#xff0c;因此他们的原因可能也是有很多种&#xff0c;…...

组织建设求是网/windows优化软件排行

有话先说&#xff1a;我是一只菜鸟&#xff0c;一只都是&#xff0c;从前是现在也是。 CSS中的会计元素与行内元素 块级元素特性&#xff1a;占据一整行&#xff0c;总是重起一行并且后面的元素也必须另起一行显示。内联元素特性&#xff1a;和其他内联元素显示在同一行。 可以…...

网站的维护/推广神器app

1. 新建( new )&#xff1a;新创建了一个线程对象。2. 可运行( runnable )&#xff1a;线程对象创建后&#xff0c;其他线程(比如 main 线程&#xff09;调用了该对象 的 start ()方法。该状态的线程位于可运行线程池中&#xff0c;等待被线程调度选中&#xff0c;获 取 cpu 的…...

电影网站要怎样做才有出路/南宁seo公司

用MFC 树控件表控件时内存总是占用的非常的大。 注意&#xff0c;这里已经排除了内存泄露的问题&#xff0c;因为没有进行任何的new 和 delete。 其实CListControl占用的内存已经没用了&#xff0c;但是Windows没有立即释放&#xff0c;而是暂存在程序堆里&#xff0c;以便如…...