============
== 白菜 ==
============
一个勤奋的代码搬运工!

nginx 启用目录索引,显示文件列表

nginx

在nginx中,如果特定目录中没有index.html 文件,则默认会返回 404 Not Found 的错误。

但是,Nginx 自动索引模块—— ngx_http_autoindex_module 模块,提供了一种自动生成列表的方法,添加自动索引非常容易,使用 autoindex on 即可。下面的配置,将在访问特定请求时返回目录结构。

官方参考: http://nginx.org/en/docs/http/ngx_http_autoindex_module.html
    server {
            listen   80;
            ... ...
            
            location /index_dir {
            autoindex on;
            }
    }

除了简单地使用自动索引打开或关闭之外,还可以对其做其他的配置,包括:

    autoindex_exact_size; 显示输出的确切文件大小,还是最接近的KB,MB或GB。默认为on,显示出文件的确切大小,单位是bytes。改为off后,显示出文件的大概大小,单位是kB或者MB或者GB。
    autoindex_format; 该指令指定Nginx索引列表应以什么格式输出。该指令有4个选项:html/xml/json/jsonp。
    autoindex_localtime; 显示的文件时间为GMT时间。 注意:改为on后,显示的文件时间为文件的服务器时间。

使用这几个配置后配置内容类似于如下内容:

location /index_dir/ {
    root   /data/index_dir/;  
    autoindex on;
    autoindex_exact_size off;
    autoindex_format html;
    autoindex_localtime on;
}

如果有中文目录的话会出现乱码问题,所以还需要在下面添加这一句:

charset utf-8;

charset utf-8,gbk;

PostgresSQL 基本用法:新建数据库、用户、连接、备份/恢复数据库

postgres

系统环境: Debian 11

切换到超级用户:

    sudo su postgres

进入psql:

    psql

创建一个用户:

    CREATE USER username WITH PASSWORD 'password';

查看角色列表:

    \du

创建数据库并制定所有者和编码:

    CREATE DATABASE dbname WITH OWNER username ENCODING UTF8;

创建一个数据库:

    CREATE DATABASE dbname;

查看数据库列表:

    \l

更改刚创建的数据库所有权:

    ALTER DATABASE dbname OWNER TO username;

删除表字段

要删除一个字段,使用下面这样的命令:

    ALTER TABLE products DROP COLUMN description;

不管字段里有啥数据,都会消失,和这个字段相关的约束也会被删除。不过, 如果这个字段被另一个表的外键约束所引用,PostgreSQL 则不会隐含地删除该约束。你可以通过使用CASCADE指明删除任何依赖该字段的东西:

    ALTER TABLE products DROP COLUMN description CASCADE;

通过psql连接数据库

    psql -h 127.0.0.1 -p 5432 -U username -d dbname

备份数据库

    pg_dump dbname > dbname.dump

恢复数据库

    psql -f dbname.dump -d dbname

查看 Debian 系统版本的方式

debian

查看 Dibian 系统发行版本号的方式

1. 使用 lsb_release 命令

lsb_release 命令可用于查看 Linux 发行版操作系统的具体版本。它可能尚未安装在你的操作系统中,因此你需要先安装它。运行以下命令来安装 lsb_release:

    apt-get install lsb-release

安装完成之后,只需要输入下面的命令就可以查看到你当前系统的版本信息:

    lsb_release -a

你将看到类似下面的结果:

    No LSB modules are available.
    Distributor ID:	Debian
    Description:	Debian GNU/Linux 11 (bullseye)
    Release:	11
    Codename:	bullseye

以上运行结果说明当前使用的操作系统版本是 Debian 11.

2. 查看 /etc/issue 文件

第二种查看当前 Debian 版本的方法是查看位于 /etc 目录中的 issue 文件。你可以使用 cat 命令查看文件的内容,输入下面的命令:

    cat /etc/issue

你将看到类似下面的结果:

    Debian GNU/Linux 11 \n \l

3. 查看 /etc/os-release 文件

/etc/os-release 是一个包含操作系统标识数据的文件,它只能在运行 systemd 的最新 Debian 发行版上找到。同样可以使用 cat 命令查看该文件的内容,输入下面的命令:

Read more...

删除 Debian Gnome 所有默认安装的游戏

debian gnome games

我用以下命令删除Debian 11.5(带有gnome)中的所有预装游戏:

    sudo apt purge aisleriot gnome-sudoku gnome-nibbles ace-of-penguins gnomine gbrainy gnome-sushi gnome-taquin gnome-tetravex  gnome-robots gnome-chess lightsoff swell-foop quadrapassel tali gnome-mahjongg gnome-2048 iagno gnome-klotski five-or-more gnome-mines four-in-a-row hitori && sudo apt autoremove

