好久没写些博客了 刚刚找到工作,工作没几天就有幸参与了公司网站的拆分项目 今天就写这些东西 主要是用来熟悉下源码安装的过程 方便自己的记忆

142041595.png

项目名称:数据库以及应用的拆分

项目需求:由于网站的后台数据库的日益增长造成数据库过大 数据库的查询过程过慢 影响到公司的业务 基于索引的数据库优化已经起不到什么效果 基于这种现状 提出采用数据拆分 把网站中数据库与前端和后台平均拆分成5个子端 平均每个子端有4台服务器服务器操作系统采用lnmp架构 因为相比IIS lnmp架构能更稳定更高效的支持网站访问 支持高流量和高并发 此架构能保证公司业务的稳定性以及方便后续业务的扩展 因为此架构可能会出现单点故障 没有冗余措施 建议项目后续实现服务器的高可用 以及实现分布式监控项目对服务器及服务状态实现实时监控

项目功能:本项目数据库采用mysql 后台采用nginx+php+phpmyadmin实现后台管理 nginx在前端实现静态页面的请求回应和动态页面请求的转发 后端php+nginx负责处理动态页面的请求

版本号:nginx-1.1.5.tar.gz mysql-5.1.37.tar.gz php-5.5.3.tar.gz notice: 所有四台机器全部关闭防火墙(selinux)

本配置文档按照第一台为数据库 安装软件为Mysql 第二台为后台管理 安装软件为phpmyadmin+php+nginx 第三台为nginx 第四台为nginx+php

第一台主要功能为提供数据库支持 只需安装数据库就好 配置如下

cd /usr/src

tar fzxv mysql-5.1.37.tar.gz

cd mysql-5.1.37

yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel ssse2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers ncurses-devel

./configure --prefix=/usr/local/mysql --localstatedir=/var/lib/mysql --with-comment=Source --with-server-suffix=-Community --with-mysqld-user=mysql --without-debug --with-big-tables --with-charset=utf8 --with-collation=utf8_general_ci --with-extra-charsets=all --with-pthread --enable-static --enable-thread-safe-client --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --enable-assembler --without-ndb-debug --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock

make && make install

groupadd mysql

useradd -M mysql -s /sbin/nologin -g mysql

cp support-files/my-huge.cnf /etc/my.cnf

/usr/local/mysql/bin/mysql_install_db --user=mysql

chown -R root.mysql /usr/local/mysql/

echo "/usr/local/mysql/lib/mysql/" >> /etc/ld.so.conf

ldconfig

/usr/local/mysql/bin/mysqld_safe --user=mysql &

netstat -anpt | grep 3306

cp support-files/mysql.server /etc/init.d/mysqld

chmod +x /etc/init.d/mysqld

chkconfig --add mysqld

chkconfig mysqld on

service mysqld restart

export PATH=$PATH:/usr/local/mysql/bin/

echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile

service mysqld restart

mysql

>use mysql

>update user set password=PASSWORD("abc-123")where user="root";

> flush privileges;

> quit

service mysqld restart

mysql -uroot -pabc-123



第二台机器需要提供后台管理数据库功能 需要注意的是php在编译时需要提供mysqli模块的支持还要启用php-fpm的支持 由于php5.3以上已经提供Mysqli模块的支持 支持mysql native driver 只要yum安装mysql-devel就可以 配置如下

php部分

groupadd nginx

useradd nginx -g nginx

cd /usr/src

tar fzxv php-5.5.3.tar.gz

cd php-5.5.3

yum -y install libxml2-devel gcc automake autoconf libtool make gcc-c++ mysql-devel

./configure --prefix=/usr/local/php5 --with-config-file-path=/usr/local/path5/etc/ --with-libxml-dir=/usr/local/libxml2/ --enable-fpm --with-zlib-dir=/usr/local/lib --enable-soap --enable-sockets --enable-bcmath --enable-zip --enable-e-mbstring=all --with-mysql --with-mysqli --with-pdo-mysql

make

make test

make install

/usr/local/php5/bin/php -m 查看php中模块

fastcgi---配置

cd /usr/local/php5/etc/

cp php-fpm.conf.default php-fpm.conf

vi php-fpm.conf

user = nginx

group = nginx

(nginx/html目录下将具体虚拟目录的属主属组也改成nginx与nginx,保证PHP程序代码对该目录有读写权限.)

/usr/local/php5/sbin/php-fpm 启动

重启fpm:

# pkill php-fpm

# /usr/local/php5/sbin/php-fpm

加入开机启动:

# echo "/usr/local/php5/sbin/php-fpm" >> /etc/rc.local


nginx部分

cd /usr/src

tar fzxv nginx-1.1.5.tar.gz

