git提交或克隆报错fatal: unable to access ‘https://github.com/tata20191003/autowrite.git/‘: Failed to connec

1.问题原因 报错信息: fatal: unable to access ‘https://github.com/xxx/autowrite.git/’: OpenSSL SSL_read: Connection was reset, errno 10054 1 2 又或者 fatal: unable to access ‘https://github.com/xxx/autowrite.git/’: Failed to connect to github.com port 443: Timed out 1 2 因为git在拉取或者提交项目时,中间会有git的http和https代理,但是我们本地环境本身就有SSL协议了,所以取消git的https代理即可,不行再取消http的代理。 后续 原因还有一个,当前代理网速过慢,所以偶尔会成功,偶尔失败。 2.解决方案 1.在项目文件夹的命令行窗口执行下面代码,然后再git commit 或git clone 取消git本身的https代理,使用自己本机的代理,如果没有的话,其实默认还是用git的 //取消http代理 git config –global –unset http.proxy //取消https代理 git config –global –unset https.proxy 1 2 3 4 2.科学上网(vpn) 这样就能提高服务器连接速度,能从根本解决 time out 443问题 原文链接:https://blog.csdn.net/good_good_xiu/article/details/118567249

June 10, 2024

基于ASP.NET Core的整洁架构

干净体系结构将业务逻辑和应用程序模型置于应用程序的中心。 而不是让业务逻辑依赖于数据访问或其他基础设施,此依赖关系被倒置:基础结构和实现细节依赖于应用程序内核。 此功能是通过在应用程序核心中定义抽象或接口来实现的,然后通过基础设施层中定义的类型实现。 将此体系结构可视化的常用方法是使用一系列同心圆,类似于洋葱。 遵循依赖倒置原则以及域驱动设计原则 (DDD) 的应用程序倾向于达到类似的体系结构。 多年来,这种体系结构有多种名称。 最初的名称之一是六边形体系结构,然后是端口 - 适配器。 最近,它被称为洋葱体系结构或干净体系结构。 此电子书中将后一种名称“干净体系结构”用作此体系结构的名称。 在此关系图中,依赖关系流向最里面的圆。 “应用程序内核”因其位于此关系图的核心位置而得名。 从关系图上可见,该应用程序内核在其他应用程序层上没有任何依赖项。 应用程序的实体和接口位于正中心。 在外圈但仍在应用程序核心中的是域服务,它通常实现内圈中定义的接口。 在应用程序内核外面,UI 和基础结构层均依赖于应用程序内核,但不一定彼此依赖。

June 7, 2023

当你在浏览器地址栏输入一个网址的时候,会发生什么?

作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等。 本文将更深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的事 1 首先,你得在浏览器里输入要网址: 2 浏览器查找域名的IP地址 导航的第一步是通过访问的域名找出其IP地址。DNS查找过程如下: 浏览器缓存 – 浏览器会缓存DNS记录一段时间。 有趣的是,操作系统没有告诉浏览器储存DNS记录的时间,这样不同浏览器会储存个自固定的一个时间(2分钟到30分钟不等)。 系统缓存 – 如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调用(windows里是gethostbyname)。这样便可获得系统缓存中的记录。 路由器缓存 – 接着,前面的查询请求发向路由器,它一般会有自己的DNS缓存。 ISP DNS 缓存 – 接下来要check的就是ISP缓存DNS的服务器。在这一般都能找到相应的缓存记录。 递归搜索 – 你的ISP的DNS服务器从跟域名服务器开始进行递归搜索,从.com顶级域名服务器到Facebook的域名服务器。一般DNS服务器的缓存中会有.com域名服务器中的域名,所以到顶级服务器的匹配过程不是那么必要了。DNS递归查找如下图所示: DNS有一点令人担忧,这就是像wikipedia.org 或者 facebook.com这样的整个域名看上去只是对应一个单独的IP地址。还好,有几种方法可以消除这个瓶颈: 循环 DNS 是DNS查找时返回多个IP时的解决方案。举例来说,Facebook.com实际上就对应了四个IP地址。 负载平衡器 是以一个特定IP地址进行侦听并将网络请求转发到集群服务器上的硬件设备。 一些大型的站点一般都会使用这种昂贵的高性能负载平衡器。 地理 DNS 根据用户所处的地理位置,通过把域名映射到多个不同的IP地址提高可扩展性。这样不同的服务器不能够更新同步状态,但映射静态内容的话非常好。 Anycast 是一个IP地址映射多个物理主机的路由技术。 美中不足,Anycast与TCP协议适应的不是很好,所以很少应用在那些方案中。大多数DNS服务器使用Anycast来获得高效低延迟的DNS查找。 3 浏览器给web服务器发送一个HTTP请求 因为像Facebook主页这样的动态页面,打开后在浏览器缓存中很快甚至马上就会过期,毫无疑问他们不能从中读取。 所以,浏览器将把一下请求发送到Facebook所在的服务器: GET http://facebook.com/ HTTP/1.1 Accept: application/x-ms-application, image/jpeg, application/xaml+xml, [...] User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; [...] Accept-Encoding: gzip, deflate Connection: Keep-Alive Host: facebook.com Cookie: datr=1265876274-[...]; locale=en_US; lsd=WW[...]; c_user=2101[...] GET 这个请求定义了要读取的URL: “http://facebook.com/”。 浏览器自身定义 (User-Agent 头), 和它希望接受什么类型的相应 (Accept and Accept-Encoding 头). Connection头要求服务器为了后边的请求不要关闭TCP连接。 ...

