在 Ubuntu 14.04 服务器上安装 ISPConfig3 的方法
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
简介
虽然命令行是一个强大的工具,可以让您在许多情况下快速轻松地工作,但在某些情况下,可视化界面是有帮助的。如果您正在为一台机器配置许多不同的服务,或者为客户管理系统的部分,像 ISPConfig 这样的工具可以让这项任务变得更加简单。
ISPConfig 是一个服务器控制面板,允许您轻松配置域名、电子邮件地址、站点配置和用户帐户。我们将在 Ubuntu 14.04 服务器上安装该面板。
先决条件
在开始之前,您应该有一个指向您将要使用的服务器的域名。要了解如何在 DigitalOcean 上配置您的域名,请单击此处。
您还需要一个具有 sudo 权限的非根用户。您可以按照我们的 Ubuntu 14.04 初始服务器设置指南中的步骤 1-4 来学习如何设置非根帐户。以此用户登录以开始操作。
升级系统
我们应该做的第一件事是升级基本系统。这将确保我们系统上的软件包是最新的打包版本。
在执行此操作之前,我们应该更新本地软件包索引,以便 apt
知道最新的软件包版本:
sudo apt-get update
sudo apt-get upgrade
我们的系统现在应该是最新的,我们可以继续进行安装的其余部分。
验证主机名是否正确配置
我们将首先确保我们的主机名已正确配置。在本指南中,我们将假定我们要设置的域名是 server.test.com
,服务器的 IP 地址是 111.111.111.111
。
我们需要验证我们的主机名是否已正确配置。我们应该查看我们的 hosts 文件:
sudo nano /etc/hosts
它可能看起来像这样:
127.0.0.1 localhost server.test.com server
我们希望使我们的主机名使用我们的公共 IP 地址。您可以通过将该行拆分为两行,并将域名部分指向我们的公共 IP 地址来实现:
127.0.0.1 localhost
<span class="highlight">111.111.111.111 server.test.com server</span>
完成后保存并关闭文件。
我们还应编辑我们的 hostname
文件,以确保它也包含正确的域名:
sudo nano /etc/hostname
如果您的整个主机名没有显示,请修改该值:
<span class="highlight">server.test.com</span>
您应该通过键入以下命令来确保系统使用新值:
sudo hostname -F /etc/hostname
更改系统设置
有一些 Ubuntu 以非常规方式配置的项目,我们需要撤消这些配置,以使我们的软件能够正常运行。
我们需要做的第一件事是禁用 AppArmor,因为它与 ISPConfig 不兼容。首先,我们应该停止服务:
sudo service apparmor stop
我们还可以通过输入以下命令来告诉它卸载其配置文件:
sudo service apparmor teardown
完成后,我们需要告诉我们的服务器不要在启动时启动此服务:
sudo update-rc.d -f apparmor remove
我们实际上可以通过输入以下命令来删除所有相关文件和软件包:
sudo apt-get remove apparmor
我们需要修改的另一个配置是默认系统 shell。Ubuntu 使用 dash
shell 用于系统进程,但 ISPConfig 利用了专门由 bash
提供的附加功能。我们可以通过输入以下命令将 bash
设置为默认系统 shell:
sudo dpkg-reconfigure dash
在提示时,选择 “No” 以使实用程序重新配置系统 shell 指针以使用 bash
而不是 dash
。
安装附加组件
现在我们的基本系统已准备就绪,我们可以开始安装 ISPConfig 可以管理的一些服务和支持 ISPConfig 的一些软件。
我们将安装基本的 LAMP(Linux、Apache、MySQL、PHP)组件、邮件软件、用于邮件的防病毒扫描软件以及其他软件包。
我们将在一个大的 apt
命令中执行所有这些操作,因此这将一次安装许多软件包:
sudo apt-get install apache2 apache2-utils libapache2-mod-suphp libapache2-mod-fastcgi libapache2-mod-python libapache2-mod-fcgid apache2-suexec libapache2-mod-php5 php5 php5-fpm php5-gd php5-mysql php5-curl php5-intl php5-memcache php5-memcached php5-ming php5-ps php5-xcache php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-imap php5-cgi php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libruby memcached phpmyadmin postfix postfix-mysql postfix-doc mysql-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve mailman amavisd-new spamassassin clamav clamav-daemon zoo unzip zip arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl libnet-dns-perl bind9 dnsutils vlogger webalizer awstats geoip-database libclass-dbi-mysql-perl squirrelmail pure-ftpd-common pure-ftpd-mysql snmp
在安装过程中,您将被问及一些问题。您将被要求为 mailman
选择一种语言。选择 en (English)
以继续。您还将被要求选择并确认 MySQL 管理员用户的密码。
您将收到的另一个提示是是否为 dovecot
创建自签名的 SSL 证书。您应该选择 “Yes”。您将需要输入 SSL 证书的 “commonName”。这只是您的完全合格的域名:
server.test.com
对于 postfix
,您将被问及需要哪种邮件配置。选择 Internet Site
。然后您将被要求选择系统邮件名称。您也应该将其设置为您的域名:
server.test.com
对于 phpMyAdmin,该软件具有根据您的 Web 服务器自动配置自身的功能。选择 “apache2” 并按下 “SPACE” 以选择该选项。按下 “TAB” 然后按下 “ENTER” 以进行选择。
稍后,您将被问及是否希望使用 dbconfig-common
配置 phpMyAdmin 的数据库。在这里选择 “Yes”。您需要输入您上面选择的 MySQL 管理员帐户的密码。然后您可以选择并确认 phpMyAdmin 用户的密码。
此时,所有组件应该都已安装完毕。
配置后端组件
现在,一切都已经安装好了,我们需要开始配置我们的服务和工具。
邮件配置
让我们从在 postfix
中启用一些功能开始。使用编辑器打开默认配置文件:
sudo nano /etc/postfix/master.cf
我们只需要取消注释该文件中的一些行。具体来说,处理提交服务的行以及其下的前三个选项行,以及 smtps 服务和其下的前三个选项行:
submission inet n - - - - smtpd-o syslog_name=postfix/submission-o smtpd_tls_security_level=encrypt-o smtpd_sasl_auth_enable=yes
. . .
smtps inet n - - - - smtpd-o syslog_name=postfix/smtps-o smtpd_tls_wrappermode=yes-o smtpd_sasl_auth_enable=yes
现在,我们需要在这两个服务下添加一个额外的选项。对于每个服务,它将是相同的:
submission inet n - - - - smtpd-o syslog_name=postfix/submission-o smtpd_tls_security_level=encrypt-o smtpd_sasl_auth_enable=yes<span class="highlight">-o smtpd_client_restrictions=permit_sasl_authenticated,reject</span>
. . .
smtps inet n - - - - smtpd-o syslog_name=postfix/smtps-o smtpd_tls_wrappermode=yes-o smtpd_sasl_auth_enable=yes<span class="highlight">-o smtpd_client_restrictions=permit_sasl_authenticated,reject</span>
完成后保存并关闭文件。
另一个与邮件相关的服务是 mailman
,它可以处理邮件列表。
我们可以开始告诉它创建一个新列表:
sudo newlist mailman
您将被要求提供与列表关联的电子邮件。您还将被要求选择密码。
脚本将输出一长串的别名。您应该将它们添加到您的 /etc/aliases
文件的底部:
sudo nano /etc/aliases
它应该看起来像这样:
postmaster: root
<span class="highlight">mailman: "|/var/lib/mailman/mail/mailman post mailman"</span>
<span class="highlight">mailman-admin: "|/var/lib/mailman/mail/mailman admin mailman"</span>
<span class="highlight">mailman-bounces: "|/var/lib/mailman/mail/mailman bounces mailman"</span>
<span class="highlight">mailman-confirm: "|/var/lib/mailman/mail/mailman confirm mailman"</span>
<span class="highlight">mailman-join: "|/var/lib/mailman/mail/mailman join mailman"</span>
<span class="highlight">mailman-leave: "|/var/lib/mailman/mail/mailman leave mailman"</span>
<span class="highlight">mailman-owner: "|/var/lib/mailman/mail/mailman owner mailman"</span>
<span class="highlight">mailman-request: "|/var/lib/mailman/mail/mailman request mailman"</span>
<span class="highlight">mailman-subscribe: "|/var/lib/mailman/mail/mailman subscribe mailman"</span>
<span class="highlight">mailman-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman"</span>
完成后保存并关闭文件。您需要让 postfix
知道您添加的别名。您可以通过输入以下命令来实现:
sudo newaliases
我们可以通过输入以下命令来启动 mailman
服务:
sudo service mailman start
重新启动 postfix
服务以启用邮件更改:
sudo service postfix restart
当我们处理服务时,我们还应该停止并禁用 spamassassin
。ISPConfig 根据需要调用它,因此它不需要一直运行:
sudo service spamassassin stop
然后告诉服务器不要在启动时再次启动它:
sudo update-rc.d -f spamassassin remove
LAMP 配置
我们需要在 PHP 中启用 mcrypt
功能:
sudo php5enmod mcrypt
我们还需要启用我们安装的一些 Apache 模块。
sudo a2enmod rewrite ssl actions include cgi dav_fs suexec dav auth_digest fastcgi alias
我们还需要对一些 Apache 配置文件进行一些调整。
我们启用的模块目前将拦截所有我们的 PHP 文件。我们希望阻止它这样做。打开 suphp
配置文件:
sudo nano /etc/apache2/mods-available/suphp.conf
<IfModule mod_suphp.c><FilesMatch "\.ph(p3?|tml)$">SetHandler application/x-httpd-suphp</FilesMatch>suPHP_AddHandler application/x-httpd-suphp
. . .
我们将用一个单一命令替换顶部块。完成后,它应该看起来像这样:
<IfModule mod_suphp.c><span class="highlight">AddType application/x-httpd-suphp .php .php3 .php4 .php5 .phtml</span>suPHP_AddHandler application/x-httpd-suphp
完成后保存并关闭文件。
我们将不得不手动创建 mailman
Apache 文件的符号链接。您可以通过输入以下命令来实现:
sudo ln -s /etc/mailman/apache.conf /etc/apache2/conf-available/mailman.conf
然后通过输入以下命令来启用它:
sudo a2enconf mailman
如果您计划创建托管 Ruby 文件的站点,您应该在 mime.types
文件中注释掉对 .rb
文件的处理。ISPConfig 将自行处理这个问题:
sudo nano /etc/mime.types
application/x-rss+xml rss
<span class="highlight">#</span>application/x-ruby rb
application/x-rx
完成后保存并关闭文件。
现在,我们可以重新启动 Apache 以实施我们的更改:
sudo service apache2 restart
杂项配置
我们还需要编辑系统的一些其他部分。
由于 ISPConfig 经常用于细分服务器空间以进行转售,为客户提供 FTP 访问通常是一个要求。我们已经安装了必要的软件,但我们需要做一些调整。
首先编辑 FTP 服务器的配置:
sudo nano /etc/default/pure-ftpd-common
我们需要确保我们的 FTP 用户被限制在 chroot 环境中,以免干扰系统的其他部分。我们可以通过将 VIRTUALCHROOT
设置为 true
来实现这一点:
VIRTUALCHROOT=<span class="highlight">true</span>
由于 FTP 本身是不安全的,我们至少应该用 TLS 加密来保护它。我们可以通过创建一个简单包含 1
字符的标志文件来设置这一点:
sudo nano /etc/pure-ftpd/conf/TLS
1
现在,我们需要创建一个自签名证书供进程使用。我们可以通过调用以下命令来实现:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
该证书将在一年内有效。您将需要回答一些提示。请填写您的信息。Common Name
或许是最重要的部分。
之后,我们需要通过输入以下命令来锁定密钥文件:
sudo chmod 600 /etc/ssl/private/pure-ftpd.pem
当所有这些都完成后,我们可以重新启动服务:
sudo service pure-ftpd-mysql restart
这将允许我们的 FTP 守护程序使用加密。
我们在这个系统上设置 FTP 的一个原因是因为我们安装了一个名为 awstats
的监控守护程序,它配置为期望存在这项服务。
ISPConfig 将根据需要调用 awstats
,因此它不需要依赖通常用于轮询服务器的 cron
作业。我们可以通过输入以下命令来删除它:
sudo rm /etc/cron.d/awstats
安装 ISPConfig
我们终于准备好安装实际的 ISPConfig 软件了。
我们可以通过将最新稳定版本下载到我们的服务器上来实现。截至目前,具有直接链接的最新稳定版本是版本 3。我们安装完所有内容后将更新安装。
现在,您应该切换到您的主目录并使用 wget
下载项目:
cd ~
wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
下载完成后,解压目录结构并进入提取的文件夹结构的 install
子目录:
tar xzvf ISPConfig*
cd ispconfig3_install/install/
现在,我们准备安装软件。通过输入以下命令来执行:
sudo php -q install.php
您将经历一个非常冗长的安装过程。
幸运的是,您实际上只需要输入您的 MySQL root 密码!对于其他每个条目,只需按下 “ENTER” 使用默认值并跳过。
安装完成后,通过输入以下命令来更新到最新版本:
sudo php -q update.php
同样,只需按下 “ENTER” 使用每个命令的默认值。
完成后,您可以通过在您的 Web 浏览器中访问您的域名后跟 :8080
来访问您的 ISPConfig 服务:
https://<span class="highlight">server_domain_name</span>:8080
由于我们使用自签名证书,您将收到 SSL 警告:
!ISPConfig SSL 警告
点击 “proceed” 或 “continue” 来接受证书。
您将被带到登录界面。
!ISPConfig 登录界面
默认用户名和密码都是 admin
:
用户名:admin
密码:admin
输入这些值,您将进入 ISPConfig3 界面:
!ISPConfig 主界面
一旦到达这里,您应该通过单击 “System” 按钮,然后在左侧导航菜单的 “User Management” 类别下单击 “CP Users” 链接来更改 admin
用户的密码。
在主窗口中点击 admin
用户帐户。您将在此页面上有更改管理员用户密码的选项。
结论
您现在应该已经安装和配置了 ISPConfig 面板。您应该能够从这个界面内管理域、邮件和帐户。
相关文章:
在 Ubuntu 14.04 服务器上安装 ISPConfig3 的方法
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 虽然命令行是一个强大的工具,可以让您在许多情况下快速轻松地工作,但在某些情况下,可视化界面…...

