CentOS 7 部署LAMP架构(独立服务模式)

细节要求:(1) 三者分离于三台主机,Httpd与PHP以FastCGI模式通讯;

(2) 一个虚拟主机用于提供phpMyAdmin;另一个虚拟主机用于提供wordpress;

(3) 部署PHP加速器:xcache;

一、准备CentOS 7主机环境以及Repo仓库提供基于rpm安装包方式的程序包安装源

安装主机程序包规划:

主机1:web-server(192.168.1.132)  –安装httpd(2.4.6)

主机2:php-server(192.168.1.200)  –安装php-fpm(5.4.16),php-mysql,xcache,第三方软件wordpress.phpMyAdmin

主机3:db-server(192.168.1.201)    –安装mariadb-server(5.5.52)

3台主机均关闭selinux进程

二、web-server主机服务包与程序安装过程

#yum install httpd  -y                                                        –安装httpd服务

#systemctl enable httpd.service                                        –设置httpd服务开机自动运行

#systemctl start httpd.service                                            –启动httpd服务进程

#systemctl status httpd.serice                                            –查看httpd服务进程状态

#firewall-cmd –permanent –add-service=http               –设置防火墙允许http服务策略

#firewall-cmd –reload                                                      –加载防火墙策略

#ss -tnl | grep 80                                                               –查看httpd服务监听状态

#httpd -M | grep fcgi                                                        –查看httpd服务是否运行fastCGI调用模块

image.png

三、php-server主机安装过程

#yum install php-fpm php-mysql php-xcache  -y          –安装php-fpm服务

#yum install wordpress phpMyAdmin -y                        –安装第三方软件

#vim /etc/php-fpm.d/www/conf                                     –配置php-fpm服务参数

listen = 192.168.1.200:9000                                             –设置本机的socket监听服务

listen.allowed_clients = 192.168.1.132                             –设置允许访问php-fpm服务的客户端地址

#systemctl enable php-fpm.service                                 –启用php-fpm开机自动运行

#systemctl start php-fpm.service                                    –启动php-fpm服务进程

#systemctl status php-fpm.service                                  –查看服务进程状态

#firewall-cmd –permanent –add-port=9000/tcp          –设置防火墙允许php-fpm端口策略

#firewall-cmd –reload                                                     –加载防火墙策略

#ss -tnl | grep 9000                                                          –查看php-fpm服务的9000端口是否已启动并监听

#mkdir -pv /var/www/http/www                                     –创建测试web-server与php-server代理转发

#vim /var/www/http/www/index.php                              –创建测试页面

This is php-server

<?php

     phpinfo();

?>

测试结果

image.pngCentOS 7 部署LAMP架构(独立服务模式)

针对wordpress第三方软件的配置

#vim /etc/httpd/conf.d/wordpress.conf

<Directory /usr/share/wordpress>

  AllowOverride Options

  <IfModule mod_authz_core.c>

    # Apache 2.4

   Require all granted                                                   ##允许远程网络浏览访问资源

  </IfModule>

  <IfModule !mod_authz_core.c>

    # Apache 2.2

    Order Deny,Allow

    Deny from All

    Allow from 127.0.0.1

    Allow from ::1

</IfModule>

</Directory>

#vim /etc/wordpress/wp-config.php                                                  –定义访问远程mariadb数据的信息

// ** MySQL settings – You can get this info from your web host ** //

/** The name of the database for WordPress */

define('DB_NAME', 'test');

/** MySQL database username */

define('DB_USER', 'wordpress');

/** MySQL database password */

define('DB_PASSWORD', 'redhat');

/** MySQL hostname */

define('DB_HOST', '192.168.1.201');

/** Database Charset to use in creating database tables. */

define('DB_CHARSET', 'utf8');

针对phpMyAdmin第三方软件的配置

#vim /etc/httpd/conf.d/phpMyAdmin.conf

<Directory /usr/share/phpMyAdmin/>

   AddDefaultCharset UTF-8

   <IfModule mod_authz_core.c>

     # Apache 2.4

     <RequireAny>

       Require all granted                                                         ##允许远程网络浏览访问资源

       Require ip ::1

     </RequireAny>

   </IfModule>

   <IfModule !mod_authz_core.c>

     # Apache 2.2

     Order Deny,Allow

     Deny from All

     Allow from 127.0.0.1

     Allow from ::1

   </IfModule>

</Directory>

#vim /etc/phpMyAdmin/config.inc.php                              –仅指定远程mariadb数据库IP地址即可,其他保留默认

// The $cfg['Servers'] array starts with $cfg['Servers'][1].  Do not use

// $cfg['Servers'][0]. You can disable a server config entry by setting host

// to ''. If you want more than one server, just copy following section

// (including $i incrementation) serveral times. There is no need to define

// full server array, just define values you need to change.

$i++;

$cfg['Servers'][$i]['host']          = '192.168.1.201'; // MySQL hostname or IP address

$cfg['Servers'][$i]['port']          = '';          // MySQL port – leave blank for default port

$cfg['Servers'][$i]['socket']        = '';          // Path to the socket – leave blank for default socket

$cfg['Servers'][$i]['connect_type']  = 'tcp';       // How to connect to MySQL server ('tcp' or 'socket')

$cfg['Servers'][$i]['extension']     = 'mysqli';    // The php MySQL extension to use ('mysql' or 'mysqli')

$cfg['Servers'][$i]['compress']      = FALSE;       // Use compressed protocol for the MySQL connection

                                                    // (requires PHP >= 4.3.0)

$cfg['Servers'][$i]['controluser']   = '';          // MySQL control user settings

                                                    // (this user must have read-only

