图片 46

使用nginx利用虚拟主机搭建WordPress博客,nginx负载均衡实例

By admin in 使用交流 on 2019年11月2日

实例整体框架:

烂泥:使用nginx利用虚拟主机搭建WordPress博客,nginxwordpress

本文由秀依林枫提供友情赞助,首发于烂泥行天下。

最近开始打算学习nginx
web服务器,既然是学习还是以实用为目的的。我们在此以搭建WordPress博客为例。

搭建WordPress博客,我们需要Mysql数据库、PHP环境和Nginx
Web服务器。主要分为以下四个步骤:

1、Mysql数据库安装及配置

2、PHP、PHP-FPM及与PHP相关组件的安装及配置

3、Nginx Web服务器搭建与配置

4、wordpress安装

注意:本次实验,除了nginx使用源码安装外,其他的软件全部使用rpm包yum方式进行安装。

一、 Mysql数据库安装及配置

1.1 mysql数据库安装

mysql数据库,我们使用yum方式进行安装。如下:

yum -y install mysql mysql-server

图片 1

图片 2

1.2 修改mysql数据库root用户密码及配置远程访问权限

mysql数据库安装完毕后,我们来启动mysql数据库,并修改mysql数据库的相关设置,同时还要为wordpress创建ailanni数据库。如下:

/etc/init.d/mysqld start

图片 3

修改mysql数据库root用户的密码,mysql数据库安装后root用户默认密码为空。使用如下命令:

mysql -u root –p或者mysql -uroot –p

use mysql;

update user set password=password(‘123456′) where user=’root’;

flush privileges;

/etc/init.d/mysqld restart

图片 4

图片 5

默认情况下,mysql数据库只允许本机访问mysql数据库。但是为了对mysql数据库管理的方便,我们需要开启mysql数据库远程访问的权限。使用如下命令:

mysql -u root –p或者mysql -uroot –p

use mysql;

update user set host=’%’ where user=’root’;

flush privileges;

/etc/init.d/mysqld restart

图片 6

图片 7

以上配置完毕后,你会发现mysql连接非常慢。我们只需要修改mysql数据库的配置文件即可。

打开/etc/my.cnf文件,在mysqld中,加入skip-name-resolve,然后重启mysql数据库,即可。如下:

vi /etc/my.cnf

/etc/init.d/mysqld restart

图片 8

1.3 创建wordpress所需数据库

以上操作完毕后,我们再连接mysql数据库,在此我们使用的是Navicat
Premium数据库客户端。

通过Navicat Premium创建Wordpress博客所需要的数据库,有关使用Navicat
Premium创建mysql数据库,可以参考《烂泥:Navicat
Premium使用mysql数据库》,数据库创建完毕后如下:

图片 9

当然我们也可以使用,phpmyadmin创建wordpress说需要的数据库。

有关在nginx上安装与使用phpmyadmin,我会在下一篇文章中介绍。

二、PHP、PHP-FPM及与PHP相关组件的安装及配置

mysql数据库安装完毕后,我们现在来配置php环境。

2.1 安装PHP及其相关组件

首先安装php及相关的组件,使用如下命令:

yum -y install php*

图片 10

图片 11

在php的相关组件中,我们一定要注意php-mysql与php-fpm这两个组件。其中php-mysql之php连接mysql使用,否则在安装WordPress时,会提示:您的PHP似乎没有安装运行WordPress所必需的MySQL扩展。这个安装完毕后,要重启mysql数据库,否则wordpress无法连接mysql数据库。

而php-fpm是php配合naginx使用的,nginx本身不支持php,通过php-fpm配合nginx才解析php语言。

这两个组件其实是可以单独分开进行安装的,如下:

yum –y install php-mysql

yum –y install php-fpm

以上安装完毕后,我们来查看php的版本。如下:

php -v

图片 12

2.2 配置php-fpm

php相关组件安装完毕后,我们就要来配置php-fpm。

查看php-fpm的相关安装文档,如下:

rpm -ql php-fpm

图片 13

通过上图,我们可以看到php-fpm的相关配置文件。主要配置文件为/etc/php-fpm.conf,现在查看该配置文件,如下:

more /etc/php-fpm.conf

图片 14

你会发现该配置文件根本就没有定义啊,php-fpm所需要监听的端口以及监听的地址。

难道说我们说分析的不对?

呵呵,其实我们分析的一点都没有错。注意上图中,我们标记出来的部分。

