自动化部署主要用在linux服务器集群上。比如有后台服务器需要升级软件,基本做法就是ftp传上去,然后ssh上面重启服务。假如后台服务器一旦多了,这种方式就很麻烦了。这时候可以考虑使用自动化部署的方式来实现后台程序自动更新。由于实现方式太多,是否用docker、WebHook还是GitHook还是轮询都能实现,此处我使用一种自认为最简单的方式实现。大致流程为git仓库->WebHook->程序接受相应->更新并重启
继续阅读linux服务器软件自动化部署分类: 服务器
C#:HTTP客户端与服务器的实现
HTTP协议算是使用最广泛的Web协议了,主要面向基于B/S的实现。对于很多语言比如PHP或者javascript等Web语言,HTTP协议使用上甚至比TCP协议更简单。但这协议对普通的系统语言程序员就不太友好了。C#这种语言嘛,支持上还行,但并没达到特别优秀的效果,比如发起一个POST请求至少需要十行代码以上。这个库是我基于对C#语言封装的协议的了解,在此基础上新增的一个更加方便开发的库。源码在 https://github.com/fawdlstty/hanHttpLib 查看或下载。因为可能更新频繁,所以源码我就不在文章里面贴了。
目前这个库不算特别优秀,目前只支持基础的调用,结构也非常简单,但它能力可不差,用来给小伙伴学习也是极好的。我将不定期更新它,力争将其做到完美。
先说说HTTP的客户端。HTTP客户端主要是浏览器用来请求Web服务器上的资源用的,最广泛的就是浏览器了。每个浏览器都有一套HTTP客户端实现方式,请求完成资源后在界面上显示。但随着时代的发展,HTTP协议有着基本化的趋势。因为使用HTTPS进行通讯可以使用非常小的代价就能非常安全的加密通讯数据。另外HTTP客户端也不止是做浏览器了,除此之外最大的用处是做爬虫。比如很多零散的数据分布在零散的Web服务器上,这时就可以使用爬虫技术将零散的数据归纳起来。更加厉害的就是,再结合人工智能技术,爬取数据之后使用人工智能进行分析,差不多就能成就改变世界的武器了。
继续阅读C#:HTTP客户端与服务器的实现
C++:socket服务端模型
Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /www/wwwroot/fawdlstty.com/wp-content/plugins/wp-syntax/wp-syntax.php on line 383
首先解释下socket含义。网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。 Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。
下面我列举几个常用的服务端TCP socket实现代码
1、首先是最原始的阻塞模型。这种模型简单易懂,[以下代码基于Windows]:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | #include <winsock2 .h> #pragma comment(lib, "ws2_32.lib") int mian (int argc, char* argv []) { //Winsock环境初始化 WSAData wd; WSAStartup (MAKEWORD (2, 2), &wd); //创建套接字 SOCKET sock = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP);//对于UDP协议,第二个参数填 SOCK_DGRAM //绑定前的操作,UDP可以不用绑定 sockaddr_in addr; addr.sin_family = AF_INET;//需要绑定的本地地址 addr.sin_addr.s_addr = 0; addr.sin_port = htons (51423);//需要绑定的本地端口 //执行绑定 bind (sock, (struct sockaddr*)&addr, sizeof (addr)); //监听 listen (sock, SOMAXCONN); while (true) { //如果有链接请求,则接受链接 SOCKET session = accept (sock, NULL, NULL); if (INVALID_SOCKET == session) break; //接收数据 char buf [1024]; int len = recv (session, buf, sizeof (buf), 0); //发送数据 send (session, buf, len, 0); //关闭链接 closesocket (session); } //关闭套接字 closesocket (sock); //Winsock环境释放 WSACleanup (); return 0; }</winsock2> |
网站https加密访问实现
https加密访问有好处也有坏处,好处主要有别人无法嗅探到通讯内容,网址的绿锁图标也代表安全,坏处也有比如消耗服务器端资源,另外也无法提供适用的cdn加速,主要看个人取舍。证书主要有两种,主要面向个人用户与企业用户。个人型证书一般可以免费申领,主要效果是网址前面有绿锁图标,企业型证书需要购买,可以在网址前面显示公司名称等。
免费SSL证书可以在 沃通 、 StarSSL 或 Let's Encrypt 上获得,其中沃通和StarSSL是申请,Let's Encrypt是在服务器上安装指定软件,验证之后生成证书。
继续阅读网站https加密访问实现
网站服务器伪静态环境配置
Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /www/wwwroot/fawdlstty.com/wp-content/plugins/wp-syntax/wp-syntax.php on line 383
伪静态是个好东西,可以用来SEO优化等,由于Wordpress+Nginx配置比较麻烦,免不了入一些坑,所以写个博文方便新晋站长们配置。
首先在Wordpress的“设置”-“固定链接”菜单中设置固定链接为自定义结构,我的是/archives/%post_id%.html这个,小站长们随意,注意Nginx配置时统一一下就阔以咯,然后分类目录前缀category,标签前缀tags,然后保存更改。
这时候你将会神奇的发现,整个网站就首页可以访问,其他都访问不了了。别慌,接下来配置Nginx。在location里面撸上如下代码:
1 2 3 4 5 6 7 8 | location / { root ...; index index.html index.htm index.php; if (!-e $request_filename){ rewrite ^/archives/(\d+)\.html$ /index.php?p=$1; rewrite ^/([^\.]+)$ /index.php?$1; } } |
root别照抄,其他根据自身环境修改。重点在于if,这关键字与括号间必须要有个空格。这几句话意思是,如果访问的文件不存在,那么,就看看是不是archives开头的,如果是就代表介个是文章,用正则将其替换为/?p=形式转发给index.php,然后剩余无法访问的伪路径直接转发给index.php,包括标签、分类目录、页面等。
配置完成后重启服务器/usr/local/nginx/sbin/nginx -s reload,然后,估计整个网站全部正常访问。这时候就代表伪静态配置成功
如何建立一个网站
昨天经过一整天的配置终于把博客搭建好了呢,分享下建站步骤,供后面来的小伙伴们参考学习。由于本人对linux系统不太熟,如有发现错误的地方请指正,谢谢。
继续阅读如何建立一个网站