思路:
搭建wordpress個人博客,nginx做動靜態文件分離,nginx處理靜態內容(本地)
動態內容由上游服務器php-fpm來完成
規劃:
nginx 反代後端 php-fpm 172.16.43.1
php-fpm,php-extentsion(memcache),php-extentsion(xcache) 172.16.43.2
mariadb 10 172.16.43.3
實現過程:
#nginx的安裝需要環境: gcc-c++,pcre,zlib,nginx . # i) 安裝gcc編譯器 yum -y install gcc-c++ . # ii) 安裝pcre tar xf pcre-8.33.tar.gz cd pcre-8.33 ./configure --prefix=/usr/local/pcre make && make install . # iii) 安裝zlib tar xf zlib-1.2.8.tar.gz cd zlib-1.2.8 ./configure --prefix=/usr/local/zlib make && make install . # iv) 安裝nginx tar xf nginx-1.5.7.tar.gz cd nginx-1.5.7 ./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/nginx --conf-path=/etc/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-pcre=/root/pcre-8.30 --with-zlib=/root/zlib-1.2.8 make && make install . # v) 爲nginx添加啓動腳本 # vim /etc/rc.d/init.d/nginx #!/bin/bash # nginx Startup script # chkconfig: - 85 15 # description: nginx Startup script # processname: nginx #pidfile: /var/local/nginx/nginx.pid #config: /usr/local/nginx/nginx.conf nginxd=/usr/local/nginx/nginx nginx_config=/etc/nginx/nginx.conf nginx_pid=/var/local/nginx/nginx.pid RETVAL=0 prog="nginx" . . /etc/rc.d/init.d/functions . /etc/sysconfig/network . [ ${NETWORKING} = "no" ] && exit 0 [ -x $nginxd ] || exit 0 . start() { if [ -e $nginx_pid ];then echo "nginx already running...." exit 1 fi echo -n $"Starting $prog: " daemon $nginxd -c ${nginx_config} RETVAL=$? echo [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx return $RETVAL } . stop() { echo -n $"Stopping $prog: " killproc $nginxd RETVAL=$? echo [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /var/run/nginx.pid } . reload() { echo -n $"Reloading $prog: " #kill -HUP `cat ${nginx_pid}` killproc $nginxd -HUP RETVAL=$? echo } . case "$1" in start) start ;; stop) stop ;; reload) reload ;; restart) stop start ;; status) status $prog RETVAL=$? ;; *) echo $"Usage: $prog {start|stop|restart|reload|status|help}" exit 1 esac exit $RETVAL . # vi) 爲nginx做配置處理 chmod a+x /etc/rc.d/init.d/nginx chkconfig nginx on useradd -r -s /sbin/nologin nginx -U . # vii) 配置規劃中的內容 vim /etc/nginx/nginx.conf ############## 配置文件開始 ################ user nginx; #啓動進程,一般和CPU數量一致 worker_processes 2; #[ debug | info | notice | warn | error | crit ] 錯誤日誌的級別及位置 error_log /var/log/nginx/error.log debug; #一個nginx進程打開的最多文件描述符數目,最好與ulimit -n的值保持一致 worker_rlimit_nofile 51200; events { #工作進程的最大連接數量,根據硬件調整 worker_connections 4096; #[ kqueue | rtsig | epoll | /dev/poll | select | poll ] 使用epoll(linux2.6的高性能方式) use epoll; } http { include mime.types; default_type application/octet-stream; # 內核直接返回請求,提升性能 sendfile on; # 保持長連接時間 keepalive_timeout 5; # 開啓gzip服務器壓縮功能 gzip on; server { listen 80; resolver www.king.com; add_header testserver $server_addr; location / { root /var/www/html; index index.html index.htm; } location ~* \.(jpg|png|gif|jpeg|js|css)$ { root /var/www/html; } location ~ \.php$ { # 這裏就是關鍵,root 這裏必須與上游服務器文件路徑對應 root /var/www/html; fastcgi_pass 172.16.43.2:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; include fastcgi_params; } } } . # vi) 替換fastcgi參數 # vim /etc/nginx/fastcgi_params fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name;
# i) 解決php安裝依賴 yum -y groupinstall "Desktop Platform Development" yum -y install libmcrypt-devel yum -y install bzip2-devel . # ii) 安裝php with fpm tar xf php-5.4.19.tar.bz2 cd php-5.4.19 ./configure --prefix=/usr/local/php --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --enable-fpm --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 make && make install . # iii) 爲php提供配置文件: cp php.ini-production /etc/php.ini . # iv) 配置php-fpm #爲php-fpm提供SysV init腳本,並將其添加至服務列表:sapi在源碼包下 cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm chmod +x /etc/rc.d/init.d/php-fpm chkconfig --add php-fpm chkconfig php-fpm on 爲php-fpm提供配置文件: cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf 編輯php-fpm的配置文件:vim /usr/local/php/etc/php-fpm.conf 配置fpm的相關選項爲你所需要的值,並啓用pid文件(如下最後一行): pid = /usr/local/php/var/run/php-fpm.pid listen = 172.16.43.2:9000
3. php拓展xache安裝(172.16.43.2)
# i) 安裝xcache tar xf xcache-3.1.0.tar.bz2 cd xcache-3.1.0 /usr/local/php/bin/phpize ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config make && make install # 安裝結束時,會出現類似如下行, 將後半句複製 Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/ . # ii) 編輯php.ini,整合php和xcache: # 首先將xcache提供的樣例配置導入php.ini mkdir /etc/php.d # xcache.ini文件在xcache的源碼目錄中。 cp xcache.ini /etc/php.d # 接下來編輯/etc/php.d/xcache.ini 修改爲如下: extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/xcache.so
4. php拓展memcache安裝(172.16.43.2)
# i) 安裝memcache tar xf memcache-2.2.7.tgz cd memcache-2.2.7 /usr/local/php/bin/phpize ./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config make && make install # 安裝結束時,會出現類似如下行, 將後半句複製 Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/memcache.so . # ii) 編輯/etc/php.ini,在“dynamically loaded extension”相關的位置添加如下一行來載入memcache擴展: extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/memcache.so . # iii) 重啓php-fpm服務 service php-fpm restart
5. MariaDB安裝與配置(172.16.43.3)
# i) 創建mysql的數據目錄 mkdir /data groupadd -r mysql useradd -g mysql -r -s /sbin/nologin -M -d /data mysql chown -R mysql:mysql /data . # ii) 安裝二進制mysql tar xf mysql-5.5.33-linux2.6-x86_64.tar.gz -C /usr/local cd /usr/local ln -sv mysql-5.5.33-linux2.6-x86_64 mysql cd mysql chown -R mysql:mysql . mysql/scripts/mysql_install_db --user=mysql --datadir=/data chown -R root . # 提供mysql的配置文件 cp support-files/my-large.cnf /etc/my.cnf # 需要添加如下行指定mysql數據文件的存放位置: datadir = /data . # iii) 爲mysql提供sysv服務腳本: cd /usr/local/mysql cp support-files/mysql.server /etc/rc.d/init.d/mysqld chmod +x /etc/rc.d/init.d/mysqld 添加至服務列表: chkconfig --add mysqld chkconfig mysqld on echo "export PATH=/usr/local/mysql/bin:$PATH" > /etc/profile.d/mysql.sh . /etc/profile.d/mysql.sh . # iv) 啓動服務並授權php服務器賬號訪問 service mysqld restart mysql grant all on *.* to 'wordpress'@'172.16.%.%' identified by '123456'; flush privileges;
6. 配置測試wordpress
將wordpress的源代碼分別拷貝到172.16.43.1與172.16.43.2對應目錄
(爲什麼是雙份這裏我們就可以理解了 :)
unzip wordpress-3.3.1-zh_CN.zip