Linux 网络服务器构架实务之三

原创 2003年03月28日 09:21:00

/*------------------------------------------------------------------------
写在前面:
我看到很多网友的提问都跟服务器配置有关,搭建一个可靠而又安全的应用开发服务器是WEB编程的基础,尤其对于在LINUX上进行JSP开发的朋友而言。

这篇文档是我多年服务器配置的结晶,发表前已历经本人N此修改(最后一次大的修改是在RH7.2刚刚发布之即,而后一来由于忙于开发二来由于没有发现错误,所以没有升级),文档于2001年底被天极网转载(http://www.yesky.com/20020206/217592.shtml),后经linuxbye.net,cnjsp.com等多个linux和JAVA社区转载,历经时间考验,至今未曾发现错误,各位尽可放心使用。

文档在web页面的显示效果不够理想,如果您希望得到本文档的PDF,或有任何意见建议,可邮件至roczhao@msn.com

文档较长分为多篇发布,这是第三篇,以下为正文:
-----------------------------------------------------------------------*/

配置步骤<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

Step 1 RedHat 7.2 install

我的建议:

1、 安装时为/home建立单独的分区,因为/home是用户数据的存放之地,本文档中也将软件的安装文件都放到这个目录下,所以,这样做当你下次重新安装系统的时候,可以保留该分区,数据也就得以保全;

2、 采用定制安装的方式并选中’Everything’选项,这样特别适合于初学者,否则后面的安装过程中可能会出现找不到某个包或某个命令的情况;但如果是配置Internet服务器,就应该只选择必需的包,做到尽量的精简才够安全;

3、 选择语言时,建议选中simplified chinese(P.R.CHINA)选项,这样,当你配置好服务器的时候,在程序代码中无需任何声明,中文将被支持而不会乱码;

4、 使用Gnome做为登陆管理器,使用KDE作为默认的Session,设置默认启动到X,这样做的目的是为了方便远程控制;

5、 IP: 192.168.1.2,这是我在本文档中使用的IP,这个可以自行设置。

6、 文档中我没有涉及到防火墙的设置,系统安装完成后你可以使用ntsysv或者chkconfig命令将iptablesipchains两个服务禁用掉,否则会导致telnet和远程登陆等无法使用;

当然,如果您熟悉防火墙设置,可以自行处理。

--------------------------------------------------------------------------------------------

Step 2 X setup

##这一步完成后,重启服务器,然后你就可以使用Extra!X等远程控制软件以图形界面在微软平台上进行服务器配置,这样做的好处是可以同时控制服务器端和客户端,不必奔走在两台机器之间。如果你按照下面的设置不能进行远程控制,那么,很有可能你的防火墙策略不允许这样做,禁用掉iptablesipchains就可以了。

vi /etc/X11/gdm/gdm.conf                       //启用远程控制

[xdmcp]

Enable=1

 

vi /etc/X11/gdm/Sessions/Default                //设置默认Session

exec /etc/X11/xdm/Xsession kde

 

vi /etc/X11/xdm/Xaccess                        //设置广播对象

192.168.1.*

--------------------------------------------------------------------------------------------

Step 3 Services setup

Shell> ntsysv

运行ntsysv命令启用named telnet wu_ftpd 服务,禁用httpd mysqldiptablesipchains 服务和其他一些不需要的服务,然后用reboot重启服务器。

--------------------------------------------------------------------------------------------

Step 4 Dns setup

vi /etc/named.conf

 

1 创建标准区域

##你可以根据你的喜好来命名,这里我使用的后缀是.loc,主要是为了避免和Internet已经注册的域名相冲突,你可以自行决定你的后缀。

##添加下面的文本到 /etc/named.conf

 

zone yesgo.loc{

type master;

file "yesgo.loc";

}

zone 1.168.192.in-addr.arpa{

type master;

file "192.168.1";

}

 

2 创建域名库文件

touch /var/named/yesgo.loc

touch /var/named/192.168.1

 

##编辑正向域名库文件,建立主机名和主机别名

vi /var/named/yesgo.loc

 

@       IN      SOA     ns.yesgo.loc. root.ns.yesgo.loc.  (

                                      2001050801 ; Serial

                                      28800      ; Refresh

                                      14400      ; Retry

                                      3600000    ; Expire

                                      86400 )    ; Minimum

              IN      NS      ns.yesgo.loc.

              IN      MX      0      ns.yesgo.loc.

 

ns       IN      A     192.168.1.2

ftp       IN      CNAME     ns.yesgo.loc.

mail       IN      CNAME     ns.yesgo.loc.

