CentOS源码编译安装Nginx

安装编译用到的软件:

  1. yum install glib2-devel openssl-devel pcre-devel bzip2-devel gzip-devel

现在到http://nginx.org/en/download.html下载最新版本的Nginx并安装。

  1. cd /usr/local/src
  2. wget http://nginx.org/download/nginx-1.0.4.tar.gz
  3. tar -zxvf nginx-0.7.65.tar.gz
  4. cd nginx-0.7.65
  5. ./configure
  6.     –user=nginx
  7.     –group=nginx
  8.     –prefix=/usr/share
  9.     –sbin-path=/usr/sbin/nginx
  10.     –conf-path=/etc/nginx/nginx.conf
  11.     –error-log-path=/var/log/nginx/error.log
  12.     –http-log-path=/var/log/nginx/access.log
  13.     –pid-path=/var/log/run/nginx.pid
  14.     –lock-path=/var/log/lock/subsys/nginx
  15.     –with-http_ssl_module
  16.     –with-http_realip_module
  17.     –with-http_addition_module
  18.     –with-http_sub_module
  19.     –with-http_dav_module
  20.     –with-http_flv_module
  21.     –with-http_gzip_static_module
  22.     –with-http_stub_status_module
  23.     –with-http_perl_module
  24.     –with-mail
  25.     –with-mail_ssl_module
  26. make
  27. make install

更多的编译选项请参考:http://wiki.nginx.org/NginxInstallOptions
为Nginx建立用户

  1. /usr/sbin/useradd -c "Nginx user" -s /bin/false -r -d /var/lib/nginx nginx

运行Nginx

  1. /usr/sbin/nginx

配置文件在:

  1. /etc/nginx/nginx.conf
  1. echo "NGINX_CONF_FILE=/etc/nginx/nginx.conf" > /etc/sysconfig/nginx

Lighttpd虚拟主机配置

为了在Lighttpd增加一个额外的站点lighttpd.example.com,我们只需在lighttpd.conf配置文件中加入如下代码:

  1. $HTTP["host"] == "lighttpd.example.com" {
  2.   server.document-root = "/home/bizhat/lighttpd.example.com/"
  3.   server.errorlog = "/var/log/lighttpd/lighttpd_error.log"
  4.   accesslog.filename = "/var/log/lighttpd/lighttpd_access.log"
  5.   server.error-handler-404   = "/img/nohotlink.gif"
  6. }

CentOS安装主机控制面板DTC(Domain Technologie Control)

什么是DTC

Domain Technologie Control (DTC) 是一个用在商业主机的控制面板。管理员使用一个Web图形用户界面来管理所有主机服务。DTC可以授权用户为他们自己的域名创建子域名,电子邮件,ssh,数据库,邮件列表和FTP帐户。
DTC管理包含所有主机信息的一个MySQL数据库,配置你的服务器的服务和应用程序来为用户提供虚拟主机服务(DTC可以兼容大部分的程序)。它也可以连接dtc-xen来管理和监控VPS的使用情况,提供一般的帐单服务(包括独立服务器的帐单),集成了服务记录等等。
DTC也可以仅仅是一个适用于各种系统的控制面板,由于它仅配置了可用的软件包在上面,甚至胜过商业解决方案。
总之,如果你使用网站,DNS,FTP或邮件主机,DTC是你日常管理服务器必备的主机软件。

DTC兼容的软件

网站服务

  • Apache – Web服务器
  • Mod-log-sql – 服务器日志(特殊的实时带宽版本)
  • PHP – 运行php脚本
  • Sbox – 包装CGI脚本(包括perl服务)
  • Webalizer – Web统计
  • Awstat – Web统计
  • Visitors – Web统计

邮件服务

  • QMail – MTA(邮件传输代理)
  • Postfix – MTA(邮件传输代理)
  • Cyrus – 发送,存储,POP3和IMAP
  • Dovecot – POP3和IMAP4服务器
  • Courier pop, imap & maildrop – MTA(邮件传输代理)
  • Amavis – 邮件病毒扫描软件
  • Clamav – 防病毒邮件扫描软件
  • SpamAssassin – 防垃圾邮件扫描软件
  • MLMMJ – 邮件列表管理器
  • MHonArc – 邮件列表归档

其它服务

  • ISC Bind 8 or 9 – DNS服务器
  • MySQL – 数据库服务器
  • ProFTPD – Ftp服务器
  • Pure-ftpd – Ftp服务器
  • Tucows OpenSRS – API注册
  • NCFTP (ncftput) – Ftp上传(多使用在网络备份)
  • NSSMysql – 为虚拟主机提供SSH访问
  • Paypal – 支付网关
  • eNETS – 支付网关
  • Maxmind – 反欺诈服务