如何关闭 Ubuntu 中的开放端口?

Ubuntu 命令行 netstat

如何关闭 Ubuntu 中的开放端口?

问题描述

列出所有打开的端口,以关闭一些应用程序的端口。

最佳办法

如果要关闭端口,则必须终止进程或停止相关服务。 可以使用 netstat -nalp 和 lsof -i:port 工具来识别打开端口后面的进程/二进制文件。

netstat 可用于查看端口统计信息。 要显示所有开放端口的列表:

sudo netstat -lnp

列出所有侦听端口号以及每个负责的进程。终止或终止进程以关闭端口。 ( kill , pkill …)

关闭一个打开的端口:

sudo fuser -k port_no/tcp

例子:

sudo fuser -k 8080/tcp

次佳办法

要在 ubuntu 中关闭开放端口,可以使用以下命令

sudo kill $(sudo lsof -t -i:3000)

代替 3000 你可以指定你的端口号

lsof 命令将提供有关进程打开的文件的信息

-t :此标志指定 lsof 应仅生成带有进程标识符且没有标头的简洁输出 – 例如,以便可以将输出通过管道传输到 kill(1)。此选项选择 -w 选项。

-i :此标志选择任何 Internet 地址与 i 中指定的地址匹配的文件列表。如果未指定地址,此选项将选择所有 Internet 和 x.25 (HP-UX) 网络文件的列表。

Read more...

解决 Firefox 访问weibo搜索或热搜提示 建立安全连接失败

firefox weibo

应用版本:firefox 开发者版 v101 问题描述:微博主页可以正常访问,但点击搜索或热搜链接,都提示:

    建立安全连接失败

    连接到 s.weibo.com 时发生错误。

        由于不能验证所收到的数据是否可信,无法显示您想要查看的页面。
        建议向此网站的管理员反馈这个问题。

    详细了解…

通过curl -v “网址” 反复重试对比发现在访问微博热搜的时候有一个加密协商被“微博账户认证网关服务器”拒绝了。

具体测试指令: 通过

    curl -v "https://s.weibo.com/weibo?q=%23%E7%A5%9D%E8%9E%8D%E5%8F%B7%E5%87%86%E5%A4%87%E5%9C%A8%E7%81%AB%E6%98%9F%E8%B6%8A%E5%86%AC%23&topic_ad="

得到302跳转请求链接 继续

    curl -v "https://passport.weibo.com/visitor/visitor?entry=miniblog&a=enter&url=https%3A%2F%2Fs.weibo.com%2Fweibo%3Fq%3D%2523%25E7%25A5%259D%25E8%259E%258D%25E5%258F%25B7%25E5%2587%2586%25E5%25A4%2587%25E5%259C%25A8%25E7%2581%25AB%25E6%2598%259F%25E8%25B6%258A%25E5%2586%25AC%2523%26topic_ad%3D&domain=.weibo.com&sudaref=&ua=php-sso_sdk_client-0.6.29&_rand=1651842429.1375"

返回

    ……
    * TLSv1.2 (IN), TLS handshake, Finished (20):
    * SSL connection using TLSv1.2 / AES256-GCM-SHA384
    * ALPN, server did not agree to a protocol
    * Server certificate:
    *  subject: C=CN; ST=Beijing; O=Sina.com Technology(China)Co.,ltd; CN=sina.com
    ……

注意这段提示:

    ALPN, server did not agree to a protocol

ALPN

ALPN(Application-Layer Protocol Negotiation):应用层协议协商是 TLS 的一个扩展,故而应用层协议在协商加密协议的过程中,避免了额外的往返通讯开销。 ALPN支持任意应用层协议的协商,目前应用最多是HTTP2的协商。当前主流浏览器,都只支持基于 HTTPS 部署的 HTTP/2,因为浏览器是基于ALPN协议来判断服务器是否支持HTTP2协议。

Read more...

上传公钥实现ssh登录

linux ssh-copy-id ssh

生成密钥和公钥

如果之前已经存在就不用重新生成了

$ ssh-keygen -t rsa

上传公钥

$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

其中root 服务器用户, 192.168.0.1 是服务器ip。之后按照提示输入密码即可

连接到服务器

直接使用ssh直接连接服务器,无需输入密码

在 Linux 命令行中使用的 6 个元字符

在 Linux 命令行上使用元字符是提高生产力的一个好方法。

许多 Linux 电脑是无头运行的,你可以在命令行上完成所有的管理任务。它使用许多所有人都熟悉的基本命令,如 ls、ls-l、ls-l、cd、pwd、top 等等。

Linux 上的 Shell 元字符

你可以通过使用元字符来扩展这些命令。

管道符 |

假设我想知道我的系统上运行的 Firefox 的所有实例。我可以使用带有 -ef 参数的 ps 命令来列出我系统上运行的所有程序实例。现在我想只看那些涉及 Firefox 的实例。我使用了我最喜欢的元字符之一,管道符 |,将其结果送到 grep,用它来搜索模式:

$ ps -ef | grep firefox

输出重定向 >

另一个我最喜欢的元字符是输出重定向 >。我用它来打印 dmesg 命令结果中所有 AMD 相关的结果。你可能会发现这在硬件故障排除中很有帮助:

$ dmesg | grep amd > amd.txt
$ cat amd.txt
[ 0.897] amd_uncore: 4 amd_df counters detected
[ 0.897] amd_uncore: 6 amd_l3 counters detected
[ 0.898] perf/amd_iommu: Detected AMD IOMMU #0 (2 banks, 4 counters/bank).

星号 *

星号 *(通配符)是寻找具有相同扩展名的文件时我的最爱,如 .jpg 或 .png。我首先进入我的系统中的 Picture 目录,并使用类似以下的命令:

Read more...

ubuntu上安装微信(wechat)

ubuntu wechat weixin

介绍

由于微信官网 https://weixin.qq.com/ 没有linux版本的下载和安装方法,但微信确实提供了优麒麟发行版的官方版本,所以就有了下面的安装方法。

安装方法

打开优麒麟应用商店官网,然后下载应用,就看到微信了 https://www.ubuntukylin.com/applications/106-cn.html 下载deb包,用命令sudo dpkg -i ,就能安装上了,而且可以用。 这是linux原生的,功能少点,但比wine的要轻巧不少。

安装方法2

下载链接在方法1中,优麒麟应用商店微信应用页面右键 “64位下载” ——> “复制链接” 终端下载Deb安装:

    wget  -O ~/weixin.deb "http://archive.ubuntukylin.com/software/pool/partner/weixin_2.1.1_amd64.deb"

    sudo dpkg -i ~/weixin.deb

Docker 运行 postgreSQL

Docker postgres

简单步骤

  1. 安装docker,可参考 安装docker及简单的使用 或 百度解决;

  2. 拉取postgreSQL的docker镜像文件:

    docker pull postgres
  1. 创建 docker volume,名字为“dv_pgdata"(其实可以省略手动创建,直接跑下一步,docker也会自动创建的):
    docker volume create dv_pgdata
  1. 启动容器,用-v来指定把postgres的数据目录映射到上面创建的dv_pgdata里面:
docker run --name my_postgres -v dv_pgdata:/var/lib/postgresql/data -e POSTGRES_PASSWORD=xxxxxx -p 5432:5432 -d postgres
  1. 这时候查看已存在的docker volume:
docker volume ls
  1. 查看volume信息:
cn2d6@navxin-desktop:~$ docker inspect dv_pgdata
  1. 在宿主机,也可以直接查看volume里的内容:
cn2d6@navxin-desktop:~$ cd /var/lib/docker/volumes/dv_pgdata/_data
cn2d6@navxin-desktop:~$ ll
  1. 查看postgresql:
cn2d6@navxin-desktop:~$docker exec -it 618 bash
root@618f1a4128ee:/# psql -U postgres -d postgres -p 5432 -h 127.0.0.1
  1. 更多的时候,我们希望能用图形界面来管理和操作数据库,可以部署pgadmin工具(例如下面),然后在浏览器中访问宿主机的5080端口,便能打开pgadmin。
docker pull dpage/pgadmin4
docker run --name pgadmin -p 5080:80 \
    -e '[email protected]' \
    -e 'PGADMIN_DEFAULT_PASSWORD=xxxxxx' \
    -e 'PGADMIN_CONFIG_ENHANCED_COOKIE_PROTECTION=True' \
    -e 'PGADMIN_CONFIG_LOGIN_BANNER="Authorised users only!"' \
    -e 'PGADMIN_CONFIG_CONSOLE_LOG_LEVEL=10' \
    -d dpage/pgadmin4

用docker-compose部署postgresql和pgAdmin4

准备步骤

安装docker-compose

Read more...
Previous Page 5 of 8 Next Page