Rootop 服务器运维与web架构

2014-04-01
发表者 Venus
暂无评论

mariadb简介及安装

mariadb简介及安装:

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB来代替MySQL的InnoDB。 MariaDB由MySQL的创始人
Michael Widenius主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自
Michael Widenius的女儿Maria的名字。

MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了Percona的 XtraDB,InnoDB的变体,分支的开发者希望提供访问即将到来的MySQL 5.4 InnoDB性能。这个版本还包括了
PrimeBase XT (PBXT) 和 FederatedX存储引擎。

MariaDB直到5.5版本,均依照MySQL的版本。因此,使用MariaDB5.5的人会从MySQL 5.5中了解到MariaDB的所有功能。

MariaDB默认的存储引擎是Maria,不是MyISAM。Maria可以支持事务,但是默认情况下没有打开事务支持,因为事务支持对性能会有影响。

与 MySQL 相比较,MariaDB 更强的地方在于:
Maria 存储引擎
PBXT 存储引擎
XtraDB 存储引擎
FederatedX 存储引擎
更快的复制查询处理
线程池
更少的警告和bug
运行速度更快
更多的 Extensions (More index parts, new startup options etc)
更好的功能测试
数据表消除
慢查询日志的扩展统计
支持对 Unicode 的排序

相对于MySQL最新的版本5.6来说,在性能、功能、管理、NoSQL扩展方面,MariaDB包含了更丰富的特性。比如微秒的支持、线程池、子查询优化、组提交、进度报告等。
官网:www.mariadb.org
目前稳定版:mariadb-5.5.36
下载地址:http://mirrors.neusoft.edu.cn/mariadb/mariadb-5.5.36/kvm-tarbake-jaunty-x86/mariadb-5.5.36.tar.gz

安装bison:
[root@localhost bison-2.5]# ./configure
[root@localhost bison-2.5]# make && make install

安装cmake:
[root@localhost cmake-2.8.10.2]# ./configure
[root@localhost cmake-2.8.10.2]# gmake
[root@localhost cmake-2.8.10.2]# make install

安装mariadb:

[root@localhost mariadb-5.5.36]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb -DMYSQL_UNIX_ADDR=/tmp/mariadb.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/usr/local/mariadb/data -DMYSQL_USER=mysql
[root@localhost mariadb-5.5.36]# make && make install
[root@localhost mariadb]# cp support-files/my-medium.cnf /etc/my.cnf
[root@localhost mariadb]# cp support-files/mysql.server /etc/init.d/mysqld
[root@localhost mariadb]# chmod 755 /etc/init.d/mysqld
[root@localhost mariadb]# chown -R root.mysql /usr/local/mariadb/
[root@localhost mariadb]# chown -R mysql /usr/local/mariadb/data/
[root@localhost mariadb]# /usr/local/mariadb/scripts/mysql_install_db --basedir=/usr/local/mariadb/ --datadir=/usr/local/mariadb/data/ --user=mysql

[root@localhost mariadb]# service mysqld start
Starting MySQL… [确定]
[root@localhost mariadb]# lsof -i:3306
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
mysqld 10996 mysql 15u IPv6 109597 TCP *:mysql (LISTEN)

[root@localhost ~]# /usr/local/mariadb/bin/mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.36-MariaDB-log Source distribution

Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

MariaDB [(none)]> show engines;
+——————–+———+—————————————————————————-+————–+——+————+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+——————–+———+—————————————————————————-+————–+——+————+
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| InnoDB | DEFAULT | Percona-XtraDB, Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| Aria | YES | Crash-safe tables with MyISAM heritage | NO | NO | NO |
+——————–+———+—————————————————————————-+————–+——+————+
7 rows in set (0.00 sec)

MariaDB [(none)]>

2014-03-31
发表者 Venus
暂无评论

更改数据库默认引擎和编码(utf-8)

添加或修改为红色部分:

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
default-storage-engine=InnoDB
default-character-set=utf8
init_connect='SET NAMES utf8'
symbolic-links=0

[client]
default-character-set=utf8


