2.CentOs安装

2.1.CentOs是什么

CentOS(Community Enterprise Operating System,中文意思是:社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。两者的不同,在于CentOS并不包含封闭源代码软件。

2.2.虚拟一台裸机


2.3.配置虚拟裸机


2.4.安装过程

centos 常用软件 centos做什么用_centos 常用软件


centos 常用软件 centos做什么用_mysql_02


centos 常用软件 centos做什么用_Nginx_03


centos 常用软件 centos做什么用_nginx_04


centos 常用软件 centos做什么用_Nginx_05


centos 常用软件 centos做什么用_nginx_06

centos 常用软件 centos做什么用_nginx_07

2.5.安装完成后配置

centos 常用软件 centos做什么用_mysql_08

备份

root/itsource itsoruce/itsource

2.6.远程访问

2.6.1.检查网络首先得确保虚拟机和宿主机直接能够ping通,并且服务器端安装了sshd服务,并防火墙没有拦截。

开启网络

centos 常用软件 centos做什么用_Nginx_09

宿主机和虚拟机能够相互ping通

如果虚拟机没办法访问宿主机,肯能宿主机防火墙没有关闭。

centos 常用软件 centos做什么用_mysql_10

能访问外网
使用浏览器访问百度

2.6.2.远程连接

1、先在虚拟机验证是否已安装sshd

在虚拟机本地终端执行,ssh localhost

centos 常用软件 centos做什么用_nginx_11


Centos默认就已经安装了ssh协议的服务端-openssh

2、在宿主机连接虚拟机

Putty+winscp+xshell

如果连接不上请关闭防火墙
查看防火墙状态
service iptables status
关闭防火墙
service iptables stop

3.应用部署优化

3.1.为什么要部署优化

原来的部署情况

centos 常用软件 centos做什么用_mysql_12


问题1:tomcat + jdk + mysql + pss部署在一台?

方案:分布式服务、集群

问题2:pss:html,css,js,image,jsp,action,tomcat处理html,css,js等静态资源效率不够高

方案:动静分离

3.2.分布式优化

分布式是指将不同的业务分布在不同的地方. web应用和数据库服务分开.

centos 常用软件 centos做什么用_mysql_13


3.3.集群优化

集群指的是将几台服务器集中在一起,实现同一业务。 数据库集群和应用集群

3.3.1. 两大关键特性
集群提供了以下两个关键特性:
1、可扩展性--集群的性能不限于单一的服务实体,新的服务实体可以动态地加入到集群,从而增强集群的性能。动态添加服务器
2、高可用性--集群通过服务实体冗余使客户端免于轻易遇到out of service的警告。在集群中,同样的服务可以由多个服务实体提供。如果一个服务实体失败了,另一个服务实体会接管失败的服务实体。集群提供的从一个出错的服务实体恢复到另一个服务实体的功能增强了应用的可用性
当访问的服务器挂了时,集群要有能力找可以正常使用额服务器继续提供服务器。
3.3.2. 两大能力
为了具有可扩展性和高可用性特点,集群的必须具备以下两大能力:
1、负载均衡--负载均衡能把任务比较均衡地分布到集群环境下的计算和网络资源。
2、错误恢复--由于某种原因,执行某个任务的资源出现故障,另一服务实体中执行同一任务的资源接着完成任务。这种由于一个实体中的资源不能工作,另一个实体中的资源透明的继续完成任务的过程叫错误恢复。
当访问的服务器挂了时,集群要有能力找可以正常使用额服务器继续提供服务器。

负载均衡和错误恢复都要求各服务实体中有执行同一任务的资源存在,而且对于同一任务的各个资源来说,执行任务所需的信息视图(信息上下文)必须是一样的。

3.3.3.负载均衡

英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务.

我们需要做web和db集群,接下来我们看一下集群架构。

Web: apache nginx lvs等 mysql:mysql proxy等

centos 常用软件 centos做什么用_Linux_14


3.4.集群问题

3.4.1.问题

1)Session

2)缓存

3)图片等静态资源文件

