很久没写些博客了 刚刚找到工做,工做没几天就有幸参与了公司网站的拆分项目 今天就写这些东西 主要是用来熟悉下源码安装的过程 方便本身的记忆 php
项目名称:数据库以及应用的拆分html
项目需求:因为网站的后台数据库的日益增加形成数据库过大 数据库的查询过程过慢 影响到公司的业务 基于索引的数据库优化已经起不到什么效果 基于这种现状 提出采用数据拆分 把网站中数据库与前端和后台平均拆分红5个子端 平均每一个子端有4台服务器服务器操做系统采用lnmp架构 由于相比IIS lnmp架构能更稳定更高效的支持网站访问 支持高流量和高并发 此架构能保证公司业务的稳定性以及方便后续业务的扩展 由于此架构可能会出现单点故障 没有冗余措施 建议项目后续实现服务器的高可用 以及实现分布式监控项目对服务器及服务状态实现实时监控前端
项目功能:本项目数据库采用mysql 后台采用nginx+php+phpmyadmin实现后台管理 nginx在前端实现静态页面的请求回应和动态页面请求的转发 后端php+nginx负责处理动态页面的请求mysql
版本号:nginx-1.1.5.tar.gz mysql-5.1.37.tar.gz php-5.5.3.tar.gz notice: 全部四台机器所有关闭防火墙(selinux)linux
本配置文档按照第一台为数据库 安装软件为Mysql 第二台为后台管理 安装软件为phpmyadmin+php+nginx 第三台为nginx 第四台为nginx+phpnginx
第一台主要功能为提供数据库支持 只需安装数据库就好 配置以下c++
cd /usr/srcsql
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