nginx实验---lnmp实现多虚拟主机部署wordpress和phpmyadmin,并为后者提供https,及rewrite功能

简介:

1.lnmp实现多个虚拟主机,部署wordpress和phpmyadmin,并为后一个主机提供https。

2.配置rewrite,即使用户使用http协议访问phpmyadmin的站点,最终也会使用https重新请求资源。


-------------------------------------------------------------------------------------------

一、安装nginx

 

方法一:编译安装

1.下载nginx程序包,传导至CentOS主机中,并解压。

2.进入解压目录

3.~]# ./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 --pid-path=/var/run/nginx.pid--lock-path=/var/lock/subsys/nginx.lock --user=nginx --group=nginx--with-http_ssl_module --with-http_v2_module --with-http_dav_module--with-threads --with-file-aio --with-http_stub_status_module

4. make -j 4 && make install

 

注意:1.启动服务需要事先创建nginx用户和nginx组;

2.若编译错误提示缺少编译软件可以 yum -y install gcc gcc-c++autoconf automake make

 

方法二:EPEL源的安装包

 [root@zj06 ~]# cd /etc/yum.repos.d/

 [root@zj06yum.repos.d]# vim nginx.repo

   [nginx]

name=nginx repo

baseurl=http://nginx.org/packages/centos/7/$basearch/

gpgcheck=0

enabled=1

[root@zj06 yum.repos.d]# yum install -y nginx

 

二、创建虚拟机


[root@zj06 ~]# mkdir -pv/var/www/vhost{1,2}

 

[root@zj06 ~]# echo"www1.zrs.com" >> /var/www/vhost1/index.html

[root@zj06 ~]# echo"www2.zrs.com" >> /var/www/vhost2/index.html

[root@zj06 ~]# vim /etc/nginx/nginx.conf

server {

      listen       80;

      server_name  www1.zrs.com;

      location / {

          root   /var/www/vhost1;

          index index.php index.html index.htm;

      }

}

server {

      listen       80;

      server_name  www2.zrs.com;

       location / {

          root   /var/www/vhost2;

           index index.php index.html index.htm;

      }

}

 

[root@zj06 ~]#nginx -t   ///检查语法没问题

[root@zj06~]# nginx -s reload     ///重启服务

 

客户端测试

wKioL1nhaVbihErZAAAXCuDqNq0556.png

wKiom1nhbBjB14TVAAAXnYat7jA722.png

三、安装php和mariadb,测试连接

 

[root@zj06 ~]# yum install -y php-fpm mariadb-server mariadb

配置nginx支持php解析

[root@zj06 ~]# vim /etc/nginx/nginx.conf

server {

      listen       80;

      server_name  www1.zrs.com;

      location / {

          root   /var/www/vhost1;

          index index.php index.html index.htm;

      }

       location ~ \.php$ {

           root           /var/www/vhost1;

           fastcgi_pass   127.0.0.1:9000;

           fastcgi_index  index.php;

           fastcgi_param SCRIPT_FILENAME /var/www/vhost1/$fastcgi_script_name;

           include        fastcgi_params;

       }

}

server {

      listen       80;

      server_name  www2.zrs.com;

      location / {

          root   /var/www/vhost2;

           index index.php index.html index.htm;

      }

       location ~ \.php$ {

           root           /var/www/vhost2;

           fastcgi_pass   127.0.0.1:9000;

           fastcgi_index  index.php;

           fastcgi_param SCRIPT_FILENAME /var/www/vhost2/$fastcgi_script_name;

           include        fastcgi_params;

       }

 

}

 

[root@zj06 ~]# nginx -t   ///检查语法没问题

[root@zj06 ~]# nginx -s reload     ///重启服务


修改两个主页index.html为index.php

并添加测试段内容:

<?php

       Phpinfo();

?>


客户端测试

wKiom1nhbFng7SM5AAEOjOu5h2w799.png

wKioL1nhaaPCyPIOAAEMsYJiC0E933.png

 

创建数据库,授权用户,并刷新

MariaDB [(none)]> create database wpsdb;

MariaDB [(none)]> grant all on wpsdb.*TO 'wpuser'@'172.16.%.%'IDENTIFIED BY'123456';

MariaDB [(none)]> create database pma;

MariaDB [(none)]> grant all on pma.* TO'pmauser'@'172.16.%.%'IDENTIFIED BY'123456';

MariaDB [(none)]> FLUSH PRIVILEGES;

 

测试php和数据库能否正常连接

[root@zj06 ~]# vim/var/www/vhost1/index.php

 wKioL1nhawXjZxCOAAAVaQ-sQOg628.png

vhost2也同样设置成这样,相关数据库内容要改为pma的。

 

客户端测试

wKiom1nhbfOwaOXWAAAkXFJajMY892.png

wKioL1nhaz2wmA4WAAAkEXWfHik445.png


 

四、部署wordpress和phpmyadmin 


