配置万千

配置万千

🤔 配置新系统

1. 用户相关

# 1. 修改 root 密码
sudo passwd

# 2. 创建新用户(adduser有交互;用useradd没有)
su root
## 2.1 用useradd
useradd newuser
passwd newuser
useradd -d /home/newuser newuser
## 2.2 用adduser
adduser shuaikai

# 3. 设置 sudo 权限
## 3.1 更改文件
sudo vim /etc/sudoers
shuaikai ALL=(ALL:ALL) NOPASSWD: ALL

# 4. 更改名字
sudo vim /etc/hostname

2. 网络相关

2.1 ssh
# 初始化rsa密钥
ssh-keygen -t rsa	# 三次回车(创建私钥,公钥)
# hostname自然是你想去登录的,别的主机名
ssh-copy-id hostname

# 取消哈希已知hosts,不然后面删除的时候认不出来了
sudo vim /etc/ssh/ssh_config
- HashKnownHosts no

# 如果出现 Permission denied (publickey) 记得检查这两项,取消其注释!
sudo vim /etc/ssh/sshd_config
- PubkeyAuthentication yes
- PasswordAuthentication yes
# 重启sshd服务
sudo systemctl stop sshd
sudo systemctl start sshd
sudo systemctl status sshd

🐱 系统配置

1 网络

1.1 防火墙与 iptables
# 备份 iptables
iptables-save > /etc/iptables.rules
# 恢复
iptables-restore  < /etc/iptables.rules

🐂 其它备忘

1. wsl-gdb 修改

WSL 中的gdb不能用,对其进行一定的修改:参考这里,以及这里

首先定位到 wsl 中 gdb的位置(我这时 gdb 版本是 12.1),然后 explorer.exe . ,将 gdb 复制出来

然后利用反汇编工具 IDA 打开 wsl 的gdb,用Search-for-text (左上角一个小望远镜带个T) 搜索 linux_proc_xfer_memory_partial,看它的 function 地址

然后定位到 function 地址查看这函数的汇编码

前面一堆堆栈处理不用管,找一条指令叫 cmp esi 1,然后jz short loc_xxxxxx,即发现内存不存在就跳转到错误处理去了。记住 jz 指令的地址:0xXXX

回到 WSL,运行:(注意用你上面的地址替换掉XXX部分)

echo -ne '\x90\x90' | sudo dd of=/usr/bin/gdb seek=$((0xXXX)) bs=1 count=2 conv=notrunc

然后运行 gdb 打断点调试一个你的文件,跟着走即可正常运行。

让上面的设置永久生效只需:

vim .gdbinit
# 写入:set debuginfod enabled on

2. 各种换源

2.1 ubuntu 换源

源就在 /etc/apt/sources.list 文件里面写着。备份一下,重写文件,然后 sudo apt update 就好了

  • 不同 ubuntu 版本之间,区别就在一个小动物上(就是默认桌面的壁纸),改个名字就好了

    1. Ubuntu 22.04:jammy

    2. Ubuntu 20.04:focal

    3. Ubuntu 18.04:bionic

    4. Ubuntu 16.04:xenial

  • 默认注释了代码源以提高速度,注释了预发布软件源(可能不稳定),如有需要可以取消注释。

  • 建议将所有常用镜像源保存在/etc/apt/目录下,并命名为类似source.list.aliyun的形式,需要使用时直接复制替换source.list文件即可。(国内镜像源)

# 中科大源
deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
## Pre-released source, not recommended.
# deb https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
2.2 pip 换源
# USTC
pip config set global.index-url https://pypi.mirrors.ustc.edu.cn/simple/

# 阿里云 https://mirrors.aliyun.com/pypi/simple/
# 科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
# 豆瓣(douban) https://pypi.douban.com/simple/
# 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
# 中国科学技术大学 https://pypi.mirrors.ustc.edu.cn/simple/
2.3 npm 换源
npm config get registry # 查看当前源地址
# 临时使用
npm install [xxx] --registry https://registry.npm.taobao.org
# 永久更换
npm config set registry https://registry.npm.taobao.org # 淘宝
npm config set registry https://mirrors.huaweicloud.com/repository/npm # 华为

