三台主机
l 用户访问server的主机名,进入论坛
l server11 的论坛数据分布式存储在server12,13的drbd上。
l server12,server13对数据库用heartbeat实现高可用,
sever11:172.25.88.11
sever12:172.25.88.12
sever13:172.25.88.13
vip:172.25.88.100
从官网下载源码包,解压。
tarzxf nginx-1.10.3.tar.gz
cdnginx-1.10.3
vimauto/cc/gcc
179 #CFLAGS="$CFLAGS -g"
注释179行,去掉debug模式编译,编译以后程序只有几百k哦
vim src/core/nginx.h
14 #define NGINX_VER "nginx/"
为了安全,这样编译后外界无法获取程序的版本号
开始编译~~~~~~~
cdnginx-1.10.3
./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module--with-http_sub_module
安装包解决依赖性。。。。。
yum install gcc -y
yum install pcre-devel -y
yum install openssl-devel -y
//yum install zlib-devel -y
make && make install
为了方便实用nginx,创建软链接,也就是快捷方式~
ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/bin/
因为之前在auto/cc/gcc,去掉debug模式编译,编译以后程序就是981k!
cd /usr/local/nginx/
dh -sh
981K
因为我的server1是4核cpu,所以配置文件应该这样写~
vim /usr/local/lnmp/nginx/conf/nginx.conf
user nginx nginx;
worker_processes auto; 指定工作衍生进程数
worker_cpu_affinity 0001 0010 0100 1000;
events {
use epoll; linux内核模型,使用高效网络I/O模型
worker_connections 1024;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf;
}
检验
检测配置文件并启动nginx,可以看到nginx已经在80端口工作啦!
ps ax可以观察当前nginx进程,没错就是4个
在真机浏览器访问server11的IP
外界看不到我的nginx版本~~~
说明
nginx常用命令
nginx -t 检验nginx配置
nginx 开启nginx
nginx -s reload 重载nginx
nginx -s stop 停止nginx
upstream反向代理
epoll 异步非阻塞 快
7层支持端口映射??4??
内核最大文件描述符:
tarjxf php-5.6.20.tar.bz2
./configure --prefix=/usr/local/lnmp/php--with-config-file-path=/usr/local/lnmp/php/etc --with-openssl --with-snmp--with-gd --with-zlib --with-curl --with-libxml-dir --with-png-dir--with-jpeg-dir --with-freetype-dir --without-pear --with-gettext --with-gmp--enable-inline-optimization --enable-soap --enable-ftp --enable-sockets--enable-mbstring --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx--with-mcrypt --with-mhash --with-mysql --with-mysqli --with-pdo-mysql--enable-mysqlnd
装包解决依赖性~
rpm -ivh libmcrypt-2.5.8-9.el6.x86_64.rpm libmcrypt-devel-2.5.8-9.el6.x86_64.rpm
rpm -ivh re2c-0.13.5-1.el6.x86_64.rpm
yum provides libjpeg 不知道软件包的时候可以这样查询
yum provides libx /*easy.h
yum install libxml2-devel -y
yum install libcurl-devel -y
yum install libpng-devel-1.2.49-1.el6_2.x86_64 -y
yum install libpng-turbo-devel.x86_64 -y
yum install freetype-devel -y
yum install gmp-devel -y
yum install net-snmp-devel -y
make && make install
配置php
cd /mnt/php-5.6.20
cp php.ini-production /usr/local/lnmp/php/etc/php.ini
cd /usr/local/lnmp/php/etc/
cp php-fpm.conf.default php-fpm.conf
cd /mnt/php-5.6.20/sapi/fpm/
cp init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
vim /etc/init.d/php-fpm 查看php启动脚本
cd /usr/local/lnmp/php/etc/
vim php-fpm.conf
25 pid = run/php-fpm.pid
vimphp.ini
1001 pdo_mysql.default_socket=/usr/local/lnmp/mysql/data/mysql.sock
1150 mysql.default_socket =/usr/local/lnmp/mysql/data/mysql.sock
1209 mysqli.default_socket = /usr/local/lnmp/mysql/data/mysql.sock
/etc/init.d/php-fpm start
vim /usr/local/nginx/conf/nginx.conf
51 index index.php index.html index.htm;
让index.php作为默认发布目录
71 location ~ \.php$ {
72 root html;
73 fastcgi_pass 127.0.0.1:9000;
74 fastcgi_index index.php;
75 fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
76 include fastcgi.conf;
77 }
vim /usr/local/lnmp/nginx/html/index.php
<?php
phpinfo()
?>
nginx -s reload
结果:在浏览器访问172.25.88.11出现phpinfo页面
源码安装drbd,可以查看链接
http://12059878.blog.51cto.com/12049878/1908395
装包解决依赖性
yum install cmake-2.8.12.2-4.el6.x86_64.rpm
rm -rf CMakeCache.txt: 每yum一次就要删除配置文件
yum install -y ncurses-devel*
yum install gcc-c++ -y
//yum install bison -y
根据提示信息,装包解决依赖性
1.安装相应的devel包
2。简单装包
3.不知道某个依赖关系在哪个安装包中,可以使用 provides */ 名称来查找
make && make install
漫长的等待,有进度条提示,还算人性化嗷。。。
chownmysql data/ -R 让mysql用户有写权限
groupadd -g 27 mysql
useradd -u 27 -g 27 mysql -s /bin/bash -d /usr/local/lnmp/mysql/data/
说明
1.保证与之前的mysql没有冲突,本机只有一个mysql lib包
[root@server11 support-files]# rpm -qa |grep mysql
mysql-libs-5.1.71-1.el6.x86_64
2.添加环境变量,在任何路径下都可以使用/usr/local/lnmp/mysql/bin/下的命令
vim ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin/
或者可以
ln -s /usr/local/lnmp/mysql/bin/mysqld/usr/local/bin/
ln -s /usr/local/lnmp/mysql/bin/mysql/usr/local/bin/
3.查看mysqld的参数
mysqld --help --verbose
cd /usr/local/lnmp/mysql/support-files
cp my-default.cnf /etc/my.cnf
cp mysql.server /etc/init.d/mysqld
mysql的初始化
查看mysqld的参数
mysqld --help --verbose
mysqld --initialize --user=mysql --basedir=/usr/local/lnmp/mysql/--datadir=/usr/local/lnmp/mysql/data
ifHEGE8tqKZ*q 出现初始密码
/etc/init.d/mysqld start
初始化时,要保证数据目录为空
[root@server12 mysql]# which mysql
/usr/local/bin/mysql
mysql -p
进入数据库,更改数据库密码后,就能进行正常工作了
alter user root@localhost identified by ‘westos+007‘;
show databases;
1.移动数据库的数据到drbd
cd/etc/ha.d/
vimharesources
server12.lalala.comIPaddr::172.25.88.100/24/eth0 drbddisk::lalala Filesystem::/dev/drbd1::/usr/local/lnmp/mysql/data::ext4mysqld
/usr/local/lnmp/mysql/data 是数据库存放数据的位置
vimha.f 按照惯例配置
特别要注意 253行的lib64
server11:
unzip Discuz_X3.2_SC_UTF8.zip -d /usr/local/nginx/html/
cd /usr/local/nginx/html
mv upload/ bbs
chmod 777 data/ -R
chmod 777 config -R
chmod 777 uc_* -R
cd lnmp/mysql/
chmod 755 data/
真机在游览器访问172.25.88.11/bbs
数据库服务器名填写vip (server12,13上的)
出现错误,这是因为数据库没有添加远程用户!!
创建远程数据库用户
在数据库中创建远程用户,并给予权限,flush
CREATE USER root@’%’ identified by ‘westos’;
grant all privileges on discus.* to root@’%’;
最后一步,进入管理员页面,会有错误提示
根据提示
cd/usr/local/lnmp/nginx/html/bbs/install/
rm -rf index.php
管理员页面就可以正常工作啦~
成果检验
启动heartbeat前保证server12,server13:
drbd均为secondary模式
mysql均为关闭模式
/etc/init.d/heartbeart start
IP,drbd,mysql全部启动了呢~~
传说中的接管~takeover
创建新用户
在后台数据库中的pre_commom_member中看到我的用户们~~~
在真机浏览器输入访问论坛,发个帖,让新用户评论一下哟~
在后台数据库的pre_forum_post 表中可以查看到,搭建成功哈哈哈~~~
本文出自 “12049878” 博客,谢绝转载!
原文:http://12059878.blog.51cto.com/12049878/1908851