nginx + php-fpm + 虚拟主机及负载均衡的搭建
By:0x584A Date:2015年11月22日 22:48:36
1 前言
今天运气不太好,在做测试的时候CentOS镜像挂了,随后VM10虚拟机软件了抽风了。折腾了一早上
并没什么X用,google上的各种方法都尝试了一遍,结果我不说了。我给它跪了。
我这暴脾气简直不能忍,上阿里云上买了台ECS,CentOS 7.0 64位。懒得在花费大把的时间去装系统
什么的了。刚好也让我复习下LNMP环境搭建。
话说LNMP一键安装包很强大,额.. 等以后有时间再去试试。
2 nginx 的安装
以前都没试过yum安装(因为是在虚拟机下嘛),所以nginx的安装我就直接用yum装得了。阿里云的1Mbps还算给力。
因为镜像已经自带资源库了。所以就不手动增加了,直接运行命令安装。
yum install nginx
安装完成后,默认路径如下:
默认配置文件地址:/etc/nginx/nginx.conf 默认首页地址:/usr/share/nginx/html/index.html
安装好以后将 nginx 加入系统服务:
service nginx status
再测试一下 nginx 的配置文件:
nginx -t
回显:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
好了! 启动完成后,我们只需要打开浏览器输入本地查看是否正常显示即可。
3 Mysql的安装
mysql 我选择的是源码安装,因为个人比较喜欢把安装的软件指定到 /usr/local/ 这个目录下,
要是yum再将其安装至 /etc 目录… 呵呵..
再次之前我先安装个vsftpd,并建立一个useradd 用户 用于方便上传本地下载的源码包。因为那1Mbps的网络从官网克隆过来
实在太坑了,我还不如自个传。
我安装的mysql版本是 mysql-5.5.44,先增加一个mysql组:
groupadd mysql
虽后新增加一个mysql用户 用于对mysql的操作 并将其加入至mysql组中
useradd mysql -g mysql
将上传上的源码包解压,并进入其目录:
tar -zxvf mysql-5.5.44.tar.gz
cd mysql-5.5.44
配置mysql编译选项,指定安装路径及支持的字符集
./configure —prefix=/usr/local/mysql —with-charset=utf8 —with-extra-charsets=gbk,gb2312,binary
随后遍历安装即可
make && make install
配置并初始化mysql
cp support-files/my-medium.cnf /etc/my.cnf
cd /usr/local/mysql
初始化数据库
./bin/mysql_install_db —user=mysql —datadir=/usr/local/mysql/data
为了安全,把所有文件修改为root用户所有, (对mysql进行降权)
chown -R root .
把data目录修改为mysql用户所有
chown -R mysql data
chgrp -R mysql .
启动mysql服务
bin/mysqld_safe —user=mysql &
测试服务器,并设置mysql root用户密码
mysql>use mysql
mysql>update user set password=PASSWORD(‘password’) where user=’root’
清空权限缓存,使更改立即生效。
flush privileges
在为mysql加上个软链接,OK完美搞定!
4 安装PHP-fpm
依然是源码安装,先解压源码包
tar -zxvf php-5.3.28.tar.gz
安装
cd php-5.3.28
./configure —prefix=/usr/local/php —enable-fpm && make && make install
修改php-fpm配置文件
cd /usr/local/php/etc
cp php-fpm.conf.default php-fpm.conf
启动服务
cd ../sbin
./php-fpm
查看下是否启动了
ps aux | grep php-fpm
5 配额虚拟主机
http { # 第一个虚拟主机 server { # 监听的IP和端口 listen 127.0.0.1:80; # 主机名称 及域名 server_name localhost; # 访问日志文件存放路径 access_log logs/server1.access.log combined; location / { # 默认的首页文件,顺序从左到右 index index.html index.htm # html网页文件存放的目录 root /usr/www/blog; } } }
6 搭建负载均衡(轮循)
什么是负载均衡呢?
负载均衡是由多台服务器以对称的方式组合成一个服务器集合,每天服务器都具有等价的地位,
都可以单独对外提供服务而无需其他服务器辅助。通过某种负载分担技术,将外部发送过来的请求
均匀分配到对称构造中的某一台服务器上。
先在网站根目录下建立两个测试用的站点,并生成测试用的index.html页面。
随后在nginx的配置文件中进行如下配额(记得cp一份做备份,养成好习惯):
cp nginx.conf nginx.conf.bak
这时的负载均衡已经生效了,我们打开页面看看。
原页面:
重启nginx后的页面:
如果我们对页面不断的强制刷新时,会发现页面内容出现了更改:
好了!到此负载均衡已经搭建好了。是不是挺简单呢? 那么问题来了,服务器怎么存储我的会话呢(比如Session)?
7 负载均衡(轮循)
其实也很简单,只需要在upstream段中加上一句代码即可。这样当我们请求页面时,会持续对一台服务器进行会话,
其会话不会切换至另外一台服务器。
vim 打开 nginx.conf 文件找到html块,添加一句:ip_hash;
upstream backend{ # 一次性哈希 默认走轮循 ip_hash; server 127.0.0.1:81; server 127.0.0.1:82; }
原文始发于微信公众号(一个人的安全笔记):nginx+php-fpm+虚拟主机及负载均衡的搭建
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论