摘要信息 | IP地址 | 做用 | 系統版本 |
---|---|---|---|
Nginx | 192.168.2.128 | 負載均衡,反向代理 | CentOS7.2 |
Apache+PHP5.6.36 | 192.168.2.129 | 解析wordpress,phpmyadmin動態頁面 | CentOS7.2 |
Nginx+PHP5.6.36 | 192.168.2.130 | 解析wordpress,phpmyadmin動態頁面 | CentOS7.2 |
Nginx+MySQL | 192.168.2.133 | 解析靜態頁面,提供MySQL數據庫 | CentOS7.2 |
本次博客涉及全部程序包提供:連接:https://pan.baidu.com/s/1-xBK6Ti5IL_KxyQNjzKd1A
提取碼:1ano php
1. 禁用iptables,selinux,配置epel源 2. 安裝開發工具包 Centos7: yum groupinstall "Development Tools" Centos6: yum groupinstall "Development Tools" "Server Platform Development"
安裝pcre正則支持及openssl支持: [root@nginx ~]# yum -y install pcre-devel openssl-devel [root@nginx ~]# useradd -r nginx 編譯參數: [root@nginx nginx-1.14.2]# ./configure --prefix=/usr/local/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_flv_module --with-http_mp4_module --with-threads --with-file-aio [root@nginx nginx-1.14.2]# make && make install 配置PATH: [root@nginx nginx-1.14.2]# echo "export PATH=/usr/local/nginx/sbin:$PATH" >> /etc/profile.d/nginx.sh [root@nginx nginx-1.14.2]# . /etc/profile.d/nginx.sh 配置nginx目錄: [root@nginx nginx-1.14.2]# mkdir -p /data/nginx
(1) apr-1.50 [root@ap apr-1.5.0]# ./configure --prefix=/usr/local/apr [root@ap apr-1.5.0]# make -j 4&& make install (2) apr-util-1.5.3 [root@ap apr-util-1.5.3]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr [root@ap apr-util-1.5.3]# make -j 4&& make install (3) httpd-2.4.38 [root@ap httpd-2.4.38]# yum install pcre-devel openssl-devel worker,event模塊: [root@ap httpd-2.4.38]# ./configure --prefix=/usr/local/apache24 --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=event 注意:--with-mpm=xxx ##apahce有三種模型prefork,worker,event根據須要填寫,可是須要注意的是若是是worker/event那麼編譯php時則須要添加 --enable-maintainer-zts 參數 [root@ap httpd-2.4.38]# make -j 4 && make install [root@ap httpd-2.4.38]# echo "export PATH=/usr/local/apache24/bin:$PATH" >> /etc/profile.d/apache24.sh [root@ap httpd-2.4.38]# . /etc/profile.d/apache24.sh 添加php支持,準備測試頁: [root@ap httpd-2.4.38]# vim /etc/httpd/httpd.conf ... AddType application/x-httpd-php .php ##添加對.php文件的支持 AddType application/x-httpd-php-source .phps <IfModule dir_module> DirectoryIndex index.html index.php ##配置默認識別主文件 </IfModule> Options Indexes FollowSymLinks ##註釋掉這一行,禁止顯示apache目錄表 ... 配置php測試頁面,配置遠端數據庫的鏈接信息 [root@ap httpd-2.4.38]# vim /usr/local/apache24/htdocs/index.php <?php // 當數據庫鏈接正常頁面輸出OK,不然Failure $conn = mysql_connect('192.168.2.133','wordpress','123'); if ($conn) echo "OK"; else echo "Failure"; phpinfo(); ?> ### 啓動腳本:CentOS6複製epel安裝腳本修改便可,7先用apachectl來管理 [root@ap httpd-2.4.38]# apachectl start 編譯安裝的模塊不多,在配置文件httpd.conf自行啓用便可
###解決依賴關係 [root@ap php-5.6.36]# yum install bzip2-devel libmcrypt-devel libxml2-devel -y ###編譯安裝PHP(DSO模式) -- 安裝M->P模式(php和MySQL不在一臺主機時) [root@ap php-5.6.36]# ./configure --prefix=/usr/local/php --with-mysql --with-openssl --with-mysqli=mysqlnd --enable-mbstring --with-png-dir --with-jpeg-dir --with-freetype-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/usr/local/apache24/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts 注意: --enable-maintainer-zts 若是httpd編譯的是prefork不須要該項,若爲worker,event則須要 --with-apxs2 apxs是一個爲Apache服務器編譯和安裝擴展模塊的工具,DSO模式須要指定,FPM模式不須要 [root@ap php-5.6.36]# make -j4 && make install [root@ap php-5.6.36]# echo "export PATH=/usr/local/php/bin:$PATH" > /etc/profile.d/php.sh [root@ap php-5.6.36]# . /etc/profile.d/php.sh [root@ap php-5.6.36]# httpd -M ##查看是否有libphp5模塊,有則php編譯完成 配置文件準備: [root@ap php-5.6.36]# cp php.ini-production /etc/php.ini [root@ap php-5.6.36]# mkdir -p /etc/php.d/ -- 安裝M+P模式(php和MySQL在一臺主機時) # ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-png-dir --with-jpeg-dir --with-freetype-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/usr/local/apache24/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts -- 關於PHP如何多版本共存:DSO+FPM兩種形式存在,將編譯目錄稍加區分便可 # ./configure --prefix=/usr/local/php5 --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-png-dir --with-jpeg-dir --with-freetype-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php5 --with-bz2 --enable-fpm
### xcache準備: [root@ap xcache-3.2.0]# phpize --clean && phpize ##執行此步,生成configure文件 [root@ap xcache-3.2.0]# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config [root@ap xcache-3.2.0]# make -j4 && make install 注意:編譯最後會獲得so的地址:/usr/local/php/lib/php/extensions/no-debug-zts-20131226/xcache.so ### 將xcache的庫添加到php擴展: [root@ap xcache-3.2.0]# mkdir /etc/php.d -p [root@ap xcache-3.2.0]# cp xcache.ini /etc/php.d/ ### 修改xcache的.so的詳細路徑 [root@ap xcache-3.2.0]# vim /etc/php.d/xcache.ini ... extension = /usr/local/php/lib/php/extensions/no-debug-zts-20131226/xcache.so xcache.admin.enable_auth = Off xcache.size = 60M ... ### 編譯完成重啓apache或重載 [root@ap xcache-3.2.0]# pkill httpd [root@ap xcache-3.2.0]# apachectl start
### 安裝pcre正則支持及openssl支持: [root@np nginx-1.14.2]# yum install -y pcre-devel openssl-devel [root@np nginx-1.14.2]# useradd -r nginx ### 編譯參數: [root@np nginx-1.14.2]# ./configure --prefix=/usr/local/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_flv_module --with-http_mp4_module --with-threads --with-file-aio [root@np nginx-1.14.2]# make && make install ### 配置PATH: [root@np nginx-1.14.2]# echo "export PATH=/usr/local/nginx/sbin:$PATH" >> /etc/profile.d/nginx.sh [root@np nginx-1.14.2]# . /etc/profile.d/nginx.sh ### 配置nginx目錄: [root@np nginx-1.14.2]# mkdir -p /data/nginx
### 解決依賴關係: [root@np php-5.6.36]# yum install bzip2-devel libmcrypt-devel libxml2-devel -y ### 編譯參數: [root@np php-5.6.36]# ./configure --prefix=/usr/local/php --with-mysql --with-openssl --with-mysqli=mysqlnd --enable-mbstring --with-png-dir --with-jpeg-dir --with-freetype-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php5 --with-bz2 --enable-fpm [root@np php-5.6.36]# make -j4 && make install ### 配置PATH: [root@np php-5.6.36]# echo "export PATH=/usr/local/php/bin:$PATH" > /etc/profile.d/php.sh [root@np php-5.6.36]# . /etc/profile.d/php.sh [root@np php-5.6.36]# httpd -M ##查看是否有libphp5模塊,有則php編譯完成 ### 配置文件準備: [root@np php-5.6.36]# cp php.ini-production /etc/php.ini [root@np php-5.6.36]# mkdir -p /etc/php.d/ [root@np php-5.6.36]# cp sapi/fpm/php-fpm /usr/local/bin [root@np php-5.6.36]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf [root@np php-5.6.36]# mkdir -p /var/lib/php/session;chown -R nginx.nginx /var/lib/php/session [root@np php-5.6.36]# vim /usr/local/php/etc/php-fpm.conf ... [www] listen = 127.0.0.1:9000 ##不建議對外開放,能夠開放局域網,這裏僅偵聽127.0.0.1 listen.allowed_clients = 127.0.0.1 user = nginx ##以nginx用戶啓動,不然nginx無權訪問fpm group = nginx pm = dynamic ##動態管理 slowlog = /var/log/php-fpm/www-slow.log php_admin_value[error_log] = /var/log/php-fpm/www-error.log php_admin_flag[log_errors] = on php_value[session.save_handler] = files php_value[session.save_path] = /var/lib/php/session ##建立目錄並賦予nginx權限 ... ### 配置php測試頁面,配置遠端數據庫的鏈接信息 [root@ap httpd-2.4.38]# vim /data/nginx/index.php <?php // 當數據庫鏈接正常頁面輸出OK,不然Failure $conn = mysql_connect('192.168.2.133','wordpress','123'); if ($conn) echo "OK"; else echo "Failure"; phpinfo(); ?>
### 安裝pcre正則支持及openssl支持: [root@mysql nginx-1.14.2]# yum -y install pcre-devel openssl-devel [root@mysql nginx-1.14.2]# useradd -r nginx ### 編譯參數: [root@mysql nginx-1.14.2]# ./configure --prefix=/usr/local/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_flv_module --with-http_mp4_module --with-threads --with-file-aio [root@mysql nginx-1.14.2]# make -j4 && make install ### 配置PATH: [root@mysql nginx-1.14.2]# echo "export PATH=/usr/local/nginx/sbin:$PATH" >> /etc/profile.d/nginx.sh [root@mysql nginx-1.14.2]# . /etc/profile.d/nginx.sh ### 配置nginx目錄: [root@mysql nginx-1.14.2]# mkdir -p /data/nginx
[root@mysql pkg]# tar xf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz -C /usr/local/ [root@mysql local]# ln -s mysql-5.6.36-linux-glibc2.5-x86_64 mysql [root@mysql local]# mkdir -pv /data/mysql [root@mysql local]# useradd -r mysql [root@mysql local]# chown -R mysql.mysql /usr/local/mysql-5.6.36-linux-glibc2.5-x86_64 [root@mysql local]# chown -R mysql.mysql /data/mysql [root@mysql mysql]# ./scripts/mysql_install_db --datadir=/data/mysql/ --user=mysql [root@mysql mysql]# cp support-files/my-default.cnf /etc/my.cnf ##my.cnf主要修改datadir,socket位置等常規選項 [root@mysql mysql]# cp support-files/mysql.server /etc/init.d/mysqld ##改pid位置 [root@mysql mysql]# echo "export PATH=/usr/local/mysql/bin:$PATH" > /etc/profile.d/mysql.sh [root@mysql mysql]# . /etc/profile.d/mysql.sh [root@mysql mysql]# chkconfig --add mysqld [root@mysql mysql]# service mysqld restart [root@mysql mysql]# ln -sv /usr/local/mysql/mysql.sock /tmp/mysql.sock [root@mysql mysql]# mysql_secure_installation ##初始化安全設置並配置root密碼 [root@mysql mysql]# mysql -uroot -proot ##配置wordpress庫及用戶、密碼 mysql> CREATE DATABASE wordpress; mysql> GRANT ALL ON wordpress.* TO 'wordpress'@'192.168.2.%' IDENTIFIED BY '123';
192.168.2.128css
[root@nginx pkg]# unzip phpMyAdmin-4.8.5-all-languages.zip [root@nginx pkg]# unzip wordpress-5.0.3-zh_CN.zip ### 配置phpMyadmin [root@nginx pkg]# cd phpMyAdmin-4.8.5-all-languages [root@nginx phpMyAdmin-4.8.5-all-languages]# cp config.sample.inc.php config.inc.php [root@nginx phpMyAdmin-4.8.5-all-languages]# vim config.inc.php +17 ... $cfg['blowfish_secret'] = 'asfusd87fsdfgbsdfbkjsdfsd5513wefasdfbsuf763jwegfway6adgfa'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */ $cfg['Servers'][$i]['host'] = '192.168.2.133'; ... [root@nginx phpMyAdmin-4.8.5-all-languages]# mkdir tmp [root@nginx phpMyAdmin-4.8.5-all-languages]# chmod 777 tmp ### 配置wordpress [root@nginx pkg]# cd wordpress [root@nginx wordpress]# cp wp-config-sample.php wp-config.php [root@nginx wordpress]# vim wp-config.php ... /** WordPress數據庫的名稱 */ define('DB_NAME', 'wordpress'); /** MySQL數據庫用戶名 */ define('DB_USER', 'wordpress'); /** MySQL數據庫密碼 */ define('DB_PASSWORD', '123'); /** MySQL主機 */ define('DB_HOST', '192.168.2.133'); ... ### 將修改好的項目文件分別發給ap,np的Document目錄 [root@nginx pkg]# rsync -az phpMyAdmin-4.8.5-all-languages wordpress root@192.168.2.129:/usr/local/apache24/htdocs/ [root@nginx pkg]# rsync -az phpMyAdmin-4.8.5-all-languages wordpress root@192.168.2.130:/data/nginx/ [root@nginx pkg]# rsync -az phpMyAdmin-4.8.5-all-languages wordpress root@192.168.2.133:/data/nginx/
### 192.168.2.128 [root@nginx ~]# vim /etc/nginx/nginx.conf ... include conf.d/*.conf; ##在http標籤內添加 upstream websrv_php { ##添加php動態解析服務器 #ip_hash; server 192.168.2.129:80 weight=1; server 192.168.2.130:80 weight=1; } upstream websrv_static { ##添加static靜態文件解析服務器 server 192.168.2.133:80 weight=1; } ... [root@nginx ~]# mkdir /etc/nginx/conf.d/ ##建立虛擬主機目錄 [root@nginx ~]# vim /etc/nginx/conf.d/upstream.conf server { listen 80; server_name www.ifan.com; root /data/nginx; index index.html; location ~* \.(jpeg|gif|jpg|png|html|css)$ { proxy_pass http://websrv_static; } location / { proxy_pass http://websrv_php; } } [root@nginx ~]# nginx -t ##沒有報錯,則下一步啓動便可 [root@nginx ~]# nginx ## 配置192.168.2.129 ap主機咱們就使用默認主機提供服務,注意上面配置ap主機時已經完成了index.php文件的默認識別及目錄顯示功能一關閉,若未進行配置則返回配置,如下只更名 [root@ap htdocs]# mv phpMyAdmin-4.8.5-all-languages pam [root@ap htdocs]# mv wordpress blog ## 配置192.168.2.130 [root@nginx ~]# vim /etc/nginx/nginx.conf ... include conf.d/*.conf; ##在http標籤內添加 ... [root@nginx ~]# mkdir /etc/nginx/conf.d/ ##建立虛擬主機目錄 [root@nginx ~]# vim /etc/nginx/conf.d/project.conf server { listen 80; server_name www.ifan.com; root /data/nginx; index index.html index.php; location / { } location ~* \.php$ { fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #fastcgi_param SCRIPT_FILENAME /data/nginx$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; } } [root@np nginx]# mv phpMyAdmin-4.8.5-all-languages pam [root@np nginx]# mv wordpress blog [root@np nginx]# nginx -t && nginx ## 192.168.2.133 [root@nginx ~]# vim /etc/nginx/nginx.conf ... include conf.d/*.conf; ##在http標籤內添加 ... [root@nginx ~]# mkdir /etc/nginx/conf.d/ ##建立虛擬主機目錄 [root@nginx ~]# vim /etc/nginx/conf.d/project.conf server { listen 80; server_name www.ifan.com; root /data/nginx; index index.html index.php; location / { } } [root@np nginx]# mv phpMyAdmin-4.8.5-all-languages pam [root@np nginx]# mv wordpress blog [root@np nginx]# nginx -t && nginx
cat /etc/hosts ... 192.168.2.128 www.ifan.com ...
因爲Firefox和Chrom老是加載緩存,測試出效果很不易,我訪問的是php的測試文件,正常頁面會顯示phpinfo的基本信息及php的擴展信息,這裏能夠看出我nginx設置的是基本輪詢,能夠根據需求設置成基於源地址綁定訪問html
訪問blog系統:默認安裝好不是這個界面,是須要自行配置的界面前端
訪問pam系統:
這個並不是錯誤,緣由是使用負載均衡輪詢的時候,第一次請求phpMyAdmin主頁的時ap進行處理,頁面返回的cookie存放在ap上.填寫用戶名密碼提交以後,是np進行處理的,此時給頁面的cookie不是ap上的cookie,因此會報錯,解決方案很簡單,在nginx代理時使用 ip_hash 便可(配置文件中我已添加,只須要打開便可註釋便可)mysql
查看192.168.2.133Nginx日誌,均是靜態頁面的訪問:linux