虚拟化技术

  • Xen – 虚拟机

安装DTC

1、设置RPMForge软件库
32位系统

  1. # wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
  2. # rpm -ivh rpmforge-release-0.3.6-1.el5.rf.i386.rpm

64位系统

  1. # wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
  2. # rpm -ivh rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm

更新系统

  1. # yum update

2、设置DTC软件库

  1. # vi /etc/yum.repos.d/gplhost.repo

加入如下代码

  1. [gplhost-archspecific]
  2. name=GPLHost (architecture-specific)
  3. #baseurl=ftp://ftparchive.gplhost.com/yum/centos/$releasever/RPMS/$basearch/
  4. mirrorlist=http://ftparchive.gplhost.com/yum/centos/$releasever/RPMS/$basearch/mirrorlist
  5. gpgcheck=1
  6. enabled=1
  7. gpgkey=ftp://ftp.gplhost.com/yum/RPM-GPG-KEY
  8.  
  9. [gplhost-noarch]
  10. name=GPLHost (architecture-independent)
  11. #baseurl=ftp://ftparchive.gplhost.com/yum/centos/$releasever/RPMS/noarch/
  12. mirrorlist=http://ftparchive.gplhost.com/yum/centos/$releasever/RPMS/noarch/mirrorlist
  13. gpgcheck=1
  14. enabled=1
  15. gpgkey=ftp://ftp.gplhost.com/yum/RPM-GPG-KEY

3、安装DTC

  1. # yum install dtc-postfix-courier

或者

  1. # yum install dtc-core

根据你要安装多少依赖服务。dtc-core旨在安装更少可能的依赖服务,所以你仅只有一个可工作的环境:一个Web服务器,没有其它邮件系统。dtc-postfix-courier是你想使用所有DTC支持的软件包时安装。
4、完全合格的主机名
为你的服务器设置一个合格的主机名(像devops.webres.wang),检查是否已经设置(使用hostname命令查看),如果没有请到/etc/sysconfig/network修改,再到/etc/hosts设置解析IP。
5、SELinux和防火墙
使用命令system-config-securitylevel(如果找不到此命令,用yum install system-config-securitylevel安装)来关闭SELinux和防火墙
6、MySQL安全设置

  1. # vi /etc/my.cnf

更改成如下设置:

  1. connect_timeout=300
  2. wait_timeout=1800

启动MySQL

  1. /sbin/service mysqld start

设置MySQL密码

  1. /usr/bin/mysqladmin -u root password ‘replace-me-with-a-secure-password’

7、启动所有程序

  1. service httpd start
  2.    service crond start
  3.    service postfix start
  4.    service clamd start
  5.    service amavisd start
  6.    service rsyslog start
  7.    service mysqld start
  8.    service courier-authlib start
  9.    service courier-imap start
  10.    service dkimproxy start
  11.    service pure-ftpd start
  12.    sa-update
  13.    service spamassassin start
  14.    service saslauthd start

8、DTC配置
到/etc/php.ini设置安装模式(safe mode)为关闭状态。
之后执行命令配置DTC

  1. /usr/share/dtc/admin/install/install

启动httpd

  1. service httpd start

一些调整

1、Squirrelmail纠错

  1. /usr/share/squirrelmail/config/conf.pl

