linux学习杂记

最近工作上不忙,抽空重新学习了linux,以前对于linux,是东一命令西一脚本,够用就行,从来没有系统地学过linux,经过这一番学习,从linux基本命令,到内核的基本运行原理,开机启动原理,磁盘存储,网络通讯,软件安装及管理等从底层往上的系统学习后,以及手动编译LFS,自认为对linux有了重新的认识,但觉得对linux的了解又才刚刚入门,对于想玩转linux,还有很长一段路要走。

linux真是一个强大的系统,一个迷你版本的linux系统只需5M大小就可以运行起来,外围是一堆模块以及硬件驱动构成了linux的内核,内核又对外提供事件以及程序接口与外部应用程序通讯。

shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行,是一个命令解释器。另外,shell编程语言具有普通编程语言的很多特点,用这种编程语言编写的shell程序与其他应用程序具有同样的效果。

爱上linux是必然的,虽然很多东西还是不甚理解,目前工作也很少涉及服务器管理,但这是一个值得花精力和时间,衣带渐宽终不悔,为伊消得人憔悴的东西。

nginx反向代理skynet

nginx作为一个web服务器和反向代理服务器,能够使web服务器和逻辑单独分离,也可以作为负载均衡服务器。基于这些优点,可以使用nginx反向代理skynet,即skynet监听本地的一个socket端口,收到请求后处理逻辑,然后返回结果。nginx和skynet可以同一台机器上,也可以在不同的机器上。

新建一个skynet服务并启动起来,当收到请求后简单返回一条信息

local skynet = require “skynet”
local socket = require “socket”
local httpd = require “http.httpd”
local sockethelper = require “http.sockethelper”

skynet.start(function()
    local id = socket.listen(“0.0.0.0”, 8008)
    skynet.error(“Listen  port 8008″)
    socket.start(id , function(id, addr)
        socket.start(id)
        httpd.write_response(sockethelper.writefunc(id), 200,”this is a http response”);
        socket.close(id);
    end)
end)

启动起来后log如下,监听8008端口

[:01000001] LAUNCH logger
[:01000002] LAUNCH snlua bootstrap
[:01000003] LAUNCH snlua launcher
[:01000004] LAUNCH snlua cmaster
[:01000004] master listen socket 0.0.0.0:2013
[:01000005] LAUNCH snlua cslave
[:01000005] slave connect to master 127.0.0.1:2013
[:01000006] LAUNCH harbor 1 16777221
[:01000004] connect from …