ELK学习笔记
ElasticStack分布式日志系统概述 Elasticsearch: 一个分布式搜索引擎,能够快速存储、搜索和分析大量数据。核心概念包括索引(Index)、文档(Document)和分片(Shard)。使用 RESTful API 进行数据操…...

Python+Selenium+Pytest+POM自动化测试框架封装详解
1、测试框架简介 1)测试框架的优点 代码复用率高,如果不使用框架的话,代码会显得很冗余。可以组装日志、报告、邮件等一些高级功能。提高元素等数据的可维护性,元素发生变化时,只需要更新一下配置文件。使用更灵活的…...

Hidden Marlov Model(HMM)
一、Model 1、将声学特征设为X,经过语音识别得到的tokens设为Y,目标是找到通过X得到Y的最大概率,可以通过概率公式改变为 分为两个概率 2、将tokens序列Y转化为states序列S,声学特征分得更细 3、从states到声学特征的过程 二、HM…...

mamba的安装及下载速度慢问题解决
同事反馈mamba的安装时网络慢 mamba是conda的加速工具,相比于conda 对包和环境的管理,mamba可以实现并行运算。相比于 conda,mamba 是用C重写了 conda 的部分功能,运行效率显著提高,可以进行并行的下载,使…...

【Linux入门】Linux环境搭建
目录 前言 一、发行版本 二、搭建Linux环境 1.Linux环境搭建方式 2.虚拟机安装Ubuntu 22.02.4 1)安装VMWare 2)下载镜像源 3)添加虚拟机 4)换源 5)安装VM Tools 6)添加快照 总结 前言 Linux是一款自由和开放…...
CPU缓存一致性机制详解
CPU缓存一致性机制详解 在多核处理器中,缓存一致性是保证系统正常运行的重要环节。本文详细介绍了缓存一致性协议、写入策略、总线嗅探、目录协议等相关概念,并通过示例代码解释了这些机制是如何在实际应用中工作的。通过学习本文,读者可以深…...

