首页
友链
Search
1
01-快捷命令
133 阅读
2
寒假计划
128 阅读
3
浏览器规范(ES module)和 node.js 规范(Common JS)
120 阅读
4
03-概念解析
119 阅读
5
学期计划(大三下学期)
102 阅读
计划
算法
面试题
运维
Ansible
Linux
数据库
neo4j
共用
web 前端
CSS
JavaScript
Vue
Node.js
英语单词
工程化
JAVA
mysql
收获
面试
mybatis
Spring
基础
spring-mvc
问题
项目
宠物乐园
速查
问题集
git
学习
sql
二阶段
登录
Search
标签搜索
spring
mysql
vue
ansible
CSS
面试
计划
收获
JAVA面试题
spring-mvc
Starrylsi
累计撰写
106
篇文章
累计收到
37
条评论
首页
栏目
计划
算法
面试题
运维
Ansible
Linux
数据库
neo4j
共用
web 前端
CSS
JavaScript
Vue
Node.js
英语单词
工程化
JAVA
mysql
收获
面试
mybatis
Spring
基础
spring-mvc
问题
项目
宠物乐园
速查
问题集
git
学习
sql
二阶段
页面
友链
搜索到
106
篇与
的结果
2024-10-09
2024.10.9_02-博客_理解nginx配置文件
title: 基于 Ubuntu 搭建 Typecho 博客articlePath: H:\wsl\ubuntu-myapp\文章了解 nginx 配置文件以及加载顺序/etc/nginx/nginx.conf/etc/nginx/sites-available/default/etc/nginx/conf.d/typecho.conf/etc/nginx/sites-enabled/nginx.conf这是 Nginx 的主配置文件,通常位于 /etc/nginx/nginx.conf。它包含了 Nginx 服务器的全局设置,比如用户权限、日志文件的位置、全局的指令和配置。nginx.conf 文件会引用其他配置文件和目录,如 sites-available 和 conf.d。default它包含了所有的网站配置文件,但这些文件本身不会直接被 Nginx 使用。为了让 Nginx 使用这些配置,需要在 sites-enabled 目录中创建对应的软链接。例如,如果你有一个名为 default 的配置文件在 sites-available 目录下,你需要创建一个软链接到 sites-enabled 目录,Nginx 才会加载这个配置。conf.d/..它用于存放额外的配置文件,这些文件通常会被 nginx.conf 文件引用。conf.d 目录中的文件通常包含特定功能的配置,比如负载均衡、SSL 配置、第三方模块的配置等。这些文件会被 nginx.conf 中的 include 指令包含,从而成为 Nginx 配置的一部分。sites-enabled:这是一个目录,通常位于 /etc/nginx/sites-enabled。它用于存放 sites-available 目录中配置文件的软链接。Nginx 会加载 sites-enabled 目录下所有的配置文件,因此,要启用一个网站,你只需将其配置文件的软链接放入此目录。配置文件的加载顺序Nginx 首先读取 nginx.conf 文件。然后,Nginx 会按照文件系统中的顺序读取 conf.d 目录中的配置文件。接着,Nginx 会读取 sites-enabled 目录中的所有软链接指向的配置文件(这些文件实际上是 sites-available 目录中的文件)。如何启用和禁用网站要启用一个新的网站配置,你可以在 sites-available 目录中创建一个新的配置文件,然后在 sites-enabled 目录中创建一个指向它的软链接。要禁用一个网站,你可以简单地删除 sites-enabled 目录中的软链接。测试配置在每次修改配置后,你应该使用 nginx -t 命令来测试配置文件的语法是否正确。如果测试通过,你可以安全地重新加载或重启 Nginx 服务来应用新的配置。配置好后的问题查看日志: /var/log/nginx/error.log2024/10/09 20:26:39 [error] 1245#1245: *12 connect() to unix:/run/php/php7.4-fpm.sock failed (111: Connection refused) while connecting to upstream, client: 172.17.144.1, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.4-fpm.sock:", host: "172.17.151.24"出现配置正确但是一直报错的情况,建议直接卸载重装
2024年10月09日
14 阅读
0 评论
0 点赞
2024-10-09
2024.10.9_01-博客_基于LInux搭建的Typecho博客
博客搭建期间可能会因为你的环境问题产生报错相信自己可以解决{mtitle title="WSL 准备发行版"/}1.安装 WSLwsl --install wsl --update wsl --list --online wsl --install -d Ubuntu-20.04 # wsl --install -d <Distribution Name> 2.目录迁移目的: 迁移到自定义目录wslwsl --export <Distribution Name> <FilePath> # wsl --export Ubuntu-20.04 H:\wsl\temp.tar wsl --import <Distribution Name> <InstallLocation> <FilePath> # wsl --import ubuntu-myapp H:\wsl\ubuntu-myapp H:\wsl\temp.tar3.注销发行版目的: 导出生成自己的版本后,可以删掉原发行版wsl -l # 查看需要注销的发行版,确定数据已备份或数据不使用 wsl --unregister Ubuntu-20.04{mtitle title="Linux 搭建博客"/}这里是 Docker 搭建:不建议方案Linux 搭建博客: 建议方案,空间占用小步骤 1: 安装必要软件wsl -d ubuntu-myapp # 进入子系统 apt update apt install nginx apt install mysql-server apt install php-fpm php-mysql php-xml php-mbstring php-zip 步骤 2:配置 Nginx 和 MySQL#1.配置 Nginx: sudo systemctl start nginx sudo systemctl enable nginx #2.配置 MySQL: sudo mysql_secure_installation #3.创建 Typecho 数据库和用户: sudo mysql -u root -p CREATE DATABASE typecho; CREATE USER 'typechouser'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON typecho.* TO 'typechouser'@'localhost'; FLUSH PRIVILEGES; EXIT;步骤 3:下载安装 Typecho#1. cd /var/www/html #2.下载 Typecho: wget https://github.com/typecho/typecho/archive/master.zip unzip master.zip mv /var/www/html/typecho-master /var/www/html/typecho #3.设置权限 sudo chown -R www-data:www-data /var/www/html/typecho sudo chmod -R 755 /var/www/html/typecho步骤 4: 配置 Nginx 以支持 Typecho#1.创建Nginx配置文件 -- 自动链接 sudo nano /etc/nginx/conf.d/typecho.conf #2.添加配置 server { listen 80; server_name localhost; # 替换为你的域名或 IP 地址 root /var/www/html/typecho; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # 根据你的 PHP 版本调整 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { deny all; } } #3.检查 Nginx 配置 sudo nginx -t #5.重启 Nginx: sudo systemctl restart nginx步骤 5:完成 Typecho 安装#1.访问安装向导: 在浏览器中访问 http://your-server-ip/typecho-master/install.php,将 your-server-ip 替换为你的服务器 IP 地址或域名。 #2.按照安装向导步骤操作: 选择语言。 配置数据库信息(数据库服务器、用户名、密码、数据库名)。 设置博客配置(网站标题、管理员用户名、密码等)。 #3.完成安装: 按照屏幕上的指示完成安装过程。步骤 6: 配置域名(可选)#1.编辑 Nginx 网站配置文件: sudo nano /etc/nginx/sites-available/typecho ## 找到 server_name 指令,将 your-domain.com 替换为你的域名 #2.重启 Nginx: sudo systemctl restart nginx问题不使用 default 默认配置,使用/nginx/conf.d 下的配置文件cd /etc/nginx/sites-enabled cp default default.bak rm default # 注释掉/etc/nginx/nginx.conf 中的 #include /etc/nginx/sites-enabled/*; nginx -t systemctl restart nginx最关键的点了解每个文件配置什么重启 php 服务sudo systemctl restart php7.4-fpm
2024年10月09日
8 阅读
0 评论
0 点赞
2024-10-09
2024-10-9_WSL配置
title: WSL适用于Windos的linux子系统WSL优点原生 Linux 环境:WSL 允许在 Windows 系统上运行原生的 Linux 发行版,如 Ubuntu、Debian 等。这意味着你可以在 Windows 上使用 Linux 的命令行工具和应用程序,而无需使用虚拟机或双启动系统。无缝集成:WSL 与 Windows 系统紧密集成,可以直接访问 Windows 文件系统中的文件。这意味着你可以在 WSL 中轻松地访问和操作 Windows 文件,以及在 Windows 和 Linux 之间共享文件。开发环境一致性:如果你是在 Linux 上进行开发的,使用 WSL 可以在 Windows 上获得与 Linux 相同的开发环境。这样可以避免在不同操作系统之间切换时出现的兼容性问题,并且可以更轻松地与其他 Linux 开发者进行协作。轻量级:相比于虚拟机,WSL 是一种轻量级的解决方案。它不需要额外的硬件资源,且启动和运行速度较快。易于安装和配置:WSL 是作为 Windows 10 的一部分提供的,因此安装和配置过程相对简单。只需在 Windows 设置中启用 WSL 功能,并从 Microsoft Store 中下载所需的 Linux 发行版即可。wsl 仅仅是可以运行 linux 中的二进制文件,不能操作 linux 的内核,所以不能用于 openstack 的开发.先决条件必须运行 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11 才能使用以下命令.安装 WSL 命令在 Windows 10 或者 Windows 11 中,使用管理员打开 Powershell,然后执行下面的命令就可以开启 WSL 并安装 Ubuntu 作为默认的 WSL 发行版wsl --install wsl --update查询可用的发行版wsl --list --online安装一个发行版wsl --install -d <Distribution Name>注意,默认安装 WSL 2。如果你很早以前就安装过 WSL 1,可以执行 wsl --set-version <distro> 2命令把默认版本替换为 2主要命令进入 wslwsl检查状态wsl --status检查版本wsl --version以特定的用户身份进入wsl -u <Username>, wsl --user <Username>导入导出wsl --export <Distribution Name> <FileName>wsl --import <Distribution Name> <InstallLocation> <FileName>将已安装的 Linux 发行版导出为 tar 文件,或者将 tar 文件导入为新的发行版。这两条命令常用的场景为:当某个项目需要根据使用说明手册的步骤在 Windwos 系统安装 Linux 子系统,并需要在 Linux 子系统中安装其他软件或配置功能时(比如 linux adb),如果其他人已经在自己的电脑中安装好了一切。那么可以让他把已安装的发行版导出为 tar 文件,我只需要把这个 tar 文件导入即可,实现一键 copy 对方的系统和环境参考网址WSL 网址
2024年10月09日
16 阅读
0 评论
0 点赞
2024-10-03
2024-10-03_多线程
填空处于运行状态的线程在某些情况下,如执行了sleep(睡眠)方法,或等待I/O设备等资源,将让出CPU并暂时停止自己的运行,进入_________状态。处于新建状态的线程被启动后,将进入线程队列排队等待CPU,此时它已具备了运行条件,一旦轮到享用CPU资源就可以获得执行机会。上述线程是处于 状态。一个正在执行的线程可能被人为地中断,让出CPU的使用权,暂时中止自己的执行,进入 状态。在Java中编写实现多线程应用有两种途径:一种是继承Thread类创建线程,另一种是实现 接口创建线程。在线程控制中,可以调用______________方法,阻塞当前正在执行的线程,等插队线程执行完后后再执行阻塞线程。多线程访问某个共享资源可能出现线程安全问题,此时可以使用________________关键字来实现线程同步,从而避免安全问题出现,但会影响性能,甚至出现死锁。在线程通信中,调用wait( )可以是当前线程处于等待状态,而为了唤醒一个等待的线程,需要调用的方法是______________。在线程通信中,可以调用wait()、notify()、notifyAll()三个方法实现线程通信,这三个方法都是______________类提供的public方法,所以任何类都具有这三个方法。
2024年10月03日
11 阅读
0 评论
0 点赞
2024-10-03
2024-10-03_IO流实践
文件复制可以使用封装好的 files.copy(),也可以使用原生的需求 3: 分别使用文件流和缓冲流复制一个长度大于 100MB 的视频文件,并观察效率的差异。问题: 不知道在文件复制时先使用哪一个关键: 输入流就是在读取数据,输出流就是在写数据理解清楚两个概念:输入流是 Java 中用于从不同数据源读取数据的流输出流是 Java 中用于将数据写入不同目的地的流使用文件流复制为什么需要这两段代码?第一段代码设置了文件读取和写入的“通道”。第二段代码实现了文件内容的实际复制。 String sourceFile = "H:\\My_Life_Archive\\Entertainment-娱乐\\VID_20210916_082147.mp4"; String destFile = "H:\\My_Life_Archive\\Entertainment-娱乐\\outputVideo.mp4"; // 使用文件流复制文件 long startTime = System.currentTimeMillis(); // 第一段:创建输入输出流对象 try (FileInputStream readVideo = new FileInputStream(sourceFile); FileOutputStream writeVideo = new FileOutputStream(destFile)) { //第二段:读取和写入数据 int byteData; while ((byteData = readVideo.read()) != -1) { writeVideo.write(byteData); } } catch (IOException e) { e.printStackTrace(); } long endTime = System.currentTimeMillis(); System.out.println("文件流复制耗时:" + (endTime - startTime) + "ms");使用缓冲流复制创建通道设置缓冲数组大小判断是否文件末尾写入数据关闭流String sourceFile = "H:\\My_Life_Archive\\Entertainment-娱乐\\VID_20210916_082147.mp4"; String destFile = "H:\\My_Life_Archive\\Entertainment-娱乐\\outputVideo.mp4"; long startTime = System.currentTimeMillis(); //1.创建通道 try { BufferedInputStream bufferedReadVideo = new BufferedInputStream(new FileInputStream(sourceFile)); BufferedOutputStream bufferedWriteVideo = new BufferedOutputStream(new FileOutputStream(destFile)); //2.复制内容 byte[] buffer = new byte[1024*1024]; int bytesRead; while ((bytesRead = bufferedReadVideo.read(buffer)) != -1) { bufferedWriteVideo.write(buffer, 0, bytesRead); } bufferedWriteVideo.flush(); } catch (IOException e) { e.printStackTrace(); } long endTime = System.currentTimeMillis(); System.out.println("文件流复制耗时:" + (endTime - startTime) + "ms");需求 4: 复制文件夹 d:/java 下面所有文件和子文件夹内容到 d:/java2。前置知识listFiles() 方法被调用以获取目录下的所有文件和子目录。使用 java.nio.file.Files.copy() 方法来复制一个文件。这里使用了两个 toPath() 方法将 java.io.File 对象转换成 java.nio.file.Path 对象,以便于使用 Files.copy() 方法进行文件复制代码实现/** * 复制一个目录及其内容到另一个位置。 * * @param src 源目录 * @param dest 目标目录 */ private static void copyFolder(File src, File dest) { // checks if(src==null || dest==null) return; if(!src.isDirectory()) return; if(dest.exists()){ if(!dest.isDirectory()){ //System.out.println("destination not a folder " + dest); return; } } else { dest.mkdir(); } File[] files = src.listFiles(); if(files==null || files.length==0) return; for(File file: files){ File fileDest = new File(dest, file.getName()); //System.out.println(fileDest.getAbsolutePath()); if(file.isDirectory()){ copyFolder(file, fileDest); }else{ if(fileDest.exists()) continue; try { Files.copy(file.toPath(), fileDest.toPath()); } catch (IOException e) { //e.printStackTrace(); } } } } 我总结的关键步骤(符合我编写的步骤)第一步: 把复制文件的逻辑编写好获取文件列表循环列表初始化目标文件对象判断是否为目录,是就回调本身,不是就复制第二步: 考虑结束递归的条件确保传入的 src 和 dest 参数都是有效的(非 null)。确保 src 是一个目录。确保 dest 要么是一个已存在的目录,要么是一个可以成功创建的新目录。AI 总结的整体步骤参数检查:if (src == null || dest == null):确保源目录和目标目录都不为 null。 if (!src.isDirectory()):确保源目录确实是一个目录。 if (dest.exists()):检查目标目录是否已经存在。 如果存在且不是一个目录,则直接返回。 如果不存在,则尝试创建目录获取目录内容:File[] files = src.listFiles();:获取源目录下的所有文件和子目录。遍历目录内容:for (File file : files):遍历目录下的所有文件和子目录。 如果遇到子目录,则递归调用 copyFolder 方法继续复制。 如果遇到普通文件,则检查目标文件是否已存在。 如果已存在,则跳过复制。 如果不存在,则使用 Files.copy 方法复制文件,并使用 REPLACE_EXISTING 选项确保如果目标文件存在则被替换。
2024年10月03日
10 阅读
0 评论
0 点赞
1
2
...
22