Debian12 使用 nginx 与 php8.2 使用 Nextcloud

news2025/1/18 7:36:17

最近将小服务器升级了下系统,使用了 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 static
        address X.X.X.X/24
        gateway X.X.X.X
        dns-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 assets
    location ~* \.(?: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 assets
    location ~* \.(?: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 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 INFO
 
DAEMON=/usr/local/nginx/sbin/nginx
NAME=nginx
DESC=nginx
 
test -x $DAEMON || exit 0
 
case "$1" in
    start)
        echo -n "Starting $DESC: "
        $DAEMON
        echo "$NAME."
        ;;
    stop)
        echo -n "Stopping $DESC: "
        $DAEMON -s stop
        echo "$NAME."
        ;;
    reload)
        echo -n "Reloading $DESC configuration: "
        $DAEMON -s reload
        echo "$NAME."
        ;;
    restart)
        echo -n "Restarting $DESC: "
        $DAEMON -s quit
        $DAEMON
        echo "$NAME."
        ;;
    *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart|reload}" >&2
        exit 1
        ;;
esac
 
exit 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


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

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

相关文章

面试经典-Spring篇

1、解释Spring框架中bean的生命周期 实例化 通过反射去推断构造函数进行实例化 实例工厂、静态工厂 属性赋值 解析自动装配(byname、bytype、 constractor、 Autowired) 循环依赖 初始化 调用XXXAware回调方法(BeanNameAware、BeanFactoryAw…

有同学和我说,深度学习不用特征工程,只有浅层机器学习方法采用特征工程,我说你误会了,我给你好好解释吧!!

1. 通俗解释 浅层机器学习算法(如逻辑回归、决策树、支持向量机等)和深度学习算法(如神经网络)在特征工程上的依赖性确实存在一些差异。 浅层机器学习算法的特征工程依赖性: 浅层算法通常需要手工选择和设计特征&…

数据结构面试题报错调试方法记录

栈和队列报错调试 1.用栈实现队列 232. 用栈实现队列 - 力扣(LeetCode) 此题解题思路如下: 先将数据放在pushst栈里面,popst栈为空再把pushst栈里面的数据放进popst栈里面去,不为空则不执行。不为空时候直接拿取栈…

Flutter Boost 3

社区的 issue 没有收敛的趋势。 设计过于复杂,概念太多。这让一个新手看 FlutterBoost 的代码很吃力。 这些问题促使我们重新梳理设计,为了彻底解决这些顽固的问题,我们做一次大升级,我们把这次升级命名为 FlutterBoost 3.0&am…

Linux | MySQL安装Workbench图形化

环境:rhel8 MySQL8 下载软件包 官网软件包地址: MySQL :: 下载 MySQL Workbenchhttps://dev.mysql.com/downloads/workbench/我这里下载的是 mysql-workbench-community-8.0.24-1.el8.x86_64.rpm 解决依赖 用rpm安装发现缺少依赖 [rooth…

【游戏分析】逆向数组结构分析

追背包数组 用物品数量当突破口 首先CE扫描目标地址 很简单 找到目标地址 对物品数量地址下写入断,然后吃药 OD中追踪其来源 来源 ecx14 根据堆栈情况 判断此处不是函数头部 但是上面就是retn 那么只能是其他位置跳转而来 在上面发现了跳转来的代码 获得便宜…

ARM架构学习笔记2-汇编

RISC是精简指令集计算机(RISC:Reduced Instruction Set Computing) ARM汇编概述 一开始,ARM公司发布两类指令集: ① ARM指令集,这是32位的,每条指令占据32位,高效,但是太占空间 2…

移位运算与乘法

描述 题目描述: 已知d为一个8位数,请在每个时钟周期分别输出该数乘1/3/7/8,并输出一个信号通知此时刻输入的d有效(d给出的信号的上升沿表示写入有效) 信号示意图: 波形示意图: 输入描述&#…

用于超声图像中的乳腺病变分割的全局指导网络

用于超声图像中的乳腺病变分割的全局指导网络 摘要引言相关工作方法3.1. Global guidance block3.1.1. Spatial-wise global guidance block3.1.2. Channel-wise global guidance block3.2. Breast lesion boundary detection module 3.2.乳腺病灶边界检测模块 Global guidance…

promise.all方式使用

romise.all( ).then( ) 处理多个异步任务,且所有的异步任务都得到结果时的情况。 比如:用户点击按钮,会弹出一个弹出对话框,对话框中有两部分数据呈现,这两部分数据分别是不同的后端接口获取的数据。 弹框弹出后的初…

深入解析消息认证码(MAC)算法:HmacMD5与HmacSHA1

码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! 目录 引言一、消息认证码(MAC)简介二、HmacMD5算法HmacMD5算法的工作原理 三、HmacSHA1算法HmacSHA1算法的…

什么是SYN攻击,有什么办法防御SYN攻击

自进入数字化互联网时代,网络技术给我们带来了许多服务,为人们的生活增添了许多便利。但同时,网络安全问题也日益凸显,其中DDoS攻击,即分布式拒绝服务攻击,已经成为一种常见的网络威胁。这种攻击方式通过控…

面试经典150题【141-150】

文章目录 面试经典150题【141-150】208.实现前缀树(Trie树)211. 添加与搜索单词-数据结构设计212.单词搜索II200.岛屿数量130.被围绕的区域133.克隆图399.除法求值(未做)拓扑排序207.课程表210.课程表II 面试经典150题【141-150】…

实战:Solrais系统下Oracle 12.2 在线扩容ASM磁盘组操作记录

这篇文章主要是为了记录一下操作,这个假期又要给这套RAC扩容磁盘。 我这套Solaris的小机我还不总操作这玩意,和LINUX有点小差别,整理记录一下,要不每次都是现翻。 存储端划LUN映射到主机 登录到3PAR存储控制台,创建…

ARM汇编与逆向工程:揭秘程序背后的神秘世界

文章目录 一、ARM汇编语言:底层世界的密码二、逆向工程:软件世界的侦探工作三、ARM汇编与逆向工程的完美结合四、ARM汇编逆向工程的风险与挑战五、ARM汇编逆向工程的未来展望《ARM汇编与逆向工程 蓝狐卷 基础知识》内容简介作者简介译者简介ChaMd5安全团…

前端学习之DOM编程案例:抽奖案例

代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>抽奖案例</title><style>*{margin: 0;padding: 0;}</style> </head> <body><div id"container"&g…

【SpringCloud】Nacos 注册中心

目 录 一.认识和安装 Nacos1.Windows安装1. 下载安装包2. 解压3. 端口配置4. 启动5. 访问 2.Linux安装1. 安装JDK2. 上传安装包3. 解压4. 端口配置5. 启动 二.服务注册到 nacos1. 引入依赖2. 配置 nacos 地址3. 重启 三.服务分级存储模型1. 给 user-service 配置集群2. 同集群优…

低代码革新:软件开发的未来潜力与创新路径探索

过去的一年&#xff0c;挑战与机遇并存。人们一边忧虑市场经济下行所带来的新的增长难题、裁员危机&#xff0c;一边惊叹于AIGC、量子技术等领域不断涌现新的创新成果。 时代发生了改变&#xff0c;传统“互联网”的模式已走入尾声&#xff0c;新一轮的科技革命与产业变革正在到…

【刷题】代码随想录算法训练营第三天|203、移除链表元素,707、设计链表,206、反转链表

目录 203. 移除链表元素707. 设计链表206. 反转链表双指针法递归法 203. 移除链表元素 文档讲解&#xff1a;https://programmercarl.com/0203.%E7%A7%BB%E9%99%A4%E9%93%BE%E8%A1%A8%E5%85%83%E7%B4%A0.html 视频讲解&#xff1a;https://www.bilibili.com/video/BV18B4y1s7R9…

活动回顾丨掘金海外,探寻泛娱乐社交APP出海新风口

3月中旬,Flat Ads携手声网、XMP在广州成功举办“泛娱乐社交APP出海新风口——广州站”的主题线下沙龙活动。 多位大咖与泛娱乐社交APP赛道的行业伙伴汇聚一堂。本次活动邀请到Flat Ads 市场VP 王若策、声网娱乐视频产品负责人 陈际陶、XMP资深产品运营专家 屈俊星等多位行业大…