ngnix实现共享文件

ngnix实现共享文件

乱码解决

1
2
server和loaction层都加上
charset utf-8

配置 Nginx

1
sudo vi /etc/nginx/sites-enabled/default

验证配置

1
2
3
sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

这样测试说明 nginx 配置是正确的。

重启启动 nginx 服务

1
sudo service nginx restart

权限问题

要求权限是755才能正常访问

1
chmod -R 755 xmal/

openvpn

openvpn

下载

1
wget -O openvpn.sh https://get.vpnsetup.net/ovpn

安装

1
sudo bash openvpn.sh --auto

启动

1
sudo bash openvpn.sh

system初始化问题

System has not been booted with systemd as init system (PID 1). Can’t operate.
Failed to connect to bus: Host is down

翻译过来就是:“系统尚未以systemd作为初始系统启动”。

问题分析:

1)当你尝试使用 systemd 命令来管理 Linux 系统上的服务的时候,之所以会报错,可能因为系统中根本就没有使用 systemd,而是使用的 SysV init (sysvinit)。

2)如果你是在 windows 中通过 WSL 使用的 Ubuntu 或者 Dibian 系统,默认情况下系统使用的是 SysV 而不是 systemd。

windows安装python2环境

windows安装python2环境

image-20240918205426825

安装在D盘后,不用管最后这个,之后配置环境变量

image-20240918205806490

image-20240918210154534

把这两个目录添加到环境变量,之后再修改文件夹中python.exe为python2.exe

wsl2安装启动mysql

wsl2安装启动mysql

启动

1
sudo /etc/init.d/mysql start

配置文件

1
sudo cat /etc/mysql/debian.cnf

用户名密码就在这

1
2
3
[client]
host = localhost

复制到用户名文件夹可以免输入用户名密码

1
sudo cp /etc/mysql/debian.cnf .my.cnf

要改变文件的所有者为用户

1
sudo chown cgz .my.cnf

遇到报错

1
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

问题就是没启动

运行上面的启动命令就行

1
root 的密码: 123456
1
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
1
CREATE USER 'mufeng'@'%' IDENTIFIED BY '123456';

wsl的代理如何与主机共享

wsl的代理如何与主机共享

需要拉取docker镜像,但是curl无效

设置配置文件.wslconfig后仍然ping不通

ping,ping的是ip,用的是icmp协议,在osi七层模型中用的是第三层(网络层)

其实是curl google.com

直接得到的就是

1
2
3
4
5
6
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>

用浏览器访问一下就知道了

1
curl https://www.google.com.hk/  

这个才是正确的

在使用wsl时,突然不能用code打开vscode

在使用wsl时,突然不能用code打开vscode

加一行配置环境变量可以解决

1
export PATH="$PATH:/mnt/c/Users/86147/AppData/Local/Programs/Microsoft VS Code/bin"

但是不够优雅

/etc/wsl.conf 中明确追加 PATH 配置

1
2
[interop]
appendWindowsPath = true

设置完以上方法后,发现还是一样因为本来就默认共享环境变量

发现vscode文件路径名称有空格

wsl执行

1
echo $PATH

出现

1
/mnt/c/Users/86147/AppData/Local/Programs/Microsoft:VS:Code/bin

空格被识别成分割

所以可能是更新后路径名出现了这个bug导致无法正常识别环境变量

解决方案是用短路径

Windows 文件系统有短路径名(8.3 格式)支持,通常无空格,可以兼容在 WSL 和 Windows 下使用。你可以先找到短路径名,然后将其添加到环境变量中。

  1. 获取短路径名: 打开 Windows 命令提示符(cmd),输入以下命令以获取 Microsoft VS Code 文件夹的短路径名:

    1
    2
    3
    cmd

    dir "C:\Users\86147\AppData\Local\Programs\" /x

    你可能会看到一行输出类似:

    1
    03/12/2024  09:00 AM    <DIR>          MICRO~1    Microsoft VS Code

    MICRO~1 就是此文件夹的短路径名。用这个名字可以避免空格问题。

  2. 将短路径名添加到 PATH: 在 Windows 的环境变量设置中,将 VS Code 的路径设置为短路径格式。例如,将路径设置为:

    1
    C:\Users\86147\AppData\Local\Programs\MICRO~1\bin

    在 WSL 中,这个路径会自动被映射到 /mnt/c/Users/86147/AppData/Local/Programs/MICRO~1/bin,WSL 能正确解析。