January 10, 2023

重新研究网站内容管理系统(CMS)

公司是校企,今年打算跟学校合作,承接学校很多信息化建设的网站,功能基本都是信息展示和会员,如果完全重新开发,非常浪费人力资源,所以我想起了CMS系统,这是十几年前非常流行的建站系统。我毕业做的第一个产品就是CMS,当时用ASP.NET技术来开发,参考了非常流行的dedecms、phpcms等同用建站系统,所以我对内容管理系统了解非常深刻。 这次我们用到的是一个迅睿CMS,也是php语言开发的内容管理系统,我曾经写过一年多的php,对这门语言也比较熟悉。原来本来打算使用微软的开源系统OrchardCMS,这款内容管理系统也非常优秀,代码经典、封装很好,我也研究过他的程序代码,加上部门的同事都是使用.NET语言,但是发现使用OrchardCMS的人不多,插件也少,站长使用不活跃,最终放弃了。 迅睿CMS免费开源系统是基于PHP7语言采用最新CodeIgniter4作为开发框架生产的网站内容管理框架,提供“电脑网站+手机网站+APP接口”一体化网站技术解决方案。它拥有强大稳定底层框架,以灵活扩展为主的开发理念,二次开发方便且不破坏程序内核,为WEB 艺术家创造的PHP建站程序,堪称PHP万能建站框架。 上面这段话是官方的介绍,其实我喜欢这个CMS的原因是它的开源协议很好:可以免费使用在任何地方,可以自主进行二次开发;购买授权可以免费使用插件,并且获得升级支持服务,一次授权可以无限次使用。这个就比其他内容管理系统要好,其他都不允许用于商业用途,只给小站长免费开放,购买一次只能用一个站点。 说到网站内容管理系统,最核心的就是模板语言和标签系统,当然还有内容模块里的模型:通过模型可以自定义任何功能模块的数据模型,然后通过标签语言嵌套HTML页面形成模板,最后发表出来。 C#和php都是我可以接受的开发语言,我对语言其实没有太大排斥。

April 15, 2021

IIS如何设置反向代理

说到反向代理,很多人会想到nginx,其实iis也是可以实现方向代理的。 1.安装ARR、URL Rewrite(URL重写工具2.0) 注意英文和中文环境的对应: Application Request Routing 对应中文 应用程序请求路由 URL Rewrite Module 对应中文 URL重写 下载安装ARR(也可以在IIS管理器中,Web平台安装程序->产品->搜索框中搜索"arr"->应用程序请求路由3.0 Beta->添加->安装): http://www.iis.net/downloads/microsoft/application-request-routing 下载安装URL Rewrite Module(也可以在IIS管理器中,Web平台安装程序->产品->搜索框中搜索"url"->url重写工具2.0->添加->安装): http://www.microsoft.com/en-us/download/details.aspx?id=7435 这里推荐使用IIS自带的Web安装包工具,微软还是很强大的。 2.启用ARR:双击ARR(Application Request Routing)->点击右侧Server Proxy Settings…->选中Enabel proxy->点击右侧“应用”; 3.启用URL重写,可以通过web.config配置,也可以通过界面设置(web.config最终也可以使用界面来查看和操作),比如web.config样例: 此时 www.baidu.com/api 或者 www.baidu.com/api/xxxx 都被代理到 www.proxy.com 或者 www.proxy.com/xxx,如果不想过滤掉"baidu",只需要把match url 改成 “^(baidu(/?|.*))$” <?xml version=”1.0” encoding=”UTF-8”?> <configuration> <system.webServer> <rewrite> <rules> <rule name=”bdProxy” stopProcessing=”true”> <match url=”^baidu(/?|.*)$” /> <conditions> <add input=”{HTTP_HOST}” pattern=”www.baidu.com” /> </conditions> <action type=”Rewrite” url=”http://www.baidu.com{R:1}“ /> <serverVariables> <set name=”HTTP_X_FORWARDED_HOST” value=”{HTTP_HOST}” /> </serverVariables> </rule> </rules> </rewrite> </system.webServer> </configuration> 这里要特别注意了:由于使用了变量 HTTP_X_FORWARDED_HOST,所以需要在 url重写->查看服务器变量->添加->添加HTTP_X_FORWARDED_HOST