Android 12系统源码_屏幕设备(一)DisplayManagerService的启动
前言 DisplayManagerService是Android Framework中管理显示屏幕相关的模块,各种Display的连接、配置等,都是通过DMS和来管理控制。 在DMS模块中,对显示屏幕的描述分为物理显示屏(physical display)和逻辑显示屏(logical display),…...
《AI视频类工具之十——D-ID》
一.简介 官网:D-ID | The #1 Choice for AI Generated Video Creation Platform D-ID是一个人工智能生成的视频创建平台,可以轻松快速地从文本输入中创建高质量、高性价比和引人入胜的视频,背后的Al技术是由Stable Difusion和GPT.3提供支持,可以在没有任何技术知识的情况…...

【网络】局域网LAN、广域网WAN、TCP/IP协议、封装和分用
文章目录 局域网 LAN广域网 WAN网络中的重要概念IP 地址端口号 认识协议协议分层是什么OSI 七层网络模型TCP/IP 五层网络模型(或四层)物理层传输层网络层数据链表层应用层网络设备所在分层 封装和分用[站在发送方视角](封装)[站在…...
我司搜索中台的三次演变
本人从入职就开始负责我司的搜索中台了,总共是经历了三个大版本的迭代。 分别是: 基于阿里云智能开放搜索OpenSearch实现的第一代自研,开源canal(数据同步) 底层阿里云elasticsearch 对索引封装 实现的第二代自研&a…...

html+css+js网页设计 电商模版4个页面
htmlcssjs网页设计 电商模版4个页面 带js 网页作品代码简单,可使用任意HTML编辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 获取源码 1&…...

区块链技术在Facebook中的潜力:未来趋势与挑战
数据安全的新高度 区块链技术以其去中心化和不可篡改的特性,正在成为提升数据安全和隐私保护的重要工具。Facebook作为全球最大的社交媒体平台之一,正积极探索如何将区块链技术应用于其平台,以增强用户数据的安全性和隐私保护。Facebook在应…...

dockerfile自定义镜像
目录 概念 基于dockerfile创建 dockerfile的命令 构建容器 FROM ENTRYPOINT和CMD RUN COPY和ADD 工作目录和环境变量以及容器卷(挂载卷) EXPOSE 实战 概念 dockerfile就是自定义镜像,通过dockerfile创建的都是镜像,而…...

【工作状态】如何保持专注?
好的睡眠计划主题化 1、保持足够的睡眠,才能头脑清晰和有精力,工作不是纯拼体力,要用脑力的。 2、脑力主要工作放在午餐前,在脑力充足的时候使用脑力,下午五点后可以安排脑力活动较低的工作,比如听课读书。…...

欧科云链研究院对话:风浪越大鱼越贵—链上数据洞悉加密市场规律
作者 Hedy 出品 OKG Research “我们从来就不是理性人。但可以用最简单的工具——链上数据做‘最猛’的分析。” 在经历了超级宏观周之后,金融市场产生了巨大的震荡,加密市场的表现也越来越受到宏观经济因素的影响。欧科云链研究院OKG Research 集结多…...
SQLite库笔记:日期和时间函数
1. 函数概述 SQLite支持7个日期和时间函数,如下: 1 date(time-value, modifier, modifier, ...) 返回YYYY-MM-DD格式的日期 2 time(time-value, modifier, modifier, ...) 返回HH:MM:SS格式的时间 3 datetime(time-value, modifier, modifier, ...…...
Linux开发板运行报错/system/bin/sh: can‘t create /dev/leds: Permission denied
Linux开发板运行报错/system/bin/sh: cant create /dev/leds: Permission denied 1.问题解决 1.问题解决 /system/bin/sh: can’t create /dev/leds: Permission denied 在linux开发板下运行驱动报错没有权限,需要运行 su,同时也会停止打印 在运行: ch…...
月薪5W的项目经理是如何面试的?这份面试攻略请收好!
面试是项目经理求职必须经历的一关,但很多经验不够丰富的项目经理不知道面试会问些什么问题,也不知道要怎么回答,无疑会直接影响面试企业的判断,使项目经理求职受阳.所以,项目经理想要顺利求职,还是有必要掌…...

接口隔离原则
接口隔离原则 接口隔离原则就是客户端不应该依赖它不需要的接口,或者说类间的依赖关系应该建立在最小的接口上。 我们以搜索美女为例,设计了如下的类图: 源代码如下。美女及其实现类: 搜索程序及其子类源代码如下: 最…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...

2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...
tomcat指定使用的jdk版本
说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...