源碼安裝構建網站架構

好久沒寫些博客了 剛剛找到工作,工作沒幾天就有幸參與了公司網站的拆分項目 今天就寫這些東西 主要是用來熟悉下源碼安裝的過程 方便自己的記憶

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章