键入D字母,选择courier,然后执行以下命令:

  1. chown dtc /etc/squirrelmail/*

如果你在Squirrelmail看见如下错误:
ERROR: Could not complete request.
Query: CREATE “Sent”
Reason Given: Invalid mailbox name.
你需要在/etc/squirrelmail/config_local.php注释一些代码,如下:

  1. #$default_folder_prefix         = ‘.’;

2、Pure-FTPd无法启动
因为上面使用的是yum安装Pure-FTPd,可能由于某些原因无法启动,先删除pure-ftpd:

  1. yum remove pure-ftpd

再编译安装pure-ftpd,参考:CentOS源码编译安装Pure-FTPd
控制面板
控制面板
官方网站:http://www.gplhost.com/software-dtc.html

CentOS源码编译安装Lighttpd

安装必要的软件

  1. yum -y install glib2-devel openssl-devel pcre-devel bzip2-devel gzip-devel
  2. yum -y install gamin
  3. yum -y install gamin-devel
  4. yum -y install gcc gcc-c++

安装Lighttpd

http://www.lighttpd.net/下载最新版,现在最新版是1.4.28。

  1. cd /usr/local/src
  2. wget http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.28.tar.gz
  3. tar -zxvf lighttpd-1.4.28.tar.gz
  4. cd lighttpd-1.4.28
  5. make clean && make distclean
  6. ./configure –with-fam
  7. make
  8. make install

配置Lighttpd

  1. sed -e ‘s/FOO/lighttpd/g’ doc/rc.lighttpd.redhat > /etc/init.d/lighttpd
  2. chmod 755 /etc/init.d/lighttpd
  3. echo "LIGHTTPD_CONF_PATH=/etc/lighttpd/lighttpd.conf" > /etc/sysconfig/lighttpd
  4. install -Dp ./doc/lighttpd.conf /etc/lighttpd/lighttpd.conf
  5. chkconfig lighttpd on

创建符号链接

  1. ln -s /usr/local/sbin/lighttpd /usr/sbin/lighttpd

为Lighttpd建立用户和用户组

  1. groupadd lighttpd
  2. adduser -m -g lighttpd -d /var/www -s /sbin/nologin lighttpd

为Lighttpd建立文件夹和设置所有权

  1. mkdir /var/log/lighttpd
  2. chown lighttpd:lighttpd /var/log/lighttpd

修改配置文件

  1. vi /etc/lighttpd/lighttpd.conf

启动Lighttpd

  1. service lighttpd start

设置根目录文件夹

  1. server.document-root        = "/srv/www/htdocs/"

设置用户名和组

  1. perl -i -p -e ‘s/#server.username            = "wwwrun"/server.username            = "lighttpd"/g;’ /etc/lighttpd/lighttpd.conf
  2. perl -i -p -e ‘s/#server.groupname           = "wwwrun"/server.groupname           = "lighttpd"/g;’ /etc/lighttpd/lighttpd.conf

设置pid文件

  1. server.pid-file            = "/var/run/lighttpd.pid"

配置Apache指定任意文件夹运行perl

1、编辑Apache配置文件httpd.conf,加入如何代码:

  1. AddHandler cgi-script .cgi
  2. AddHandler cgi-script .pl

2、设置根目录的perl执行权限。

  1. <Directory /home/user/public_html/>
  2.         Options Indexes FollowSymLinks MultiViews
  3.         AllowOverride All
  4.         Order allow,deny
  5.         allow from all
  6. </Directory>

找到

  1. Options Indexes FollowSymLinks MultiViews

替换为

  1. Options All

3、虚拟主机配置例子

  1. <VirtualHost 67.228.104.123:80>
  2. DocumentRoot /var/www/cgi-bin/
  3. ServerName git.bizhat.com
  4. CustomLog /var/log/httpd/git.bizhat.com.log combined
  5. AddHandler cgi-script .cgi
  6. <Directory "/var/www/cgi-bin/">
  7.     AllowOverride None
  8.     Options All
  9.     Order allow,deny
  10.     Allow from all
  11. </Directory>
  12. </VirtualHost>

CentOS源码编译安装Apache

找到最新版下载链接

http://httpd.apache.org/download.cgi找到最新版下载链接,现在最版稳定版链接是:
http://labs.renren.com/apache-mirror//httpd/httpd-2.2.19.tar.gz

开始安装Apache

  1. cd /usr/local/src
  2. wget http://labs.renren.com/apache-mirror//httpd/httpd-2.2.19.tar.gz
  3. tar -zxvf httpd-2.2.19.tar.gz
  4. cd httpd-2.2.19
  5. ./configure –prefix=/usr/local/apache –enable-vhost-alias –enable-rewrite –enable-info
  6. make
  7. make install

更多的configure选项可参考http://httpd.apache.org/docs/2.2/programs/configure.html

复制初始化文件和设置Apache开机启动

  1. cp build/rpm/httpd.init /etc/init.d/httpd
  2. chmod 755 /etc/init.d/httpd
  3. chkconfig –add httpd
  4. chkconfig –level 35 httpd on

创建符号链接

  1. cd /etc
  2. mv httpd httpd_old
  3. ln -s /usr/local/apache/ httpd
  4. cd /usr/sbin/
  5. ln -fs /usr/local/apache/bin/httpd
  6. ln -fs /usr/local/apache/bin/apachectl
  7. cd /var/log
  8. rm -rf httpd/
  9. ln -s /usr/local/apache/logs httpd
  10. /etc/init.d/httpd start

启动/停止服务

  1. service httpd restart
  2. service httpd start
  3. /usr/local/apache/bin/apachectl start
  4. /usr/local/apache/bin/apachectl stop
  5. /usr/local/apache/bin/apachectl status
  6. /etc/init.d/httpd start
  7. /etc/init.d/httpd stop
  8. /etc/init.d/httpd restart

使用pgrep查找启动的进程。

  1. pgrep httpd

Apache配置文件

  1. vi /usr/local/apache/conf/httpd.conf

MySQL常用命令大全

下面是我们经常会用到且非常有用的MySQL命令。下面你看到#表示在Unix命令行下执行命令,看到mysql>表示当前已经登录MySQL服务器,是在mysql客户端执行mysql命令。
登录MySQL,如果连接远程数据库,需要用-h指定hostname。

  1. # [mysql dir]/bin/mysql -h hostname -u root -p

创建一个数据库。

  1. mysql> create database [databasename];

列出所有数据库。

  1. mysql> show databases;

切换到一个数据库。

  1. mysql> use [db name];

显示一个数据库的所有表。

  1. mysql> show tables;

查看数据表的字段格式。

  1. mysql> describe [table name];

删除一个数据库。

  1. mysql> drop database [database name];

删除一个数据表。

  1. mysql> drop table [table name];

显示一个数据表的所有数据。

  1. mysql> SELECT * FROM [table name];

返回指定数据表的各列信息。

  1. mysql> show columns from [table name];

使用值“whatever”过滤显示选定的某些行。

  1. mysql> SELECT * FROM [table name] WHERE [field name] = "whatever";

显示所有包含name为”Bob”和phone number为“3444444”的记录。

  1. mysql> SELECT * FROM [table name] WHERE name = "Bob" AND phone_number = ‘3444444’;

显示所有不包含name为”Bob”和phone number为“3444444”的记录,并以phone_number字段排序。

  1. mysql> SELECT * FROM [table name] WHERE name != "Bob" AND phone_number = ‘3444444’ order by phone_number;

显示所有的name以字母“bob”开头和phone number为“3444444”的记录。

  1. mysql> SELECT * FROM [table name] WHERE name like "Bob%" AND phone_number = ‘3444444’;

显示name以字母“bob”开头和phone number为“3444444”的第1至第5条记录。

  1. mysql> SELECT * FROM [table name] WHERE name like "Bob%" AND phone_number = ‘3444444’ limit 1,5;

使用正则表达式查找记录。使用“正则表达式二进制”强制区分大小写。此命令查找以a开头的任何记录。

  1. mysql> SELECT * FROM [table name] WHERE rec RLIKE "^a";

返回唯一不同的记录。

  1. mysql> SELECT DISTINCT [column name] FROM [table name];

以升序或降序显示选定的记录。

  1. mysql> SELECT [col1],[col2] FROM [table name] ORDER BY [col2] DESC;

返回行数。

  1. mysql> SELECT COUNT(*) FROM [table name];

统计指定列值的总和。

  1. mysql> SELECT SUM(*) FROM [table name];

联结表。

  1. mysql> select lookup.illustrationid, lookup.personid,person.birthday from lookup left join person on lookup.personid=person.personid=statement to join birthday in person table with primary illustration id;

新建一个用户。以root登录。切换到mysql数据库,创建用户,刷新权限。

  1. # mysql -u root -p
  2. mysql> use mysql;
  3. mysql> INSERT INTO user (Host,User,Password) VALUES(‘%’,’username’,PASSWORD(‘password’));
  4. mysql> flush privileges;

从unix命令行更改用户密码。

  1. # [mysql dir]/bin/mysqladmin -u username -h hostname.blah.org -p password ‘new-password’

从mysql命令行更改用户密码。以root登录,设置密码,更新权限。

  1. # /etc/init.d/mysql stop
  2. # mysqld_safe –skip-grant-tables &
  3. # mysql -u root
  4. mysql> use mysql;
  5. mysql> update user set password=PASSWORD("newrootpassword") where User=’root’;
  6. mysql> flush privileges;
  7. mysql> quit
  8. # /etc/init.d/mysql stop
  9. # /etc/init.d/mysql start

root密码为空时,设置root密码。

  1. # mysqladmin -u root password newpassword

更新root密码。

  1. # mysqladmin -u root -p oldpassword newpassword

允许用户“bob”从localhost以密码“passwd”连接服务器。以root登录,切换mysql数据库。设置权限,更新权限。

  1. # mysql -u root -p
  2. mysql> use mysql;
  3. mysql> grant usage on *.* to bob@localhost identified by ‘passwd’;
  4. mysql> flush privileges;

为数据库db设置权限。以root登录,切换到mysql数据库,授予权限,更新权限。

  1. # mysql -u root -p
  2. mysql> use mysql;
  3. mysql> INSERT INTO db (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv) VALUES (‘%’,’databasename’,’username’,’Y’,’Y’,’Y’,’Y’,’Y’,’N’);
  4. mysql> flush privileges;

或者

  1. mysql> grant all privileges on databasename.* to username@localhost;
  2. mysql> flush privileges;

更新已存在表的数据。

  1. mysql> UPDATE [table name] SET Select_priv = ‘Y’,Insert_priv = ‘Y’,Update_priv = ‘Y’ where [field name] = ‘user’;

删除表中[field name] = ‘whatever’的行。

  1. mysql> DELETE from [table name] where [field name] = ‘whatever’;

更新数据库的权限/特权。

  1. mysql> flush privileges;

删除列。

  1. mysql> alter table [table name] drop column [column name];

新增列到db。

  1. mysql> alter table [table name] add column [new column name] varchar (20);

更改列名。

  1. mysql> alter table [table name] change [old column name] [new column name] varchar (50);

增加唯一的列。

  1. mysql> alter table [table name] add unique ([column name]);

设置列值大点。

  1. mysql> alter table [table name] modify [column name] VARCHAR(3);

删除唯一列。

  1. mysql> alter table [table name] drop index [colmn name];

导入一个CSV文件到表。

  1. mysql> LOAD DATA INFILE ‘/tmp/filename.csv’ replace INTO TABLE [table name] FIELDS TERMINATED BY ‘,’ LINES TERMINATED BY ‘n’ (field1,field2,field3);

导出所有数据库到sql文件。

  1. # [mysql dir]/bin/mysqldump -u root -ppassword –opt >/tmp/alldatabases.sql

导出一个数据库。

  1. # [mysql dir]/bin/mysqldump -u username -ppassword –databases databasename >/tmp/databasename.sql

从一个数据库导出一个表。

  1. # [mysql dir]/bin/mysqldump -c -u username -ppassword databasename tablename > /tmp/databasename.tablename.sql

从sql文件还原数据库(数据表)。

  1. # [mysql dir]/bin/mysql -u username -ppassword databasename < /tmp/databasename.sql

创建数据表例1。

  1. mysql> CREATE TABLE [table name] (firstname VARCHAR(20), middleinitial VARCHAR(3), lastname VARCHAR(35),suffix VARCHAR(3),officeid VARCHAR(10),userid VARCHAR(15),username VARCHAR(8),email VARCHAR(35),phone VARCHAR(25), groups VARCHAR(15),datestamp DATE,timestamp time,pgpemail VARCHAR(255));

创建数据表例2。

  1. mysql> create table [table name] (personid int(50) not null auto_increment primary key,firstname varchar(35),middlename varchar(50),lastnamevarchar(50) default ‘bato’);

Linux MySQL主从复制(Replication)(MySQL数据同步)配置

当我们要做负载均衡的时候,我们必须考虑三个问题:
1、智能DNS的使用;
智能DNS我们可以用DNSPod来解决,看这篇文章:怎样用DNSPod做负载均衡
2、文件的同步;
而文件的同步可以通过rsync软件来解决,看这篇文章:rsync服务器架设
3、MySQL数据库的同步。
剩下是MySQL数据库的同步了,这节我们就来解决这个问题。
继续阅读Linux MySQL主从复制(Replication)(MySQL数据同步)配置

怎样用DNSPod做负载均衡?

1、什么是负载均衡?
在大型的网络应用中,使用多台服务器提供同一个服务是常有的事。平均分配每台服务器上的压力、将压力分散的方法就叫做负载均衡。
[利用DNSPod来实现服务器流量的负载均衡,原理是“给网站访问者随机分配不同ip”]

2、什么情况下会用到负载均衡?
如果你有多台服务器,需要将流量分摊到各个服务器,那就可以利用DNSPod来做负载均衡。

3、怎样设置和使用负载均衡?
下图的例子是:有3台联通服务器、3台电信服务器,要实现“联通用户流量分摊到3台联通服务器、其他用户流量分摊到电信服务器”这个效果的设置
FAQ

4、负载均衡的常见问题
(1)我只有多台电信服务器(或者网通服务器),该如何填写?
添加记录的时候,选择线路类型为默认即可。
(2)DNS轮询的时候,IP是如何给出的?流量是完全平均的么?
IP是随机给出的。由于访问者访问的资源不同,流量是不可能做到完全平均的。

Linux split命令实例

你曾经是否想要把一个大文件分割成多个小文件?比如一个5gb日志文件,我们需要把它分成多个小文件,这样我们才有可能使用普通的文本编辑器读取它。有时我们需要传输20gb的大文件到另一台服务器,这就需要我们把它分割成多个文件,这样便于传输数据。下面我们来通过五个实例来讲解它。
继续阅读Linux split命令实例