安装虚拟python环境,采用轻量化的方案

安装虚拟python环境,采用轻量化的方案

创建一个轻量化的 Python 虚拟环境可以通过 venvvirtualenv 实现。这里我将介绍使用 venv 的方法,因为它是 Python 自带的模块,并且通常更简单。以下步骤适用于基于 Debian 的 Linux 发行版(例如 Ubuntu 和 WSL 的 Ubuntu 版本)。

1. 安装 Python 和 venv

确保你安装了 Python 和 venv 模块。在大多数情况下,Python 会默认包含 venv 模块,但你可以通过以下命令确认:

1
2
sudo apt update
sudo apt install python3 python3-venv

2. 创建虚拟环境

选择一个目录来存放你的虚拟环境,例如在你的项目文件夹中。

1
2
cd /path/to/your/project
python3 -m venv myenv

myenv 替换为你希望给虚拟环境起的名字。

3. 激活虚拟环境

激活虚拟环境,以便你在这个环境中安装的任何 Python 包都不会影响系统的全局 Python 设置。

1
source myenv/bin/activate

当虚拟环境激活后,你的命令行提示符通常会显示环境名称,例如 (myenv)

4. 安装所需的包

在激活的虚拟环境中,你可以使用 pip 安装任何你需要的 Python 包。例如,安装 requests 库:

1
pip install requests

5. 清理不必要的包

如果你希望保持环境轻量化,可以在使用完后移除不再需要的包。可以使用以下命令检查已安装的包:

1
pip list

并使用以下命令卸载不需要的包:

1
pip uninstall package_name

6. 退出虚拟环境

完成工作后,可以通过以下命令退出虚拟环境:

1
deactivate

总结

通过以上步骤,你可以创建一个轻量化的 Python 虚拟环境,并在其中安装所需的包。venv 提供了一个相对简单的方式来管理项目所需的依赖,同时保持系统 Python 环境的干净。在项目开发和测试中使用虚拟环境是良好的实践。

清理wsl磁盘空间

清理wsl磁盘空间

先以管理员身份运行powershell

1
diskpart

查看wsl发行版本

1
wsl -l  -v
1
2
3
4
 NAME              STATE           VERSION

* Ubuntu-22.04 Stopped 2
docker-desktop Stopped 2

查找 Linux 发行版的 .vhdx 文件和目录路径,

请打开 PowerShell 并使用以下脚本,将 <distribution-name> 替换为实际的发行版名称:

1
(Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | Where-Object { $_.GetValue("DistributionName") -eq '<Ubuntu-22.04>' }).GetValue("BasePath") + "\ext4.vhdx"

结果将显示类似于 %LOCALAPPDATA%\Packages\<PackageFamilyName>\LocalState\<disk>.vhdx 的路径。 例如:

1
C:\Users\86147\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx

这是与你列出的 Linux 发行版关联的 ext4.vhdx 文件的路径。

先关掉

1
wsl --shutdown

压缩磁盘文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//4-3 依次输入下列命令
//选择目标磁盘文件
diskpart

select vdisk file="C:\Users\86147\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx"
//以只读模式连接虚拟磁盘文件
attach vdisk readonly

//开始压缩虚拟磁盘文件
compact vdisk

//分离虚拟磁盘文件
detach vdisk

//退出diskpart工具
exit

显示与此虚拟磁盘关联的详细信息,包括虚拟大小,表示当前分配给 VHD 的大小上限

1
detail vdisk

扩展空间

如何管理 WSL 磁盘空间 | Microsoft Learn

清理docker

Windows WSL2 占用磁盘空间清理释放_wsl占用空间太大-CSDN博客

1
2
3
4
5
6
7
8
9
docker system prune
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all dangling images
- unused build cache

Are you sure you want to continue? [y/N] y
Total reclaimed space: 0B