下载这两个应用并导入虚拟机中,分别解压

[root@zj06 ~]# unzipwordpress-3.9-zh_CN.zip

[root@zj06 ~]# tar -zxvfphpMyAdmin-4.0.10.20.tar.gz

 

1.部署wordpress

[root@zj06 ~]# mv wordpress/var/www/vhost1/

[root@zj06 ~]# cd /var/www/vhost1/wordpress/

[root@zj06 wordpress]# mvwp-config-sample.php wp-config.php

[root@zj06 wordpress]# vim wp-config.php   ///修改配置文件

/** WordPress数据库的名称*/

define('DB_NAME', 'wpsdb');

 

/** MySQL数据库用户名 */

define('DB_USER', 'wpuser');

 

/** MySQL数据库密码 */

define('DB_PASSWORD', '123456');

 

/** MySQL主机 */

define('DB_HOST', '172.16.1.6');

 

客户端测试 wKioL1nha33DEGB0AAD2F9zmUis803.png

2. 部署phpmyadmin

[root@zj06 ~]# mkdir/var/www/vhost2/phpmyadmin

 

[root@zj06 ~]# mv phpMyAdmin-4.0.10.20-all-languages/*/var/www/vhost2/phpmyadmin/

[root@zj06 ~]# cd /var/www/vhost2/phpmyadmin/

[root@zj06 phpmyadmin]# mvconfig.sample.inc.php config.inc.php

[root@zj06 phpmyadmin]# vim config.inc.php   ///修改这个文件中的下面一行配置为主机地址

$cfg['Servers'][$i]['host'] = '172.16.1.6';

 

客户端测试

wKiom1nhbk7R4epxAAILs_RrSrw546.png

 

五、为phpmyadmin提供https

 

在主机上安装mod_ssl模块

[root@zj06 ~]# yum -y install mod_ssl

 

切换到CA目录下,生成密钥和自签证书

[root@zj06 ~]# cd /etc/pki/CA

[root@zj06 CA]# (umask 077; openssl genrsa-out private/cakey.pem 2048)

Generating RSA private key, 2048 bit longmodulus

.......+++

...................................+++

e is 65537 (0x10001)

[root@zj06 CA]# openssl req -new -x509 -keyprivate/cakey.pem -out cacert.pem

You are about to be asked to enterinformation that will be incorporated

into your certificate request.

What you are about to enter is what iscalled a Distinguished Name or a DN.

There are quite a few fields but you canleave some blank

For some fields there will be a defaultvalue,

If you enter '.', the field will be leftblank.

-----

Country Name (2 letter code) [XX]:CN

State or Province Name (full name) []:Hebei

Locality Name (eg, city) [DefaultCity]:QinHuangdao

Organization Name (eg, company) [DefaultCompany Ltd]:Link

Organizational Unit Name (eg, section)[]:ops