3.4.2.优化

4.Nginx
4.1.Nginx简介
4.1.1.什么是nginx
Nginx(发音为“engine X”)是俄罗斯人编写的十分轻量级的HTTP服务器,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器。Nginx是由俄罗斯人 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发的,它已经在该站点运行超过两年半了。Igor Sysoev在建立的项目时,使用基于BSD许可。自Nginx 发布来,Nginx 已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。

Nginx是一个高性能、低消耗,稳定的HTTP服务器和反向代理服务器。

4.1.2.Nginx的优点

1.高并发连接:

官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数。

2.内存消耗少:

在3万并发连接下,开启的10个Nginx 进程才消耗150M内存(15M*10=150M)。

3.配置文件非常简单:

风格跟程序一样通俗易懂。

4.成本低廉:

Nginx为开源软件,可以免费使用。而购买F5 BIG-IP、NetScaler等硬件负载均衡交换机则需要十多万至几十万人民币。

5.支持Rewrite重写规则:

能够根据域名、URL的不同,将 HTTP 请求分到不同的后端服务器群组。

6.内置的健康检查功能(心跳检查询问法):

如果 Nginx Proxy 后端的某台 Web 服务器宕机了,不会影响前端访问。

7.节省带宽:

支持 GZIP 压缩,可以添加浏览器本地缓存的 Header 头。

8.稳定性高:

用于反向代理,宕机的概率微乎其微

4.1.3.哪里使用到nginx

Nginx所占市场份额不断提升:

centos 常用软件 centos做什么用_Linux_15


国内有企业有哪些在使用nginx服务器:

国内使用Nginx的网站:新浪、网易、腾讯、酷六、水木社区、豆瓣、六房间、小米等

技术论坛:iteye,51cto,…

4.1.4.Nginx和apache对比

Nginx和Apache一样,都是一个HTTP服务器软件,功能实现上都采用模块化结构设计,都支持通用的语言接口,如PHP、Perl、Python等,同时还支持正、反向代理,虚拟主机,URL重写,压缩传输,SSL加密传输等。它们之间最大的差别是Apache处理速度很慢,且占用很多内存资源,而Nginx却恰恰相反;在功能实现上,Apache的所有模块都支持动、静态编译,而Nginx模块都是静态编译的,同时,Apache对Fcgi支持不好,而Nginx对Fcgi的支持非常的好;最重要的是,在处理连接方式上,Nginx支持epoll,而Apache却不支持;在大小上,Nginx安装包仅仅有几百K,和Nginx比起来Apache绝对是庞然大物。在了解了Nginx和Apache之间的异同点后基本知道了Nginx作为HTTP服务器的优势所在。

4.2.基本操作

4.2.1.编译安装

安装之前必须上传软件包

Ngnix的安装实际上,就是把C语言源码包编译为软件包,所以需要C编译环境。

1)C语言编译环境

解压缩nginx-1.9.9.tar.gz至/usr/local/src

tar -zxvf xxx.tar.gz

指定编译到哪个路径:

cd nginx-1.9.9

./configure --prefix=/usr/local/nginx 报错没有C编译环境

centos 常用软件 centos做什么用_Nginx_16

准备一个C编译环境(Ubuntu apt,centos yum)
yum install gcc gcc-c++ ncurses-devel perl
yum -y install make gcc gcc-c++ ncurses-devel
yum -y install zlib zlib-devel
yum -y install openssl openssl–devel
yum install -y pcre-devel
2)安装
手动创建安装目录:
mkdir /usr/local/nginx
配置安装目录:
cd /usr/local/src/nginx-1.9.9
./configure --prefix=/usr/local/nginx
安装,一定要在源码包根目录下执行:
make && make install
4.2.2.启动ngnix服务
启动服务
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
访问主页http://localhost

如果需要远程访问,就需要关闭防火墙
service iptables stop -停止防火墙
service iptables status -查看状态
service iptables start -启动防火墙
4.2.3.重启服务
1)什么时候需要重启,当修改了配置文件时需要重新启动/usr/local/nginx/sbin/nginx -s reload