3. 云服务器

3.1 安全组
  • 放通端口的时候注意,看你更改的是安全组,还是实例的防火墙(轻量应用服务器)。这俩是不一样的,别对着安全组一顿放通,结果发现实例没关联上安全组
3.2 对象存储

🐶糊口家伙儿

1 vscode

  • code-runner:在 settings.json 中,可以在当前工作目录下重写一部分,比如对 C++ 文件,单独指定编译命令 -lpthread -lhiredis -D _DEBUG 等等 。可以通过 ctrl p 打开设置然后搜索 code runner 找到

2 redis

使用docker操作redis

2.1 安装
# 只有这一个版本,就是最新的,不用点进去看了
wget http://download.redis.io/redis-stable.tar.gz && tar xzf redis-stable.tar.gz
cd redis-stable
make -j4
make test # 电脑可能会很吵,不知道它受不受得鸟。一般情况下是不用test的
sudo make install # 把可执行文件拷贝到 /usr/local/bin 目录下
2.2 运行
# 启动服务,可以选择加上你的配置文件
redis-server [{directory}/redis.conf]
# 停止服务
redis-cli shutdown

# 启动命令行
redis-cli -h [hostname] -p [port] -a [passwd]
# 可以 --no-auth-warning,或者不加 -a,进去之后写密码
auth [passwd]

# 修改设置
CONFIG SET/GET loglevel warning
CONFIG SET requirepass ''
2.3 配置

(1)配置文件:

初始在redis-stable/redis.conf(rw-rw-r–664),可以给它拷贝到~/.redis/,然后修改的有:

daemonize yes		# 以守护进程形式启动
port 6379			# 端口号,默认是 6379
appendonly yes		# 打开 AOF 持久化(默认RDB也是打开的)
dir     {~/.redis/6379}		 # 放置持久化文件的位置   rwxrwxr-x 775
logfile {.redis/redis.log}	 # 日志文件			    rw-rw-rw- 666
# 允许远程lian'jie
bind 0.0.0.0		# 任意主机连接
protected-mode no	 # 关闭保护模式

(2)设置开机自启

初始有一个脚本:redis-stable/utils/redis_init_script,把它放到 /etc/init.d/ 目录下,而后

# 先备份一下,别等下删了 cp ./utils/redis_init_script ~/.redis/
sudo cp ./utils/redis_init_script /etc/init.d/
# chmod 774 /etc/init.d/redis_init_script
sudo update-rc.d redis_init_script defaults

(3)常见错误

  1. (error) ERR Errors trying to SHUTDOWN. Check logs

    • 主要检查:持久化文件路径和日志文件路径的权限,最起码当前用户要有读写权限。特别是设置在系统目录的时候。(如果设置在etc var等目录,除非把这些目录设为可写,不然好像一直退出不了,所以我建议在home路径下设置这两个)
  2. Could not connect to Redis at 127.0.0.1:6379: Connection refused

    • 笨蛋,快看看是不是已经停止掉redis服务了,还想着 redis-cli shutdown 呢?😄
  3. 不能远程连接

2.4 使用
python 连接

pip install redis

import redis
r = redis.StrictRedis(host='127.0.0.1', port=6379, db=0)
r.set('foo', 'bar')  # True
r.get('foo') 		# 'bar'
# 哈希表
r.hmset('dict', {'name': 'Bob'})
people = r.hgetall('dict')
print people # {'name': 'Bob'}
# 事务与管道
pipe = r.pipeline()
pipe.set('foo', 'bar')
pipe.get('foo')
result = pipe.execute()
print result # [True, 'bar']
# 管道
pipe = r.pipeline(transaction=False)
result = r.pipeline().set('foo', 'bar').get('foo').execute()
# [True, 'bar']
C++ 连接

hredis

git clone https://github.com/redis/hiredis
cd hiredis
make -j4
sudo make install                #仍然是复制可执行文件
sudo ldconfig /usr/local/lib	# 更新链接库缓存
g++ redis.cc -lhiredis -o myredisclient # 记得指定库文件
/* 示例代码
#include <hiredis/hiredis.h> 
redisConnect(...);
redisCommand(...);
*/
#include <iostream>
#include <hiredis/hiredis.h>

const char *AUTH_KEYS = "shuaikaisredis";

int main()
{
    // 连接到 Redis 服务器
    redisContext *c = redisConnect("43.139.137.123", 6379);
    if (c->err)
    {
        std::cout << "连接失败: " << c->errstr << std::endl;
        return -1;
    }
    std::cout << "连接成功" << std::endl;

    // 使用密码进行身份验证
    redisReply *reply = (redisReply *)redisCommand(c, "AUTH %s", AUTH_KEYS);
    if (reply->type == REDIS_REPLY_ERROR)
    {
        std::cout << "身份验证失败: " << reply->str << std::endl;
        freeReplyObject(reply);
        redisFree(c);
        return -1;
    }
    std::cout << "身份验证成功" << std::endl;
    freeReplyObject(reply);

    // 列出所有的键值
    reply = (redisReply *)redisCommand(c, "KEYS *");
    if (reply->type == REDIS_REPLY_ARRAY)
    {
        for (int i = 0; i < reply->elements; i++)
        {
            std::cout << "key: " << reply->element[i]->str << std::endl;
        }
    }
    freeReplyObject(reply);

    // 获取某一键的值
    const char *key2get = "name";
    reply = (redisReply *)redisCommand(c, "GET %s", key2get);
    if (reply->type == REDIS_REPLY_STRING)
    {
        printf("%s: %s\n", key2get, reply->str);
    }
    else
    {
        printf("There is NO %s EXITS!\n", key2get);
    }
    freeReplyObject(reply);

    // 设置一个新的键值对
    const char *key1 = "editor";
    const char *value1 = "vscode";
    reply = (redisReply *)redisCommand(c, "SET %s %s", key1, value1);
    std::cout << "RESULT: " << reply->str << std::endl;
    freeReplyObject(reply);

    // 断开连接
    redisFree(c);

    return 0;
}

3 docker

Docker — 从入门到实践 Docker容器使用 | 菜鸟教程

3.1 安装

官方脚本快速安装

# 安装
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun
# 启动
sudo systemctl enable docker
sudo systemctl start docker
# 创建用户组并添加当前用户,否则可能会 Permission Deny
sudo groupadd docker
sudo usermod -aG docker [shuaikai]
# 配置镜像加速
sudo vim /etc/docker/daemon.json
# 写入如下配置
{
  "registry-mirrors": [
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com"
  ]
}
# 重启服务,并查看是否配置成功
sudo systemctl daemon-reload
sudo systemctl restart docker
docker info | tail -5
# 如果这里显示权限不够:
## 首先检查一下你的用户是否在docker用户组中
groups
gropus [shuaikai]
## 如果两条命令显示不一致(后者显示你已经在docker组里面了),则需要退出重连一下
3.2 常用指令
# 列出所有镜像
docker images
# 列出所有的容器
docker container ls -a
docker ps -a

# pull 下载镜像
## docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
docker pull ubuntu:18.04
# 从镜像创建一个容器并运行
docker run -it --rm --hostname {hostname} ubuntu:18.04 bash
## -i 交互操作; -t 终端;  --rm 容器退出之后将其删除; ubuntu:18.04 启动容器的基础镜像
## bash 启动容器后运行的命令,因为是想要一个终端

# 启动一个停止的容器
docker start [id/name]
docker attach [id/name]
# 进入一个容器,且exit不会导致容器退出的方法
docker exec -it [kkdocker01] bash
# 删除一个/所有已终止的容器
docker rm [id/name]
docker container prune
# 向容器传递内容
docker cp {local_path} <dockerid>:{docker_path}

# 查看整个docker占用的磁盘空间详细信息
docker system df -v

# 网络:映射本地端口到docker的端口,从而实现外部访问docker
# 导入导出:将容器打包成tar文件导出,也可从别的方式导入容器
3.3 docker - redis
docker run -p 6379:6379 --name redis1 -v /opt/docker_redis/redis.conf:/etc/redis/redis.conf -v /opt/docker_redis/data:/data -d redis  redis-server /etc/redis/redis.conf --appendonly yes --requirepass 123456
# 命令说明                                                                                 # -p 6379:6379 端口映射:前面表示主机的端口,后面表示容器的端口。
# --name redis01 指定该容器名称,查看和进行操作都比较方便。
# -v 挂载文件或目录 :前表示主机部分,:后表示容器部分。
# -d redis 表示后台启动redis
# redis-server /etc/redis/redis.conf 以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录/usr/local/docker/redis.conf
# --appendonly yes  开启redis 持久化
# --requirepass 123456 设置密码为123456
#
# 进入: docker exec -it redis /bin/bash
# redis-cli -p 6379
# 获取密码:config get requirepass
# 输入密码: auth 123456

🏇 消遣玩意儿

1 wox

插件:

  • [][Plugin Detail (wox.one)]directory,查词翻译,!t, !d, !e
  • 自带的一些,比如查文件夹,查书签,显示十六进制颜色,进制转换等
  • 可以是everything的关键词查找,如果采用glob匹配,则注意匹配全名

2 typora

🐞 Typora 1.4.8

(1) 设置自动上传阿里云图床

图片 ⇒ \Rarr 上传服务设定:选择 PicGo-Core(command line),没下载的记得下载。使用方法参考 Upload Images - Typora Support PicGo-Core

然后申请你的阿里☁️腾讯云这云那云的,更新配置文件(在 C:\Users\[username]\.picgo\):

{
  "picBed": {
    "uploader": "aliyun", // 指定当前默认的图床为 aliyun,
    "aliyun": {
      "accessKeyId": "", //创建用户时生成的accessKeyId,替换为自己的
      "accessKeySecret": "", //创建用户时生成的accessKeySecret,替换为自己的
      "bucket": "shuaikai-bucket0001", // 存储空间名,也就是我们创建的Bucket的名字
      "area": "oss-cn-shanghai", // 存储区域代号,课通过bucket概览查看,替换为自己的
      "path": "blog_img/", // 自定义存储路径,一定要以"/"结尾!,根据自己需求修改
      "customUrl": "", // 自定义域名,注意要加http://或者https:// ,根据自己实际情况修改
      "options": "" // 针对图片的一些后缀处理参数 PicGo 2.2.0+ PicGo-Core 1.4.0+ 不用修改
    }
  },
  "picgoPlugins": {}
}

(2) CSS已经备份,🤔 等待上传云上

3 sharpkeys

  • 映射按键,下载解压版的就够了

4 snipaste

  • Alt + S 截图, Alt + Z 贴图, Ctrl + T 固定到屏幕上(直接点击就好)
  • ,. 能在历史记录中移动,历史记录保存着整个屏幕
  • 1 2 3 4可以对贴图进行旋转以及镜像。如果想要看一部分镜像的样子,这或许很有用
  • 双击左键关闭贴图,对贴图 shift+左键双击:得到缩略图, 鼠标中间单击:从缩略图恢复原样
  • shift+上下左右/WASD:以像素为单位缩小截图区域;ctrl + 上下左右/WASD:放大

5 nginx

  • sudo apt install nginx

  • sudo systemctl status nginx

  • 配置文件在 sudo vim /etc/nginx/nginx.conf 中 (🔗Nginx配置文件详解)

  • http{}里面添加上server{...}

    user shuaikai;
    ...
    server {
            listen 80;
            server_name xxx.xxx.xxx.xxx;
            root /home/shuaikai/web/;
            index index.html;
            access_log /home/shuaikai/web/log/kkcloud.access.log;
            error_log /home/shuaikai/web/log/kkcloud.error.log;
    }
    
  • nginx -t 测试配置文件有没有毛病

超详细图解:从 0 搭建一个个人网站

🐔 奇技淫巧

1 windows 技巧

  1. Systeminfo.exe 查看系统信息,包括基本信息、BIOS 版本、网卡、Hyper-V 等
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值