pop       IN      CNAME     ns.yesgo.loc.

smtp       IN      CNAME     ns.yesgo.loc.

 

##编辑反向域名库文件,建立主机名指针

vi /var/named/192.168.1

 

@       IN      SOA     ns.yesgo.loc. root.ns.yesgo.loc.  (

                                      2001050801 ; Serial

                                      28800      ; Refresh

                                      14400      ; Retry

                                      3600000    ; Expire

                                      86400 )    ; Minimum

              IN      NS      ns.yesgo.loc.

              IN      MX      0      ns.yesgo.loc.

 

2     IN    PTR       ns.yesgo.loc.

 

3 重新启动DNS服务

/etc/rc.d/init.d/named restart

 

4 域名查询

##测试域名是否解析成功,这是一个交互式的命令行,你可以输入域名或者IP地址进行正向和反向查询

nslookup -sil

--------------------------------------------------------------------------------------------

Step 5 KDE setup

这一步是可有可无的,因为你完全可以不去理会而直接使用默认界面。一般的做法是先根据KDE配置向导进行总体设置,然后再使用KDE控制中心进行详细配置,在此不多介绍。需要提的一点是你可以通过KDE Control Panel 中的Windows Manager来设置默认Session,当然也可以通过配置文件来实现这一点。

--------------------------------------------------------------------------------------------

Step 6 Ftp setup

vi /etc/shells

##添加下面一行到/etc/shells,将作为FTP用户的shell,使其不能使用命令和telnet服务

/dev/null

 

## 增加ftpchroot组,该组中的用户将以自己的home目录作为FTP根目录

 

groupadd ftpchroot

 

## 添加FTP用户,该类用户只能使用FTP服务,且以自己的home目录为根目录

useradd src –s /dev/null –g ftpchroot   //本帐号用来存放软件包

passwd src

 

/*

我习惯将软件包放到自定义的/home/src目录,主要目的还是上面提到的数据保全和软件上传问题,如果放到/usr/local/src目录,这两点也能实现但不方便,如果你习惯将软件包放到/usr/local/src,你可以删除/usr/local/src然后为/home/src建立一个符号连接。

*/

rm –R -f /usr/local/src

ln –s /home/src /usr/local/src

--------------------------------------------------------------------------------------------

Step 7 MySQL、Apache and php Unistall

使用Package管理器或者rpm命令卸载MySQLApachePHP,建议初学者使用Package管理器,分别查找这三个关键词直到将所有相关的软件包都卸载干净。我们接着会编译安装这些软件。

--------------------------------------------------------------------------------------------

Step 8 MySQL install

1 准备用户

## 注意,这里所说的准备用户,指的是MySQL服务的启动用户,这个用户是Linux系统的用户,并非MySQL用户。需要搞清的是,LinuxMySQL有各自的用户机制,他们都有一个最高权限的用户rootMySQL安装完毕默认只有一个用户,root ,其密码为空,可以使用mysqladmin –u root –p password 指令来更改其密码。

 

userdel mysql

useradd mysql –s /dev/null

passwd mysql

 

2 安装MySQL

cd /home/src

tar xvzf my*                                //解包

cd my*

./configure --prefix=/usr/local/mysql           //配置

make                                     //编译

make install                               //安装

./scripts/mysql_install_db                   //建库

 

3 修改文件夹权限

##下面修改相关文件夹权限,否则MySQL服务不能启动,或者说你对数据库没有写权限

chown –R root /usr/local/mysql

chgrp –R mysql /usr/local/mysql

 

chown –R root /usr/local/mysql/bin

chgrp –R mysql /usr/local/mysql/bin

 

chown –R root /usr/local/mysql/var

chgrp –R mysql /usr/local/mysql/var

chmod 770 /usr/local/mysql/var

 

chown –R root /usr/local/mysql/var/mysql

chgrp –R mysql /usr/local/mysql/var/mysql

chmod 770 /usr/local/mysql/var/mysql

 

