很久沒寫些博客了 剛剛找到工做,工做沒幾天就有幸參與了公司網站的拆分項目 今天就寫這些東西 主要是用來熟悉下源碼安裝的過程 方便本身的記憶 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