2)杀死原来的服务
查看Nginx主进程号
ps -ef | grep “nginx: master process” | grep -v “grep” | awk -F ’ ’ ‘{print $2}’
6302
执行以下命令即可使修改过的Nginx配置文件生效
kill 6302
kill -9 pid表示暴力停止进程

2)再次启动服务

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

3)通过端口号找到进程号
1、lsof -i:端口号
2、netstat -tunlp|grep 端口号

4.2.4.测试配置文件修改是否正确
一般修改了配置文件都需要测试配置文件的修改是否正确.
/usr/local/nginx/sbin/nginx -t

vi 文件名
如果修改 : i -> 修改 -> esc -> :wq
i -> 修改 -> esc -> 不想修改:q!
如果查看 : 退出 :q

如果屏幕显示以下两行信息,说明配置文件正确:

centos 常用软件 centos做什么用_Linux_17


验证成功后必须做的操作才能生效

4.3.Ngnix负载均衡操作

Ngnix的一个作用就是把动态的网页交给tomcat服务器处理,而自己处理静态页面。

实际环境中一台nginx需要转发到tomcat的个数不确定,并且每台tomcat由于硬件的不一致他支持的连接也是不一样的,这就需要nginx均衡的分发到不同的tomcat,这就需要配置niginx的负载均衡。

4.3.1.nginx负载均衡简介

1)负载均衡策略

nginx 的 upstream目前支持 5种方式的分配

1)、轮询(默认),默认

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

2)、weight

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

3)、ip_hash

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

4)、fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

5)、url_hash(第三方)

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

2)配置负载均衡简介

在http节点里添加:

#定义负载均衡设备的 ip及设备状态

upstream myServer {

server 127.0.0.1:9090 down;

server 127.0.0.1:8080 weight=2;

server 127.0.0.1:6060;

server 127.0.0.1:7070 backup;

}

在需要使用负载的server节点下添加

proxy_pass http://myServer;

upstream 每个设备的状态:
down 表示单前的server暂时不参与负载
weight 默认为1.weight越大,负载的权重就越大。
max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
fail_timeout:max_fails 次失败后,暂停的时间。
backup(备机): 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻

注意:upstream中不要以http://开头

使用localhost 127.0.0.1切换看效果

4.3.2.单台配置

centos 常用软件 centos做什么用_mysql_18


Jdk使用默认 nginx已经安装,还差tomcat,需上传文件。proxy_pass http://localhost:8080;#tomcat交给Nginx处理:

centos 常用软件 centos做什么用_mysql_19


4.3.3.多台配置

1)部署图

centos 常用软件 centos做什么用_Nginx_20


JRE使用默认,Ngnix已经安装完成。还差两个tomcat,并且把请求均衡的转发给两个tomat。

2)Tomcat部署(2个)

拷贝原来的Tomcat

centos 常用软件 centos做什么用_nginx_21


分别修改server.xml

把端口改为没有是使用的端口,如8006。

<Connector port=“8080” protocol=“HTTP/1.1” cnotallow="20000"redirectPort=“8443” /> 把端口改为没有是使用的端口,如8082。

把端口改为没有是使用的端口,如8092。

测试

http://localhost:8080http://localhost:8090 3)Nginx集成tomcat

upstream myServer{

server localhost:8080;

server localhost:8090;

}

} proxy_pass http://myServer;#交给tomcat集群处理
![在这里插入图片描述]()

5.本机部署Ngnix+Tomcat+PSS

5.1.引入

前面只是模拟了部署,接下来我们实实在在安装pss的部署,部署图(不考虑负载均衡)如下:

centos 常用软件 centos做什么用_nginx_22


5.2.上传所需文件

Jdk(使用默认) mysql(在线安装) tomcat nginx(已安装) pss软件包 pss.sql