chown –R root /usr/local/mysql/var/mysql/*

chgrp –R mysql /usr/local/mysql/var/mysql/*

chmod 770 /usr/local/mysql/var/mysql/*

 

chmod 770 /usr/local/mysql/lib/mysql/libmysqlclient.a

 

4 重新加载动态库

##因为我们采用自定义编译安装的方式,所以跟系统原先定义的库位置不一样,现在我们重新指定它并重新加载

vi /etc/ld.so.conf

#添加下面一行

/usr/local/mysql/lib

 

shell>ldconfig                                   //重新加载动态库

 

5 测试MySQL

cd /usr/local/mysql

./bin/safe_mysqld –-user=mysql &                 //启动MySQL服务

mysqladmin –u root –p password 'your_password'   //更改用户密码

mysql –p                                      //开始使用

 

6 创建启动脚本

##创建MySQL服务,使之在系统启动时自动启动

cd /etc/rc.d/init.d

touch mysqld

vi mysqld

##文件内容如下:

 

#!/bin/bash

#Start MySQL service

cd /usr/local/mysql

./bin/safe_mysqld - -user=mysql&

 

##改变该脚本的权限,否则系统启动时会说由于没有执行权限而启动失败

chown –R root /etc/rc.d/init.d/mysqld

chmod 700 /etc/rc.d/init.d/mysqld

 

##将此服务连接到init 5,如果你使用init 3启动机器,连接到rc3.d即可,60代表启动的次序,S要大写

ln –s /etc/rc.d/init.d/mysqld /etc/rc.d/rc5.d/S60mysqld

--------------------------------------------------------------------------------------------

Step 9 Apache install

1 安装Apache

cd /home/src

tar xvzf apa*                                                  //解包

cd apa*

./configure --prefix=/usr/local/apache --enable-module=so          //设置编译参数

make                                                        //编译

make install                                                  //安装

 

Linux Framebuffer驱动框架之二软件架构(未完待续)

/***************************************************************************************************...
  • gqb666
  • gqb666
  • 2013年10月21日 21:32
  • 6283

Linux ALSA声卡驱动之三:PCM设备的创建

声明:本博内容均由http://blog.csdn.net/droidphone原创,转载请注明出处,谢谢! 1. PCM是什么 PCM是英文Pulse-code modu...
  • lininglive
  • lininglive
  • 2016年08月08日 14:03
  • 1186

手把手带你自制Linux系统之三 添加关机重启及用户登录功能

手把手带你自制Linux系统之三 添加关机重启及用户登录功能 本章,我们要做的主要工作是为我们的Mini Linux添加关机、重启功能及用户登录功能。打开虚拟机中CentOS_5.5作为工作机,...
  • Toormi
  • Toormi
  • 2015年11月09日 08:18
  • 1607

Linux--网络编程-常见服务器模型

1、UDP循环服务器 UDP循环服务器的实现非常简单,UDP服务器每次从套接字上读取一个客户端的请求进行处理,然后将结果返回客户端,可以用下面的算法来实现。soket(...); bind(...);...
  • qq_28877125
  • qq_28877125
  • 2017年04月19日 00:13
  • 237

LINUX网络服务器

一、在之前设计的网络编程服务器中,涉及到的服务器都是最为简单的、一对一的服务器,也就是只与一个客户端建立通信。然而在网络程序里面,一般来说都是许多客户对应一个服务器,为了处理客户的请求, 对服务端的程...
  • ryan_jianjian
  • ryan_jianjian
  • 2016年11月15日 23:06
  • 83

Linux 网络编程——并发服务器的三种实现模型

原文地址:http://blog.csdn.net/tennysonsky/article/details/45671215 原文作者:Mike__Jiang 服务器设计技术有...
  • Jason_huzhe
  • Jason_huzhe
  • 2016年08月29日 12:47
  • 2553

Linux下TCP网络服务器实现源代码

大家都知道各类网络服务器程序的编写步骤,并且都知道网络服务器就两大类:循环服务和并发服务。这里附上源代码来个小结吧。 首先,循环网络服务器编程实现的步骤是这样的: 这种服务器模型是典型循环...
  • wjs1033
  • wjs1033
  • 2014年04月01日 14:21
  • 779

linux网络服务器

在本次中,学习了一个简单的基于TCP/IP的服务器/客户端。在例子中,利用的是AF_INET域。在linux下,最常用就是AF_INET,AF_UNIX. AF_UNIX是linux文件系统实现的本地...
  • u011619422
  • u011619422
  • 2015年11月23日 15:41
  • 248

《第五项修炼——学习型组织的艺术与实务》读后感

第五项修炼
  • yangbo085
  • yangbo085
  • 2013年12月23日 08:51
  • 918

网络服务器开发总结

一、概述 经过多年网络服务器开发实战,于此总结实践体会。本文涉及到异步连接、异步域名解析、热更新、过载保护与网络模型及协程等,但不会涉及到accept4、epoll等基本知识点。 二、可写事件...
  • soft2967
  • soft2967
  • 2014年09月23日 13:49
  • 4329
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux 网络服务器构架实务之三
举报原因:
原因补充:

(最多只允许输入30个字)