$cfg['Servers'][$i]['controlpass']   = '';          // access to the "mysql/user"

                                                    // and "mysql/db" tables).

                                                    // The controluser is also

四、db-server主机安装过程

#yum install mariadb-server -y                                        –安装mariadb数据库服务

#firewall-cmd –permanent –add-service=mysql           –设置防火墙允许mysql服务端口3306

#firewall-cmd –reload                                                     –加载防火墙策略

#vim /etc/my.cnf                                                              –修改mariadb配置文件

skip_name_resolve = ON                                                  –禁用数据库主机名解析

#systemctl enable mariadb.service                                  –启用mariadb服务开机自动运行

#systemctl start mariadb.service                                      –启动mariadb服务

#systemctl status mariadb.service                                    –查看服务进程状态

#ss -tnl | grep 3306                                                           –查看mysql端口监听状态

#/usr/bin/mysql_secure_install                                         –进行数据库初始化安装,设置root密码,是否允许远程访问管理等

#mysql -uroot -hlocalhost -p                                           –设置第三方程序访问数据库的账户权限

Mariadb[(none)]>grant all privileges on test.* to 'wordpress'@'192.168.1.%' identified by 'redhat';       –授予wordpress远程访问test数据库的权限

Mariadb[(none)]>grant all privileges on *.* to 'pmauser'@'192.168.1.%' identified by 'redhat';              –授予pmauser远程管理mariadb所有数据库的权限

五、web-server主机上创建虚拟主机,并设置php转发过程

#mkdir -pv /var/www/http/{www,wordpress,pma}                    –创建不同虚拟主机的主目录

#touch /var/www/http/{www,wordpress,pma}/index.php         –创建空的.php文件,提供FastCGI转发

#vim /etc/httpd/conf.d/virtualhost.conf                                    –创建并编辑针对虚拟主机的配置文件

<VirtualHost *:80>                                                                      ##测试FastCGI连通性

   ServerName www.test.com

   DocumentRoot /var/www/http/www

   DirectoryIndex index.php

   ProxyPassMatch "^/(.*\.php)$" "fcgi://192.168.1.200:9000/var/www/html/$1"

</VirtualHost>

<VirtualHost *:80>                                                                       ##测试phpMyAdmin

   ServerName pma.test.com

   DocumentRoot /var/www/http/pma

   DirectoryIndex index.php

   ProxyPassMatch "^/(.*\.php)$" "fcgi://192.168.1.200:9000/usr/share/phpMyAdmin/$1"

</VirtualHost>

<VirtualHost *:80>                                                                        ##测试wordpress

   ServerName wordpress.test.com

   DocumentRoot /var/www/http/wordpress

   DirectoryIndex index.php

   ProxyPassMatch "^/(.*\.php)$" "fcgi://192.168.1.200:9000/usr/share/wordpress/$1"

</VirtualHost>

六、验证虚拟主机访问

访问http://pma.test.com/phpmyadmin  虚拟主机

image.png

输入运行数据库远程访问的账户信息,打开图形化管理数据库的页面

image.png

访问http://wordpress.test.com 虚拟主机

image.png

原创文章,作者:N24_shishen,如若转载,请注明出处:http://www.178linux.com/69017

(0)
N24_shishenN24_shishen
上一篇 2017-02-17
下一篇 2017-02-17

相关推荐

  • 26期全程班-第五周博客作业

      1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; # grep “^[[:space:]]\+” /boot/grub/grub.conf 2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行; # grep “^…

    Linux干货 2017-03-09
  • N26-博客作业-week9

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/bash # declare -i nologin_num=0,login_num=0 for i in $(cut -d: -f7 /etc/passwd); do if …

    Linux干货 2017-04-01
  • 0803课堂练习与作业

    1、当用户xiaoming对/testdir 目录无执行权限时,意味着无法做哪些操作? 不能添加在/testdir中增删改文件或目录 2、当用户xiaoqiang对/testdir 目录无读权限时,意味着无法做哪些操作? 不能查看文件中的文件列表 3、当用户wangcai 对/testdir 目录无写权限时,该目录下的只读文件file1是否可修改和删除? 不…

    Linux干货 2016-08-04
  • Linux用户组管理

    马哥网络教育21期+第三周练习 用户及用户组 用户配置文件     用户:UID,/etc/passwd     组:GID,/etc/group 密码配置文件     用户:/etc/shadow    &n…

    Linux干货 2016-09-02
  • 马哥教育网络班N22期+第7周作业

    1、创建一个10G分区,并格式为ext4文件系统;(1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;mke2fs -t ext4 -b 2048 -L MYDATA -m 2 /dev/sdb1tune2fs -o acl /dev/sdb1(2) 挂载至/data/mydata目录,要求挂载时禁止…

    Linux干货 2016-11-14
  • 进程管理(二)之计划任务

    进程管理(二)之计划任务   一、计划任务: 1、未来的某时间点执行一次任务: (1)at:跟一个时间点,到点了自动运行指定的任务 (2)batch:系统自行选择空闲时间去执行此处指定的任务 2、周期性运行某任务:cron 二、at命令: 1、at命令:at [option] TIME 注:当输入完成后,使用Ctrl+d结束,不能使用Ctrl+c …

    Linux干货 2016-09-10

评论列表(2条)

  • luoweiro
    luoweiro 2017-02-23 07:31

    对于分开部署,后期学到nginx的时候,也可以多采用这种方式,但是要注意如果是多台机器如何做负载均衡,负载均衡的策略是怎样的?

    • N24_shishen
      N24_shishen 2017-02-24 10:58

      @luoweiro
      好的。有待后期继续学习新的知识点以后,在来更新。