[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid




mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

mysql> show engines;
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| Engine     | Support | Comment                                                    | Transactions | XA   | Savepoints |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                      | NO           | NO   | NO         |
| CSV        | YES     | CSV storage engine                                         | NO           | NO   | NO         |
| MyISAM     | YES     | Default engine as of MySQL 3.23 with great performance     | NO           | NO   | NO         |
| InnoDB     | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES          | YES  | YES        |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables  | NO           | NO   | NO         |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
5 rows in set (0.00 sec)

mysql>

2014-03-28
发表者 Venus
暂无评论

利用DDoS deflate减轻ddos攻击

DDoS deflate是一款免费的用来防御和减轻DDoS攻击的脚本。它通过netstat监测跟踪创建大量网络连接的IP地址,在检测到某个结点超过预设的限制时,该程序会通过APF或IPTABLES禁止或阻挡这些IP.

安装DDoS deflate
wget http://www.inetbase.com/scripts/ddos/install.sh  //下载DDoS deflate
chmod 0700 install.sh //添加权限
./install.sh //执行

配置DDoS deflate

下面是DDoS deflate的默认配置位于/usr/local/ddos/ddos.conf ,默认如下:

##### Paths of the script and other files
PROGDIR=”/usr/local/ddos”
PROG=”/usr/local/ddos/ddos.sh”
IGNORE_IP_LIST=”/usr/local/ddos/ignore.ip.list” //IP地址白名单
CRON=”/etc/cron.d/ddos.cron” //定时执行程序
APF=”/etc/apf/apf”
IPT=”/sbin/iptables”

##### frequency in minutes for running the script
##### Caution: Every time this setting is changed, run the script with –cron
##### option so that the new frequency takes effect
FREQ=1 //检查时间间隔,默认1分钟

##### How many connections define a bad IP? Indicate that below.
NO_OF_CONNECTIONS=150 //最大连接数,超过这个数IP就会被屏蔽,一般默认即可

##### APF_BAN=1 (Make sure your APF version is atleast 0.96)
##### APF_BAN=0 (Uses iptables for banning ips instead of APF)
APF_BAN=1 //使用APF还是iptables。推荐使用iptables,将APF_BAN的值改为0即可。

##### KILL=0 (Bad IPs are’nt banned, good for interactive execution of script)
##### KILL=1 (Recommended setting)
KILL=1 //是否屏蔽IP,默认即可

##### An email is sent to the following address when an IP is banned.
##### Blank would suppress sending of mails
EMAIL_TO=”root” //当IP被屏蔽时给指定邮箱发送邮件,推荐使用,换成自己的邮箱即可

##### Number of seconds the banned ip should remain in blacklist.
BAN_PERIOD=600 //禁用IP时间,默认600秒,可根据情况调整

用户可根据给默认配置文件加上的注释提示内容,修改配置文件。

2014-03-28
发表者 Venus
暂无评论

RabbitMQ在linux下的安装

目前最新版本下载:
http://www.rabbitmq.com/releases/rabbitmq-server/v3.2.4/rabbitmq-server-3.2.4.tar.gz
http://www.erlang.org/download/otp_src_R16B03-1.tar.gz

[root@localhost ~]# tar otp_src_R16B03-1.tar.gz
[root@localhost ~]# cd otp_src_R16B03-1
[root@localhost otp_src_R16B03-1]# yum install -y ncurses ncurses-devel
[root@localhost otp_src_R16B03-1]# ./configure
[root@localhost otp_src_R16B03-1]# make
[root@localhost otp_src_R16B03-1]# make install
测试:

[root@localhost otp_src_R16B03-1]# erl
Erlang R16B03-1 (erts-5.10.4)  [64-bit] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V5.10.4  (abort with ^G)
1> halt().
[root@localhost otp_src_R16B03-1]#
erlang完成。

[root@localhost ~]# tar zxvf rabbitmq-server-3.2.4.tar.gz
[root@localhost ~]# cd rabbitmq-server-3.2.4
[root@localhost rabbitmq-server-3.2.4]# make
[root@localhost rabbitmq-server-3.2.4]# make install

在make install的时候得到一个报错:
echo “Put your EZs here and use rabbitmq-plugins to enable them.” > plugins/README
rm -f plugins/rabbit_common*.ez
Please set TARGET_DIR.
Please set SBIN_DIR.
Please set MAN_DIR.
Please set DOC_INSTALL_DIR.
make: *** [install_dirs] 错误 1

说让添加环境变量,解决方法:
[root@localhost rabbitmq-server-3.2.4]# export TARGET_DIR=/usr/local/rabbitmq
[root@localhost rabbitmq-server-3.2.4]# export SBIN_DIR=/usr/local/rabbitmq/sbin
[root@localhost rabbitmq-server-3.2.4]# export MAN_DIR=/usr/local/rabbitmq/man
[root@localhost rabbitmq-server-3.2.4]# export DOC_INSTALL_DIR=/usr/local/rabbitmq/doc

重新make install又得到一个错误:
/bin/sh: xmlto: command not found
/bin/sh: line 2: xmlto: command not found
make: *** [docs/rabbitmqctl.1.gz] 错误 127
安装xmlto命令,yum install -y xmlto

重新make install完成。

配置rabbitMQ:
设置日志与消息持久化目录:
[root@localhost ~]# mkdir /var/log/rabbitmq
[root@localhost ~]# mkdir /var/lib/rabbitmq

[root@localhost ~]# ln -s /usr/local/rabbitmq/sbin/rabbitmq-server /usr/bin/rabbitmq-server
[root@localhost ~]# ln -s /usr/local/rabbitmq/sbin/rabbitmq-env /usr/bin/rabbitmq-env
[root@localhost ~]# rabbitmq-server &

RabbitMQ 3.2.4. Copyright (C) 2007-2013 GoPivotal, Inc.
## ## Licensed under the MPL. See http://www.rabbitmq.com/
## ##
########## Logs: /var/log/rabbitmq/rabbit@localhost.log
###### ## /var/log/rabbitmq/rabbit@localhost-sasl.log
##########
Starting broker… completed with 0 plugins.

查看服务状态:
[root@localhost ~]# lsof -i:5672
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
beam 25276 root 13u IPv6 73960 0t0 TCP *:amqp (LISTEN)

关闭rabbitmq服务:
[root@localhost ~]# cd /usr/local/rabbitmq/sbin/
[root@localhost sbin]# ./rabbitmqctl stop
Stopping and halting node rabbit@localhost …
…done.
[root@localhost sbin]# lsof -i:5672
[1]+ Done ./rabbitmq-server
[root@localhost sbin]# lsof -i:5672
[root@localhost sbin]#

启动web管理工具:
[root@localhost sbin]# ./rabbitmq-plugins enable rabbitmq_management
Error: {cannot_write_enabled_plugins_file,”/etc/rabbitmq/enabled_plugins”,
enoent}
[root@localhost sbin]# mkdir /etc/rabbitmq
[root@localhost sbin]# ./rabbitmq-plugins enable rabbitmq_management
The following plugins have been enabled:
mochiweb
webmachine
rabbitmq_web_dispatch
amqp_client
rabbitmq_management_agent
rabbitmq_management
Plugin configuration has changed. Restart RabbitMQ for changes to take effect.

[root@localhost sbin]# lsof -i:15672
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
beam 25589 root 16u IPv4 74702 0t0 TCP *:15672 (LISTEN)
关闭管理工具用:
[root@localhost sbin]# ./rabbitmq-plugins disable rabbitmq_management

通过访问http://192.168.0.5:15672/ 用户名密码guest访问即可。

2014-03-28
发表者 Venus
暂无评论

windows下安装rabbitMQ服务

MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。
应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们。
消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,
直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。
队列的使用除去了接收和发送应用程序同时执行的要求。其中较为成熟的MQ产品有IBM WEBSPHERE MQ。

MQ的消费-生产者模型的一个典型的代表,一端往消息队列中不断的写入消息,而另一端则可以读取或者订阅队列中的消息。
MQ和JMS类似,但不同的是JMS是SUN JAVA消息中间件服务的一个标准和API定义,而MQ则是遵循了AMQP协议的具体实现和产品。

在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省
了服务器的请求响应时间,从而提高了系统的吞吐量。

rabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。

官方下载地址:http://www.rabbitmq.com/download.html                                                     官方安装文档:http://www.rabbitmq.com/install-windows-manual.html

rabbitMQ使用erlang语言编写,所以先安装erlang。
erlang官网下载:http://www.erlang.org/download.html

安装ERLANG:
ERLANG分为32和64位两种,根据系统来决定使用哪个版本。安装的时候直接双击下一步,默认安装即可。
安装完以后erlang会自动修改系统变量,但是需要重启系统才能生效,所以这里需要手动设置一下系统变量略过重启过程。

C:\Users\Administrator>set ERLANG_HOME=C:\Program Files\erl5.10.4
C:\Program Files\erl5.10.4 为你erlang的安装路径

启动rabbitMQ服务:
从开始菜单中,找到rabbitMQ,点击RabbitMQ Service – start 启动即可。

如果不设置,在启动rabbitmq管理工具的时候会报一个错误:
C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.2.4\sbin>rabbitmq-plugins.bat enable rabbitmq_management

******************************
ERLANG_HOME not set correctly.
******************************

Please either set ERLANG_HOME to point to your Erlang installation or place the
RabbitMQ server distribution in the Erlang lib folder.

再次启动rabbitmq管理工具:
C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.2.4\sbin>rabbitmq-plugins.bat enable rabbitmq_management
The following plugins have been enabled:
mochiweb
webmachine
rabbitmq_web_dispatch
amqp_client
rabbitmq_management_agent
rabbitmq_management
Plugin configuration has changed. Restart RabbitMQ for changes to take effect.

查看端口状态:
C:\Users\Administrator>netstat -an | find “5672”
TCP 0.0.0.0:5672 0.0.0.0:0 LISTENING
TCP 0.0.0.0:15672 0.0.0.0:0 LISTENING
TCP 0.0.0.0:55672 0.0.0.0:0 LISTENING
TCP [::]:5672 [::]:0 LISTENING

然后可以通过http://192.168.0.123:15672/ 用户名密码都是guest登陆。
如果没有发现监听15672端口,从开始菜单找到RabbitMQ停掉RabbitMQ Server服务,再启动一下即可。
rabbitMQ安装完成。