include=/etc/php-fpm.d/*.conf

这条语句很重要,它包含了真的php-fpm说配置的关键部分。该关键配置文件就是在php-fpm安装图中标记出来的www.conf文件。

/etc/php-fpm.d/www.conf

现在我们来查看该文件,如下:

more /etc/php-fpm.d/www.conf

图片 15

这张图,标记出来的部分,显示的是php-fpm要监听的地址和端口。

图片 16

这张图,显示的是运行php-fpm进程时,所使用的用户及用户组。在此,我们使用默认用户及用户组apache。

说白了,只要我们安装好php-fpm不进行任何配置,使用默认的配置即可。

当然如果你想进一步优化php-fpm配置的话,可以通过php-fpm安装时说给出的配置模版来配置,该配置模版位于:

more /usr/share/doc/php-fpm-5.3.3/php-fpm.conf.default

图片 17

以上配置完毕后,我们来启动php-fpm,并查看是否正常监听端口以及地址。如下:

/etc/init.d/php-fpm start

chkconfig php-fpm on

netstat -tunlp |grep 9000

ps aux |grep php-fpm

图片 18

通过上图,我们可以看到目前php-fpm已经正常运行,监听的地址及端口为:127.0.0.1:9000,并且php-fpm是以apache用户运行的。而主进程是以root用户在运行。

通过php-fpm的启动方式,我们可以看到php-fpm是以服务的方式在运行。那么我们也可以通过服务器的方式,重启和关闭php-fpm。如下:

/etc/init.d/php-fpm restart

/etc/init.d/php-fpm stop

图片 19

三、Nginx Web服务器搭建与配置

3.1 安装Nginx

把下载好的nginx上传到服务器上,使用如下命令:

scp tengine-2.0.3.tar.gz
[email protected]:/tmp

ifconfig eth0|grep “inet addr”|awk ‘{print $2}’|cut -d: -f2

图片 20

解压nginx,并进行编译、安装如下:

tar -xf /tmp/tengine-2.0.3.tar.gz -C ./

./configure

图片 21

make && make install

图片 22

3.2 启动nginx

nginx安装完毕后,我们来开始启动nginx。nginx可以通过两种方式进行启动。

一种是如下:

/usr/local/nginx/sbin/nginx

另外一种如下:

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

其实第一种方式,默认情况下是要加载/usr/local/nginx/conf/nginx.conf配置文件的。

图片 23

图片 24

通过上图,我们可以很明显的看到。nginx已经正常启动,并且也可以正常访问。

现在我们看看nginx运行的用户,如下:

ps -aux|grep nginx

图片 25

通过上图,我们可以看到目前nginx运行在nobody用户下。

3.3 配置Nginx支持php

nginx安装完毕后,我们就需要来配置nginx使其支持php,并且我们也要配置nginx,让wordpress以虚拟主机的形式进行安装。

我们先来配置有关php的选项。

在nginx的配置文件把有关fastcgi有关的注释项,全部去掉。如下:

vi /usr/local/nginx/conf/nginx.conf

location ~ .php$ {

root html;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;

include fastcgi_params;

}

图片 26

上述配置完毕后,我们来给nginx配置主页。就是添加index.php文件,如下:

location / {

root html;

index index.php index.html index.htm;

}

图片 27

现在我们来测试下,nginx有关php的配置是否正确。编辑index.php文件,加入<?php
phpinfo();?>,如下:

vi ./html/index.php

图片 28

现在来测试下nginx配置是否正确,然后优雅的重启nginx,使用如下命令:

/usr/local/nginx/sbin/nginx –t

/usr/local/nginx/sbin/nginx -s reload

图片 29

图片 30

通过上图,我们可以看到目前nginx已经可以正常的支持php。

3.4 配置Nginx支持虚拟主机

nginx有关php的配置完毕后,我们现在来配置nginx虚拟主机。

其实nginx的配置很简单,整个配置文件。只有一个http标签,而虚拟主机的配置就是一个一个server标签。

但是server标签必须在包含在http标签中,这样说的目的是server标签既可以在http所在的配置文件,也可以以单独的文件存在,但是需要在http标签中使用include进行包含。

下面是我配置的一个虚拟主机a.ilanni.com,如下:

vi /usr/local/nginx/conf/nginx.conf

server {

listen 80;

server_name a.ilanni.com;

root /ilanni/a.ilanni.com/;

index index.php;

location ~ .php$ {

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;

include fastcgi_params;

}

}

图片 31

注意,我现在是把a.ilanni.com这个虚拟主机的根目录存放在/ilanni/a.ilanni.com/这个目录下,并且该目录的用户及用户组为root,如下:

图片 32

为了和前面nginx的默认主页进行区别,我现在把虚拟主机a.ilanni.com的主页,使用的是一个php探针。

图片 33

以上虚拟主机配置完毕后,我们来重启下nginx,如下:

/usr/local/nginx/sbin/nginx –t

/usr/local/nginx/sbin/nginx -s reload

图片 34

通过上图,我们可以很明显的看到。目前虚拟主机a.ilanni.com,已经可以正常访问,可以显示的确实我提到的php探针。

四、wordpress安装

以上我们把wordpress安装是,所需要的mysql数据库、nginx
web服务器都已经搭建完毕。

现在我们把wordpress安装包,上传到服务器上进行解压,如下:

scp wordpress-4.0-zh_CN.tar.gz
[email protected]:/ilanni

tar -xf wordpress-4.0-zh_CN.tar.gz

图片 35

把解压后的文件复制到虚拟主机a.ilanni.com根目录下,如下:

cp -rv ./wordpress a.ilanni.com/

图片 36

开始安装wordpress,在浏览器中访问a.ilanni.com,如下:

图片 37

填写mysql数据库的相关信息。如下:

图片 38

复制该信息到文件wp-config.php中,如果该文件不存在,则在a.ilanni.com根目录下,创建wp-config.php文件,如下:

图片 39

vi wp-config.php

图片 40

设置博客的相关悉尼型,如下:

图片 41

提示已经安装成功,如下:

图片 42

访问虚拟机a.ilanni.com主页,如下:

图片 43

到此有关在nginx下安装wordpress博客,已经完成。

图片 44

用wordpress在二级目录下建博客,主机是nginx的虚拟主机怎进行伪静态设置?空间商说必须用独立主机

可以放在二级目录下,把wordpress上传到二级目录,访问安装即可。
 

 

怎在虚拟主机上搭建一个网站

搭建一个wordpress网站,需要空间支持php程序,有赠送mysql数据库才行,一个100-200M的空间,数据库大概50M就差不多了。有个
E世纪主机
里标的一个基础性空间和这个配置差不多,一百多块钱一年,免费的个人觉得不怎么稳定、也没什么技术支持,需要协助的时候不好找人,还是花点钱,也不多,找人的时候容易。你购买好了,你可以联系网站上的技术支持帮你安装一个,你也可以自己下载一个wordpress
上去,然后访问你的域名根据提示操作即可。
 

本文由秀依林枫提供友情赞助,首发于烂泥行天下。 最近开始打算学习nginx
web服…

 使用VMware搭建 5台Centos7虚拟机(包括客户端),系统版本:CentOS Linux
release
7.2.1511。实例所安装的nginx版本:1.12.2,mariadb-server版本:5.5.56,php-fpm版本:5.4.16,PHPMyAdmin版本:4.0.10.20。此实例所有虚拟机均已关闭防火墙并设置selinux为Permissive(systemctl
stop firewalld.service,setenforce 0)。

搭建web server:

1、安装php-fpm和mariadb-server并创建web资源存放目录:

[root@webserver Desktop]# yum install -y php php-fpm php-mbstring mariadb-server php-mysql
[root@webserver Desktop]# mkdir /data/html

2、配置php-fpm:

#配置php-fpm
[root@webserver Desktop]# vim /etc/php-fpm.d/www.conf
    listen = 0.0.0.0:9000
    listen.allowed_clients = 10.10.0.11,10.10.0.12
    pm.status_path = /status
    ping.path = /ping
    ping.response = pong
    php_value[session.save_handler] = files
    php_value[session.save_path] = /var/lib/php/session
#设置会话session文件属主属组
[root@webserver Desktop]# chown apache:apache /var/lib/php/session
[root@webserver Desktop]# ll -d /var/lib/php/session
    drwxrwx---. 2 apache apache 4096 Aug 20 15:50 /var/lib/php/session/
[root@webserver Desktop]# systemctl start php-fpm.service
[root@webserver Desktop]# ss -tan
State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN     0      128          *:9000                     *:*                  
LISTEN     0      5      192.168.122.1:53                       *:*                  
LISTEN     0      128          *:22                       *:*                  
LISTEN     0      128    127.0.0.1:631                      *:*                  
LISTEN     0      100    127.0.0.1:25                       *:*                  
LISTEN     0      128         :::22                      :::*                  
LISTEN     0      128        ::1:631                     :::*                  
LISTEN     0      100        ::1:25                      :::*

3、创建index.php页面并并下载PHPMyAdmin和WordPress:

[root@webserver Desktop]# cd /data/html
[root@webserver html]# vim index.php
    <h1> 10.10.0.13 server</h1>
    <?php
        phpinfo();
    ?>
[root@webserver html]# wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
[root@webserver html]# wget https://files.phpmyadmin.net/phpMyAdmin/4.0.10.20/phpMyAdmin-4.0.10.20-all-languages.tar.gz
[root@webserver html]# tar xf wordpress-4.9.4-zh_CN.tar.gz
[root@webserver html]# tar xf phpMyAdmin-4.0.10.20-all-languages.tar.gz
[root@webserver html]# ln -sv phpMyAdmin-4.0.10.20-all-languages phpmyadmin
#配置wordpress所用数据库
[root@webserver html]# cp /data/html/wordpress/wp-config-sample.php /data/html/wordpress/wp-config.php
[root@webserver html]# vim /data/html/wordpress/wp-config.php
    define('DB_NAME', 'wordpress');
    define('DB_USER', 'wpuser');
    define('DB_PASSWORD', '12345678');
    define('DB_HOST', 'localhost');
    define('DB_CHARSET', 'utf8');

4、配置mariadb:

[root@webserver html]# vim /etc/my.cnf
    [mysqld]
    skip_name_resolve=ON
    innodb_file_per_table=ON
root@webserver html]# systemctl start mariadb.service
#设置mariadb的安全权限
root@webserver html]# mysql_secure_installation
...
#创建wordpress数据库并授权wpuser操作权限,跟wordpress配置文件保持一致
root@webserver html]# mysql -uroot -p
Enter password: 
MariaDB [(none)]> create database wordpress;
MariaDB [(none)]> grant all on wordpress to 'wpuser'@'%' identified by '12345678';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;

搭建nginx1:

1、安装Nginx并创建web资源存放目录

[root@nginx1 Desktop]# yum install -y nginx
[root@nginx1 Desktop]# mkdir -pv /data/html

2、创建index.html默认页面并下载PHPMyAdmin和WordPress

[root@nginx1 Desktop]# cd /data/html
[root@nginx1 html]# vim index.html
    <h1>this is 10.10.0.11 nginx</h1>
[root@nginx1 html]# wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
[root@nginx1 html]# wget https://files.phpmyadmin.net/phpMyAdmin/4.0.10.20/phpMyAdmin-4.0.10.20-all-languages.tar.gz
[root@nginx1 html]# tar xf wordpress-4.9.4-zh_CN.tar.gz
[root@nginx1 html]# tar xf phpMyAdmin-4.0.10.20-all-languages.tar.gz
[root@nginx1 html]# ln -sv phpMyAdmin-4.0.10.20-all-languages phpmyadmin
#配置wordpress所用数据库
[root@nginx1 html]# cp /data/html/wordpress/wp-config-sample.php /data/html/wordpress/wp-config.php
[root@nginx1 html]# vim /data/html/wordpress/wp-config.php
    define('DB_NAME', 'wordpress');
    define('DB_USER', 'wpuser');
    define('DB_PASSWORD', '12345678');
    define('DB_HOST', 'localhost');
    define('DB_CHARSET', 'utf8');

3、配置虚拟主机并启动nginx:

[root@nginx1 html]# vim /etc/nginx/nginx.conf
#注释nginx默认的主机配置
    ...
    server {
#        listen       80 default_server;
#        listen       [::]:80 default_server;
    ...
[root@nginx1 html]# vim /etc/nginx/conf.d/vhost.conf   #配置虚拟主机,页面动静分离
  server {
    listen 80;
    server_name www.test.org;
    index index.html;
    location / {
         root /data/html;
    }
    location ~* .php$ {
      fastcgi_pass 10.10.0.13:9000;
      fastcgi_index index.php;
      include fastcgi_params;
      fastcgi_param SCRIPT_FILENAME /data/html/$fastcgi_script_name;
    }
    location ~* ^/(status|ping)$ {
      fastcgi_pass 10.10.0.13:9000;
      include fastcgi_params;
      fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
    }
    }
[root@nginx1 html]# systemctl start nginx.service

nginx2配置过程同nginx1.

搭建Nginx SLB:

安装nginx并进行负载均衡配置:

[root@SLB Desktop]# yum -y install nginx
[root@SLB Desktop]# vim /etc/nginx/nginx
#在http字段进行以下配置
    http {
        ...
        #定义集群
        upstream webservers {
            server 10.10.0.11:80 max_fails=3;
            server 10.10.0.12:80 max_fails=3;
            server 127.0.0.1:80 backup;
        }
        server {
        ...
        location / {
                proxy_pass http://webservers;   #反代给集群服务器
                proxy_set_header host $http_host;   #设置代理请求报文的host字段为$http_host
                proxy_set_header X-Forward-For $remote_addr;       #为代理请求报文添加X-Forward-For字段以传递真实ip地址$remote_addr
            }
            ...
        }
[root@SLB Desktop]# systemctl start nginx.service

客户端进行访问:

1、修改hosts:

[root@client Desktop]# vim /etc/hosts
    ...
    172.16.0.11 www.test.org

2、访问:

图片 45 
 
  图片 46

3、没配置缓存时进行压力测试:

[root@client Desktop]# ab -c 100 -n 100000 http://www.test.org/wordpress
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.test.org (be patient)
Completed 10000 requests
Completed 20000 requests
Completed 30000 requests
Completed 40000 requests
Completed 50000 requests
Completed 60000 requests
Completed 70000 requests
Completed 80000 requests
Completed 90000 requests
Completed 100000 requests
Finished 100000 requests


Server Software:        nginx/1.12.2
Server Hostname:        www.test.org
Server Port:            80

Document Path:          /wordpress
Document Length:        185 bytes

Concurrency Level:      100
Time taken for tests:   58.734 seconds
Complete requests:      100000
Failed requests:        0
Write errors:           0
Non-2xx responses:      100000
Total transferred:      41700001 bytes
HTML transferred:       18500000 bytes
Requests per second:    1702.59 [#/sec] (mean)
Time per request:       58.734 [ms] (mean)
Time per request:       0.587 [ms] (mean, across all concurrent requests)
Transfer rate:          693.34 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    2   8.4      0     295
Processing:     2   57 124.9     31    2962
Waiting:        2   56 124.8     31    2962
Total:          7   58 125.3     33    2962

Percentage of the requests served within a certain time (ms)
  50%     33
  66%     51
  75%     66
  80%     77
  90%    111
  95%    157
  98%    273
  99%    375
 100%   2962 (longest request)

4、在SLB服务器进行缓存配置:

#创建缓存存放目录
[root@SLB Desktop]# mkdir -p /data/nginx/cache
[root@SLB Desktop]# vim /etc/nginx/nginx.conf
#在http字段进行配置
    http {
        ...
        proxy_cache_path /data/nginx/cache levels=1:1 keys_zone=nginxcache:50m max_size=1g;
        ...

        server {
            ...
            proxy_cache nginxcache;
            proxy_cache_key $request_uri;
            proxy_cache_valid 200 301 302 1h;
            proxy_cache_methods GET HEAD;
            proxy_cache_valid any 1m;
            add_header X-cache '$upstream_cache_status from $host';
            proxy_cache_use_stale http_502;
            ...
        }
[root@SLB Desktop]# systemctl restart nginx.service

5、再次进行压力测试:

[root@client Desktop]# ab -c 100 -n 100000 http://www.test.org/wordpress
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.test.org (be patient)
Completed 10000 requests
Completed 20000 requests
Completed 30000 requests
Completed 40000 requests
Completed 50000 requests
Completed 60000 requests
Completed 70000 requests
Completed 80000 requests
Completed 90000 requests
Completed 100000 requests
Finished 100000 requests


Server Software:        nginx/1.12.2
Server Hostname:        www.test.org
Server Port:            80

Document Path:          /wordpress
Document Length:        185 bytes

Concurrency Level:      100
Time taken for tests:   14.391 seconds
Complete requests:      100000
Failed requests:        0
Write errors:           0
Non-2xx responses:      100000
Total transferred:      41700000 bytes
HTML transferred:       18500000 bytes
Requests per second:    6948.98 [#/sec] (mean)
Time per request:       14.391 [ms] (mean)
Time per request:       0.144 [ms] (mean, across all concurrent requests)
Transfer rate:          2829.81 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   1.9      0      48
Processing:     2   14   3.9     13      58
Waiting:        1   13   3.8     13      58
Total:          8   14   3.9     13      67

Percentage of the requests served within a certain time (ms)
  50%     13
  66%     14
  75%     14
  80%     14
  90%     16
  95%     24
  98%     27
  99%     29
 100%     67 (longest request)

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 大奖888网页版登陆 版权所有