准备软件包及Sql
5.3.安装mysql并导入pss.sql
5.3.1.在线安装
1)卸载mysql
查看该操作系统上是否已经安装了mysql数据库
rpm -qa | grep mysql 
查看刚安装好的mysql-server的版本
rpm -qi mysql-server
卸载掉原有mysql
rpm -e mysql   // 普通删除模式
rpm -e --nodeps mysql // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除
2)安装
yum install -y mysql-server mysql mysql-deve
3)启动和重启
启动msql
安装完mysql数据库以后,会发现会多出一个mysqld的服务,这个就是咱们的数据库服 务,我们通过输入 service mysqld start 命令就可以启动我们的mysql服务
重启mysql
service mysqld restart
4)安装

5.3.2.安装完成后配置
1)设置密码
mysql数据库安装完以后只会有一个root管理员账号,但是此时的root账号还并没有为其设置密码,需要设置密码。
mysqladmin -u root password ‘admin’ 通过该命令给root账号设置密码为admin

此时可以通过 mysql -u root -padmin 命令来登录我们的mysql数据库了

2)开机自启动

查看mysql服务是不是开机自动启动

chkconfig --list | grep mysqld

centos 常用软件 centos做什么用_centos 常用软件_23


发现mysqld服务并没有开机自动启动,

可以通过 chkconfig mysqld on 命令来将其设置成开机启动,

centos 常用软件 centos做什么用_mysql_24


这样就不用每次都去手动启动了

Mysql安装完成后,默认的字符集不是utf-8所以我们需要修改字符集

总结:

查看是否已经安装:

rpm -qa | grep mysql

安装:

yum install -y mysql-server mysql mysql-deve

启动:

service mysqld start

设置root密码:

mysqladmin -u root password ‘admin’

访问:mysql -uroot -padmin

开机自启动:

查看是否已设置

chkconfig --list | grep mysqld

设置开机自启动

chkconfig mysqld on

查看是否已设置

chkconfig --list | grep mysqld

5.3.3.修改字符集
1)查看字符集
在修改字符集之前,我们先来 查看字符集:
查看MYSQL字符集:
mysql>show variables like ‘character%’;
退出mysql:exit,

不是我们想要的格式utf-8所以需要修改,其实字符编码是以配置文件的方式存在,所以我们只需要修改配置文件重启mysql就ok了.
2)修改配置文件
/etc/my.cnf 修改以下两个部分就ok

1、找到[client] 添加(没有需要自己添加):

#默认字符集为utf8

default-character-set=utf8

2、找到[mysqld] 添加:(注意空格对你的影响)

#默认字符集为utf8

default-character-set=utf8

#设定连接mysql数据库时使用utf8编码,以让mysql数据库为utf8运行

init_cnotallow=‘SET NAMES utf8’

3)重启mysql

service mysqld restart

centos 常用软件 centos做什么用_Nginx_25


4)查看是否修改成功

查看MYSQL字符集:show variables like ‘character%’;

5.3.4.导入pss.sql数据到mysql

导入具体的脚本之前,需要创建对应的数据库。

创建数据库

登录mysql数据库

mysql -uroot -padmin

创建一个pss的数据库

drop database if exists pss;

create database pss default charset utf8;

导入pss数据:

注意导入命令不需要在数据库默认,所以需要退出数据库模式

退出数据库默认:

exit

导入:

mysql -uroot -padmin pss</home/itsource/下载/pss.sql

查看导入是否成功:

进入pss数据库

mysql -uroot -padmin

use pss;

查看记录验证

select * from employee limit 0,5;

mysql> GRANT ALL ON . TO mike@‘192.168.%.%’ IDENTIFIED BY ‘123456’
mysql> FLUSH PRIVILEGES;

5.4.部署pss到tomcat

部署:解压pss.zip到tomcat ROOT下面:

删除ROOT下面所有的内容

centos 常用软件 centos做什么用_mysql_26


接压缩pss.zip

unzip pss.zip -d /usr/local/tomcat2/webapp/ROOT/

测试:
重启Tomcat
./shutdown.sh
./startup.sh
浏览器测试:
localhost:8080测试
5.5.集成Nginx
修改为单机模式
proxy_pass http://localhost:8080;#tomcat交给Nginx处理: