技术学习
未读Linux网络编程实践[TOC]
一、Linux网络编程框架1、网络是分层的(1)OSI 7层模型
(2)网络为什么要分层
1)各层次之间是独立的。某一层并不需要知道它的下一层是如何实现的,而仅仅需要知道该层通过层间的接口所提供的服务。这样,整个问题的复杂程度就下降了。也就是说上一层的工作如何进行并不影响下一层的工作,这样我们在进行每一层的工作设计时只要保证接口不变可以随意调整层内的工作方式。
2)灵活性好。当任何一层发生变化时,只要层间接口关系保持不变,则在这层以上或以下层均不受影响。当某一层出现技术革新或者某一层在工作中出现问题时不会连累到其它层的工作,排除问题时也只需要考虑这一层单独的问题即可。
3)结构上可分割开。各层都可以采用最合适的技术来实现。技术的发展往往不对称的,层次化的划分有效避免了木桶效应,不会因为某一方面技术的不完善而影响整体的工作效率。
4)易于实现和维护。这种结构使得实现和调试一个庞大又复杂的系统变得易于处理,因为整个的系统已经被分解为若干个相对独立的子系统。进行调试和维护时,可以对每一层进行单独的调试,避免了出现找不到、解决错问题的情况。
能促进标准 ...
Shell编程基础Shell变量设置环境变量1.基本语法
export 变量名=变量值 (功能描述:将 shell 变量输出为环境变量/全局变量)
source 配置文件 (功能描述:让修改后的配置信息立即生效)
echo $变量名 (功能描述:查询环境变量的值)
示意图:
2.快速入门
在/etc/profile 文件中定义 TOMCAT_HOME 环境变量
查看环境变量 TOMCAT_HOME 的值
在另外一个 shell 程序中使用 TOMCAT_HOME
注意:在输出 TOMCAT_HOME 环境变量前,需要让其生效
source /etc/profile
shell 脚本的多行注释
:<<! 内容 ! (==注意换行==)
位置参数变量介绍:当我们执行一个 shell 脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量
比如 : ./myshell.sh 100 200 , 这个就是一个执行 s ...
技术学习
未读在新版的ubuntu中,使用timedatectl 替换了ntpdate来进行时间管理。
查看当前时间状态1timedatectl status
显示如下
系统显示的时间是错误的,错误原因也是显而易见的,使用的是 ==Etc/UTC== 的时区。
因此只要修改时区就能保证时间的正确。
修改时区所有的时区名称存储在 /usr/share/zoneinfo 文件中。
执行命令
1timedatectl set-timezone "Asia/Shanghai"
就可以将时区设为上海时区
重新查看当前时间状态1timedatectl status
此时时间已经正常了。
![Hexo](../../images/Pictures/使用 Vercel 和 Github 部署 Hexo 安装以及使用教程/16616144187928.webp)
优点:
环境稳定且免费,可以省出维护服务器的精力和开支
大佬们一般对服务器有很高的要求,一个服务器通常会专门做一件事情,如果挂博客太低的配置没法有很好的访问性能,太高的配置又是资源浪费,中规中矩的配置却又比上不足比下有余,这时候静态博客就是个很好的解决方案。
==主题好看==
方案细则把 Hexo 文件放在 Github 上,每次更新文件都推送到 Github 上,由 Vercel 自动拉取构建
创建 Hexo 项目创建 Hexo 项目直达链接:
Deploy
这时候就到了创建 Hexo 项目的页面了。
左边的 Git Scope 是你的 Github 账号,右边 REPOSITORY NAME 是你账号下 Hexo 博客仓库的名字,你的博客源文件就存放在这里,名称可以自选
项目可见性就保持 Private,这样别人就看 ...
1. 设置ssh远程连接rootUbuntu 系统的默认用户名是 ubuntu,并在安装过程中默认不设置 root 账户和密码。您如有需要,可在设置中开启允许 root 用户登录。具体操作步骤如下:
使用 ubuntu 账户登录轻量应用服务器。
执行以下命令,设置 root 密码。
1sudo passwd root
输入 root 的密码,按 Enter。
重复输入 root 的密码,按 Enter。 返回如下信息,即表示 root 密码设置成功。
1passwd: password updated successfully
执行以下命令,打开 sshd_config 配置文件
1sudo vi /etc/ssh/sshd_config
按 i 切换至编辑模式,找到 #Authentication,将 PermitRootLogin 参数修改为 yes。如果 PermitRootLogin 参数被注释,
请去掉首行的注释符号(#)。如下图所示
找到 #Authentication,将 PasswordAuthentication 参数修改为 ye ...
经验教程
未读服务器安装Clash有很多方法,这里介绍2种: ==终端代理设置== 和 使用 ==docker安装==
Clash 终端代理安装
1. 下载Clash首先下载对应的安装包放到服务器上([官方Clash已删库,这个是备份 ](Releases · Kuingsmile/clash-core (github.com)))
1234567891011# 进入你所放置的目录(默认情况是下载到 ~/Downloads 目录,如果不是请进入到对应的下载目录)cd ~/Downloads# 解压gunzip clash-linux-amd64-v3-v1.15.1.gz# 复制clash 到/usr/bin/文件夹(这样在终端任何位置执行 clash 即可启动)# sudo mv clash-linux-amd64-v3-v1.15.1 /usr/bin/clash# 复制clash 到 /opt/ 文件夹(这样在终端任何位置执行 clash 即可启动)(我实测复制到/usr/bin/ 下重启服务器会自 ...
网络配置Linux 网络配置原理图画出原理图,帮助理解
查看网络IP 和网关查看虚拟网络编辑器和修改IP 地址
查看网关
查看 windows 环境的中 VMnet8 网络配置 (ipconfig 指令)
查看 linux 的网络配置 ifconfig
ping 测试主机之间网络连通性- 基本语法
ping 目的主机 (功能描述:测试当前服务器是否可以连接目的主机)
- 应用实例
测试当前服务器是否可以连接百度
ping www.baidu.com
linux 网络环境配置第一种方法(自动获取):说明:登陆后,通过界面的来设置自动获取ip,特点:linux 启动后会自动获取 IP,缺点是每次自动获取的 ip 地址可能不一样
第二种方法(指定ip)教程(https://cloud.tencent.com/developer/article/1933335)
主机名解析过程分析(Hosts、DNS)Hosts 是什么一个文本文件,用来记录 IP 和 **Hostname(主机名)**的映射关系
DNSDNS,就是 Domain Name System 的缩写,翻译过来就是域名系统是互 ...
如果您运行 docker ps 后没有看到对应的 Clash 容器,可以尝试以下几个步骤来诊断和解决问题:
查看容器启动日志: 使用以下命令查看容器的启动日志,以便了解是否有任何启动错误或问题:
1docker logs clash
如果有错误,日志可能会提供一些线索。
检查容器状态: 使用以下命令检查容器的状态,以确保它正在运行:
1docker inspect -f "{{.State.Status}}" clash
如果容器状态不是 “running”,则说明有启动问题。
检查端口占用情况: 使用以下命令检查端口 7890、7891 和 9090 是否已被占用:
1sudo netstat -tulpn | grep -E '7890|7891|9090'
如果端口已被占用,您可能需要停止占用该端口的其他服务或更改 Clash 容器映射的端口。
重新运行容器: 尝试停止并删除现有的 Clash 容器,然后重新运行 Docker 命令:
123docker stop clashdocker ...
经验教程
未读frp是内网穿透工具,客户端和服务端分别为frpc和frps,==frpc安装在本地机器==、==frps安装在拥有公网IP的机器中==。
本文主要介绍如何使用docker分别运行frpc和frps。优点:配置文件(包含密码和公网IP等重要信息)可保留在本机,docker容器可推送至任意镜像仓库,当更换服务器或者新增一个客户端时可以复用镜像,较为简洁。
frps 安装frps 是装在具有公网ip的服务器上
1docker run --restart=always --network host -d -v /etc/frp/frps.toml:/etc/frp/frps.toml --name frps snowdreamtech/frps
frps.toml配置 (==新版本frp配置文件采用的是 .toml , 而不是 .ini==)
12345678910[common]# 指定frps监听的端口号,用于接收来自frpc的请求。bind_port = 7000# ...
经验教程
未读部署Nginx Proxy Manager创建一个目录用于存放Nginx Proxy Manager的配置和项目文件
1mkdir -p /opt/docker/NginxProxyManager && cd /opt/docker/NginxProxyManager
创建一个docker-compose.yml文件
1vim docker-compose.yml
123456789101112version: '3'services: app: image: 'chishin/nginx-proxy-manager-zh:release' restart: always ports: - '80:80' - '81:81' - '443:443' volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt
部署运行1docker-com ...