July 10, 2019

[转]使用Censys 查询CDN/如Cloudflare后面的真实服务器IP地址与对应防范

Censys是一个可恨又可爱的搜索联网设备信息的新型搜索引擎, 利用他可以搜索到很多有用的信息, 比如通过ssl证书查找到CDN后面背后的真实IP. 防范: 1, 建议屏蔽所有Censys段 https://censys.io/ipv4?q=censys.io 搜索censys的ip段并屏蔽. 如下面两个段 198.108.0.0/16 141.212.0.0/16 2, 或者屏蔽除了CDN以外所有IP访问. (推荐, 但请注意操作, 别把自己给屏蔽了) CentOS 7 firewall防火墙屏蔽除指定IP外的所有IP https://www.openos.org/post/340/ 3, 如果是cloudflare用户, 也可以使用argo-tunnel https://www.cloudflare.com/zh-cn/products/argo-tunnel/ https://developers.cloudflare.com/argo-tunnel/quickstart/ 其他查询Cloudflare源IP的相关工具 http://www.crimeflare.org:82/ https://securitytrails.com cloudflare 服务器IP地址 https://www.cloudflare.com/ips/ IPv4 173.245.48.0/20 103.21.244.0/22 103.22.200.0/22 103.31.4.0/22 141.101.64.0/18 108.162.192.0/18 190.93.240.0/20 188.114.96.0/20 197.234.240.0/22 198.41.128.0/17 162.158.0.0/15 104.16.0.0/12 172.64.0.0/13 131.0.72.0/22 IPv6 2400:cb00::/32 2606:4700::/32 2803:f800::/32 2405:b500::/32 2405:8100::/32 2a06:98c0::/29 2c0f:f248::/32

June 14, 2019

mysql数据库报错:找不到mysql.sock导致无法连接

mysql.sock默认的是在/var/lib/mysql, 如果发现确实是在该目录下,可以在[mysqld]下面加入mysql.sock的path vi /etc/my.cnf(my.cnf也可能在其他路径下) [mysqld] port = 3306 socket = /var/lib/mysql/mysql.sock 但是要保证使用mysql的用户具有对该目录的写权限,否则这样的改动由于权限限制仍然会报错。 所以为了避免权限问题也可以使用软链接为/var/lib/mysql/mysql.sock创建一个到/tmp/mysql.sock的联接 ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock 由于/tmp/文件夹默认对other有w权限,这样就可以避免权限问题。 此外,如果发现mysql.sock不在默认的/var/lib/mysql位置,一种解决方法是使用find命令搜索mysql.sock的位置,然后按前面两种解决方案挑一种做即可。 或者进行初始化:/usr/local/mysql/bin/mysql_install_db –user=mysql

June 13, 2019

php-fpm找不到php-cgi.sock

这两天整理centos服务器,为了节省空间清理了不少文件,没想到不小心把/tmp/下的目录清除了,导致程序报错:php-fpm找不到php-cgi.sock。 php-fpm有两种listen方式,一种是通过端口来操作,一种是sock文件。 在nginx的server配置当中,如果设置为fastcgi_pass unix:/tmp/php-cgi.sock的话,有可能会出现502错误,这是以为nginx此项没有找到php-cgi.sock文件或者权限问题导致的,我们也可以改成fastcgi_pass:127.0.0.1:9000来修正这个错误 。 当我们用php-fpm来管理我们的php启动时,按照如下的配置,就会自动生成/tmp/php-cgi.sock文件,然后再访问的话就不回出现502 Gateway错误了。配置如下: [global] pid = /var/run/php-fpm.pid error_log = /var/log/php-fpm.log log_level = notice [www] listen = /tmp/php-cgi.sock user = www group = www pm = dynamic pm.max_children = 20 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3 注:将php.ini里的cgi.fix_pathinfo设置为0,不然会有漏洞。