cd nginx-1.1.5

yum -y install gcc openssl-devel pcre-devel pcre zlib-devel

./configure --prefix=/usr/local/nginx --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx --conf-path=/usr/local/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-pcre --with-http_gzip_static_module --with-http_stub_status_module

make && make install

vi /etc/init.d/nginx

#!/bin/bash

case "$1" in

start)

/usr/local/nginx/sbin/nginx 2>/dev/null

;;

stop)

/usr/local/nginx/sbin/nginx -s stop 2>/dev/null

;;

restart)

/usr/local/nginx/sbin/nginx -s reload 2>/dev/null

;;

esac

exit

chmod 777 /etc/init.d/nginx

配置nginx支持php-fastcgi

vi /usr/local/nginx/nginx.conf

worker_processes 1;

events {

worker_connections 1024;

}

http {

include mime.types;

default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

server {

root /usr/local/nginx/html;

listen 80;

server_name localhost;

location / {

root html;

index index.html index.php;

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

location ~ \.php$ {

root html;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;

include fastcgi_params;

}

}


}

vi /usr/local/nginx/html/index.php

<?php phpinfo(); ?>

拷贝myadmin文件夹到nginx的html目录下

http://ip/myadmin

出现phpmyadmin图片



第三台机器 主要功能为响应静态网页的请求和转发php网页的请求 配置如下

groupadd nginx

useradd nginx -g nginx

yum -y install openssl-devel pcre-devel pcre zlib-devel gcc automake autoconf libtool make gcc-c++

cd /usr/src

tar fzxv nginx-1.1.5.tar.gz

cd nginx-1.1.5

./configure --prefix=/usr/local/nginx --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx --conf-path=/usr/local/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-pcre --with-http_gzip_static_module --with-http_stub_status_module

make && make install

vi /etc/init.d/nginx

#!/bin/bash

case "$1" in

start)

/usr/local/nginx/sbin/nginx 2>/dev/null

;;

stop)

/usr/local/nginx/sbin/nginx -s stop 2>/dev/null

;;

restart)

/usr/local/nginx/sbin/nginx -s reload 2>/dev/null

;;

esac

exit

chmod 777 /etc/init.d/nginx

配置nginx支持转发php请求

vi /usr/local/nginx/nginx.conf

location ~ \.php$ {

proxy_pass http://第四台机器IP

}



第四台机器主要为解析php页面的请求 配置如下

nginx部分

groupadd nginx

useradd nginx -g nginx

yum -y install gcc openssl-devel pcre-devel pcre zlib-devel gcc automake autoconf libtool make gcc-c++

cd /usr/src

tar fzxv nginx-1.1.5.tar.gz

cd nginx-1.1.5

./configure --prefix=/usr/local/nginx --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx --conf-path=/usr/local/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-pcre --with-http_gzip_static_module --with-http_stub_status_module

make && make install

vi /etc/init.d/nginx

#!/bin/bash

case "$1" in

start)

/usr/local/nginx/sbin/nginx 2>/dev/null

;;

stop)

/usr/local/nginx/sbin/nginx -s stop 2>/dev/null

;;

restart)

/usr/local/nginx/sbin/nginx -s reload 2>/dev/null

;;

esac

exit

chmod 777 /etc/init.d/nginx

配置nginx支持php-fastcgi

vi /usr/local/nginx/nginx.conf

worker_processes 1;

events {

worker_connections 1024;

}

http {

include mime.types;

default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

server {

root /usr/local/nginx/html;

listen 80;

server_name localhost;

location / {

root html;

index index.html index.php;

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

location ~ \.php$ {

root html;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;

include fastcgi_params;

}

}


}

php的配置

cd /usr/src

tar fzxv php-5.5.3.tar.gz

cd php-5.5.3

yum -y install libxml2-devel

./configure --prefix=/usr/local/php5 --with-config-file-path=/usr/local/path5/etc/ --with-libxml-dir=/usr/local/libxml2/ --enable-fpm --with-zlib-dir=/usr/local/lib --enable-soap --enable-sockets --enable-bcmath --enable-zip --enable-e-mbstring=all

make

make test

make install

/usr/local/php5/bin/php -m 查看php中模块

fastcgi---配置

cd /usr/local/php5/etc/

cp php-fpm.conf.default php-fpm.conf

vi php-fpm.conf

user = nginx

group = nginx

(nginx/html目录下将具体虚拟目录的属主属组也改成nginx与nginx,保证PHP程序代码对该目录有读写权限.)

/usr/local/php5/sbin/php-fpm 启动

重启fpm:

# pkill php-fpm

# /usr/local/php5/sbin/php-fpm

加入开机启动:

# echo "/usr/local/php5/sbin/php-fpm" >> /etc/rc.local