Common Name (eg, your name or your server'shostname) []:ca.link.com

Email Address []:admin@link.com

 

提供辅助文件

[root@zj06 CA]# touch index.txt

[root@zj06 CA]# echo 01 > serial

 

生成私钥并且生成证书签署请求

 

[root@zj06~]# mkdir -pv /etc/nginx/ssl

[root@zj06~]# cd /etc/nginx/ssl

 

[root@zj06 ssl]# (umask 077; openssl genrsa-out nginx.key 1024)   ///生成私钥

Generating RSA private key, 1024 bit longmodulus

....++++++

...............................++++++

e is 65537 (0x10001)

[root@zj06 ssl]# openssl req -new -keynginx.key -out nginx.csr   ///生成证书请求

You are about to be asked to enterinformation that will be incorporated

into your certificate request.

What you are about to enter is what iscalled a Distinguished Name or a DN.

There are quite a few fields but you canleave some blank

For some fields there will be a defaultvalue,

If you enter '.', the field will be leftblank.

-----

Country Name (2 letter code) [XX]:CN

State or Province Name (full name)[]:Hebei 

Locality Name (eg, city) [DefaultCity]:QinHuangdao

Organization Name (eg, company) [DefaultCompany Ltd]:Link

Organizational Unit Name (eg, section)[]:ops

Common Name (eg, your name or your server'shostname) []:ca.link.com

Email Address []:admin@link.com

 

Please enter the following 'extra'attributes

to be sent with your certificate request

A challenge password []:

An optional company name []:

 

签发证书

[root@zj06 ssl]# cp nginx.csr /tmp/

[root@zj06 ssl]# openssl ca -in/tmp/nginx.csr -out /etc/pki/CA/certs/nginx.crt   ///根据提示连续按两个“y”

[root@zj06 ssl]# cp/etc/pki/CA/certs/nginx.crt /etc/nginx/ssl/  ///把签署好的证书发给请求者

 

修改nginx配置文件,添加支持ssl

[root@zj06 ssl]# vim /etc/nginx/nginx.conf

server {

       listen       443 ssl;

       server_name  www2.zrs.com;

       ssl_certificate     /etc/nginx/ssl/nginx.crt;

       ssl_certificate_key /etc/nginx/ssl/nginx.key;

       ssl_session_cache   shared:SSL:1m;

       ssl_session_timeout  5m;

       ssl_ciphers  HIGH:!aNULL:!MD5;

       ssl_prefer_server_ciphers  on;

       location / {

           root   html;

           index index.php index.html index.htm;

       }

}

 

客户端测试

wKiom1nhbpaSxMc5AACciue6Q2M207.png

wKiom1nhbrTy5hEbAABJx1hn99k992.png

wKiom1nhbsiy9q-dAAB84BOckEc667.png


六、配置rewrite,即使用户使用http协议访问phpmyadmin的站点,最终也会使用https重新请求资源

 

当用户访问www2.zrs.com的时候自动跳转到https://www2.zrs.com,直接用rewrite功能即可

 

在www2.zrs.com主机的配置文件中添加rewrite即可

wKioL1niDwCQxK8HAABDqrJyKCY664.png


客户端测试

wKiom1niEcXCp5aNAABPszxuPWo302.png



本文转自 Runs_ 51CTO博客,原文链接:http://blog.51cto.com/12667170/1972297,如需转载请自行联系原作者

相关文章
|
2月前
|
人工智能 自然语言处理 搜索推荐
WordPress AI 原创文章自动生成插件,新增自定义生成图片API功能,支持自定义99%的生图API,拓展性超强
这是一款功能强大的WordPress AI原创文章自动生成插件,支持两种智能生成模式:传统自动方式和懒人智能方式。通过AI生成长尾关键词、多语言文章、动态化标题与内容结构,优化SEO效果,去AI特征,吸引更多点击。插件可自动生成配图、TAG标签及摘要,支持24小时无人值守自动化生成文章,并提交至各大搜索引擎。同时提供关键词管理、定时任务、API集成等功能,兼容主流AI模型,助力网站内容创作与SEO优化。适合个人站长及企业用户提升内容生产力。
|
11月前
|
搜索推荐
wordpress网站添加一个临时维护功能
wordpress网站添加一个临时维护功能
96 3
|
PHP SEO
WordPress强大多功能主题模板The7 v9.16.0
The7可以与WPBakery Page Builder(原Visual Composer)和Ultimate Addons的完全无缝集成。它也与大多数流行的插件完全兼容,例如WooCommerce,WPML,Yoast SEO,All in One WP Migration,W3 Total Cache等。大多数用户均表示:The7是迄今为止与这些插件一起使用的最佳主题!
87 2
|
存储 缓存 自然语言处理
WordPress是一个功能强大的开源内容管理系统
【6月更文挑战第5天】*WordPress是一个功能强大的开源内容管理系统
162 2
|
11月前
|
PHP 数据安全/隐私保护
WordPress网站添加输入密码才能访问功能
为你的网站添加 php 输入密码访问网站功能,这个功能其实很简单,在应用中的场景也是往往为内部或是个人使用的页面里面,在登陆的时候可以弹出一个窗口,做隐私保护,以下的代码可以满足大家的这个功能,同时可以在代码里自定义密码。同时只要在现有代码的上下添加好加密的代码就可以。记得要调整一下默认密码。不然会被入侵的。
130 0
若依修改,http和https的两种写法,部署成功的两种写法
若依修改,http和https的两种写法,部署成功的两种写法
|
Kubernetes 应用服务中间件 nginx
Kubernetes v1.12/v1.13 二进制部署集群(HTTPS+RBAC)
Kubernetes v1.12/v1.13 二进制部署集群(HTTPS+RBAC)
|
缓存 安全 应用服务中间件
蓝易云 - Nginx的HTTPS部署与安全性能优化教程
以上就是在Nginx上部署HTTPS并进行安全性能优化的基本步骤。需要注意的是,这些步骤可能会根据您的具体需求和环境有所不同。
88 0
【ripro美化】全站美化包WordPress RiPro主题二开美化版sucaihu-childV1.9(功能集成到后台)
1、【宝塔】删除ripro文件,上传最新ripro版本,然后上传压缩包内的ripro里面的对应文件到ripro主题对应内覆盖(找到对应路径单个文件去覆盖)。 2、然后上传ripro-chlid子主题美化包到/wp-content/themes路径下 3、注意顺序 原版–>美化包–>后台启用子主题(已启用请忽略)。
405 0
【ripro美化】全站美化包WordPress RiPro主题二开美化版sucaihu-childV1.9(功能集成到后台)
|
Kubernetes 容器
使用kubeadm部署k8s报错:The kubelet is not running或者level=error msg="Handler for POST /v1.43/images/create returned error: Head \"https://us-west2-dock
使用kubeadm部署k8s报错:The kubelet is not running或者level=error msg="Handler for POST /v1.43/images/create returned error: Head \"https://us-west2-dock