June 12, 2019

CentOS6 yum 安装memcached,CentOS6 安装Memcached PHP安装Memcache扩展

############# centos 6 第一二步省略,直接yum安装 1. 安装第三方软件库 wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.5.2-2.rf.src.rpm rpm -ivh rpmforge-release-0.5.2-2.rf.src.rpm 2. 查找Memcached yum search memcached 3. 安装Memcached yum -y install memcached 4. 验证安装 memcached -h 应该会输出一些帮助信息 5. 将memcache加入启动列表 chkconfig –level 2345 memcached on 6. 配置Memcache vi /etc/sysconfig/memcached 文件中内容如下 PORT=”11211″ 端口 USER=”root” 使用的用户名 MAXCONN=”1024″ 同时最大连接数 CACHESIZE=”64″ 使用的内存大小 OPTIONS=”" 附加参数 7. 查看memcache状态 memcached-tool [Memcache Server IP]:[Memcache Server Port] stats 如:memcached-tool 127.0.0.1:11211 stats =====至此,我们将Memcache服务配置完毕,接着我们配置PHP的扩展,以便在程序中来调用===== PHP共有2种Memcache扩展,一个叫Memcache(2002年发布),另一个叫Memcached(2008年发布) Memcached比较新,它依赖于limemcached库才能运行,不过它能完成基于Memcache服务的几乎所有功能,比如:Memcached::getResultCode ,它能返回上一次操作Memcache的结果,而Memcache则没有这个功能 Memcache(没有d)不依赖任何库就能运行,安装相对简单,同时也能完成Memcache服务的大部分主要功能。 下面分别介绍2者的安装方式。 8. 安装PHP的Memcache扩展(yum安装php已安装此扩展) wget http://pecl.php.net/get/memcache-2.2.6.tgz wget http://pecl.php.net/get/memcache-3.0.6.tgz tar vxzf memcache-2.2.6.tgz cd memcache-2.2.6 /usr/bin/phpize (如果不知道phpize在什么位置,可以用find / -name phpize查找) ./configure –enable-memcache –with-php-config=/usr/bin/php-config –with-zlib-dir make make install 记录下安装成功后的提示,类似于: Installing shared extensions: /usr/lib/php/modules/ 把这个地址记录下来 ...

December 3, 2015

[转]MySQL性能优化的简单说明

原文链接 http://teddysun.com/424.html MySQL 作为 LAMP 组件中的重要一环,在网站架构中担当关于数据处理的重任。作为目前流行最为广泛的开源数据库,网络上已经有相当多的各种优化教程。本文将试着从改善 MySQL 配置入手,进一步提升 MySQL 的性能。 关于如何优化数据库结构及 SQL 语句不在本次讨论范围之内。 MySQL 性能优化我打算分为三个部分,一是物理硬件的优化,二是 MySQL 安装时的编译优化,三是 MySQL 的配置文件 my.cnf 的优化。 一、物理硬件的优化 磁盘 I/O 是制约 MySQL 性能的最大因素之一。 采用 SSD 的服务器肯定会比普通 HDD 硬盘性能要好;采用 RAID10 的肯定要比单盘的性能要好。 所谓物理硬件的优化,其实也就是服务器(VPS)硬件的堆砌。更多的内存,更快的磁盘,更强的 CPU 无疑就是最佳的。 二、MySQL 安装时的编译优化 一般情况下不建议直接 yum 安装 MySQL ,一来不能定制功能,二来版本比较老。所以我一般会采取编译安装的方式。 源码编译安装的前提条件(依赖包): 1、CMake。官网:http://www.cmake.org/ 2、GCC,A working ANSI C++ compiler. GCC 4.2.1 or later。官网:http://www.gnu.org/software/gcc/ 3、bison,2.1 or newer。官网:http://www.gnu.org/software/bison/ 4、m4。官网:http://www.gnu.org/software/m4/ 5、tar。官网:http://www.gnu.org/software/tar/ 编译参数: MySQL 5.5.x http://dev.mysql.com/doc/refman/5.5/en/source-configuration-options.html MySQL 5.6.x http://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html LAMP 一键安装脚本里对 MySQL 编译的参数如下: -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=complex -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_EMBEDDED_SERVER=1 ...

July 16, 2015