ubuntu 服务器软件部署从零开始

1,编写服务器软件  server 

    1)使用epoll异步多线程架构,解决打开文件描述符个数的限制 在/etc/security/limits.conf 添加 *  -  nofile    50000

    2)使用epoll的案例

res = epoll_wait(m_eFd, events, c_maxEvents, 100);
        for (int i = 0; i < res; ++i)
        {
            if((events[i].events & EPOLLERR) || (events[i].events & EPOLLHUP)){
                //突然挂断或者描述符出错
                FATAL_COND((events[i].events & EPOLLERR) , "fd=%d**********", events[i].data.fd);
                FATAL_COND( (events[i].events & EPOLLHUP) , "fd=%d**********", events[i].data.fd);
                YPlayer *p = players[events->data.fd];
                
            }

            fd = events[i].data.fd;
            if(fd <=0 || fd > c_maxFd)
            {
//                FATAL_COND(fd<=0||fd>c_maxFd, "fd=%d > maxfd=%d", fd, c_maxFd);
                continue;
            }
            if (fd == m_fd)
            {
                //if fd is game server
                int in_fd = -1;
                int tmpC = 0;
                //解决客户端连接数过多时造成部分连接收发不了信息
                while(1){
                    in_fd = accept(m_fd, NULL, NULL);
                    if(in_fd == -1){
//                     FATAL_COND(in_fd == -1,);
                     break;
                    }
                    printSocketLocalInfo(in_fd);
                    printSocketPerrInfo(in_fd);
                     if(in_fd > c_maxFd){
                         FATAL_COND(in_fd > c_maxFd,);
                         close(in_fd);
                         break;
                     }
                    

                }
            }
            else
            {
                if(events[i].events & EPOLLIN)
                {
                   //处理进来消息
                }
                else if(events[i].events & EPOLLOUT)
                {
                    //处理写出消息
                }
            }

        }

2,测试服务器软件

    1)使用gdb调试  gdb server

    2)为了了解程序崩掉的原因,开启系统产出core文件,这样就可以知道程序挂在什么位置

    a:vi /etc/sysctl.conf      添加kernel.core_pattern = /var/core/core_%e_%p_%t
                                                  kernel.core_uses_pid = 0

    b:vi /etc/profile                添加ulimit -c unlimited  解开core文件大小的限制

    c: 执行下面命令,source /etc/profile;sudo sysctl -p;使配置永久生效

3,编写守护进程,

    1)可以监听,并重启我们的服务器server,处理异常情况

4,添加系统开机启动项

    1)新建一个脚本文件,vi /etc/init.d/start_my_server.sh

#!/bin/bash
### BEGIN INIT INFO
# Provides:          start my servers
# Required-Start:    $network
# Required-Stop:     $network 
# X-Start-Before:    
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: start dataServer and lserver and gserver 
### END INIT INFO
#解决开机启动项不能产生core文件的问题
source /etc/profile
source /etc/sysctl.conf
sudo sysctl -p
#放置守护进程,启动并监听服务器server,千万不能少了“&”,不然系统就会卡主的
serverDaemon &

    2)加入开机启动项  sudo update-rc.d start_my_server.sh defaults 99

    3)取消开机启动   sudo  update-rc.d -f start_my_server.sh remove

4,如果服务器是桌面版,我们可以让系统开机进入命令行模式,节省系统开销

    1)vi /etc/default/grub   将GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" 改为GRUB_CMDLINE_LINUX_DEFAULT="quiet splash text"

    2)执行命令,sudo update-grub; sudo update-grub2;

    3)重启系统,就不会进入图形界面了




转载于:https://my.oschina.net/u/219482/blog/371808

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值