环境:
主机名 | IP地址 | 部署服务 |
---|---|---|
root@httpd | 192.168.1.61 | httpd网站服务 |
root@mysql | 192.168.1.62 | mysql数据库 |
root@php | 192.168.1.63 | php动态页面 |
参考博文:web服务1 web服务2
1.准备需要下载的源码包并将源码包复制到httpd服务器上
httpd提取码0fid
[root@httpd ~]# cd /usr/src/
[root@httpd src]# ls //把源码包放在了/usr/sre下
apr-1.5.2.tar.gz httpd-2.4.25.tar.gz pcre-8.39.tar.gz
apr-util-1.5.4.tar.gz openssl-1.0.1u.tar.gz zlib-1.2.8.tar.gz
2.编写http依赖包安装脚本
[root@httpd src]# cd
[root@httpd ~]# mkdir sh
[root@httpd ~]# cd sh/
[root@httpd sh]# vim yilai.sh //编辑脚本
#!/bin/bash
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel
#如果编译安装无法执行,可能是开发软件工具没有安装,需要先安装开发软件
cd /usr/src
tar zxf apr-1.5.2.tar.gz
cd apr-1.5.2
./configure --prefix=/usr/local/apr && make && make install
cd ..
tar zxf apr-util-1.5.4.tar.gz
cd apr-util-1.5.4
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && make && make install
cd ..
yum -y install zlib-*
tar zxf pcre-8.39.tar.gz
cd pcre-8.39
./configure --prefix=/usr/local/pcre && make && make install
cd ..
tar zxf openssl-1.0.1u.tar.gz
cd openssl-1.0.1u
./config -fPIC --prefix=/usr/local/openssl enable-shared && make && make install
[root@httpd sh]# bash yilai.sh //执行脚本
//需要注意的是,http的依赖源码包位置,和依赖包版本需要和脚本中对应。
3.编译安装httpd
[root@httpd ~]# cd /usr/src/
[root@httpd src]# tar zxf httpd-2.4.25.tar.gz
[root@httpd src]# cd httpd-2.4.25/
[root@httpd httpd-2.4.25]# ./configure --prefix=/usr/local/httpd --enable-so --enable-cgi--enable-cgid --enable-ssl --with-ssl=/usr/local/openssl --enable-rewrite --with-pcre=/usr/local/pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mods-shared=most --enable-mpms-shared=all --with-mpm=event --enable-proxy --enable-proxy-fcgi --enable-expires --enable-deflate && make && make install
相关参数解释:
–enable-so:支持动态共享模块(即打开 DSO 支持)
–enable-rewrite:支持 url 重写
–enable-ssl:支持 ssl
–with-ssl=/usr/local/openssl:指定 ssl 安装位置
–enable-cgi:启用 cgi
–enable-cgid:MPM 使用的是 event 或 worker 要启用 cgid
–enable-modules=most:明确指明要静态编译到 httpd 二进制文件的模块,为 空格分隔的模块名列表、all 或者 most,all 表示包含所有模块,most 表示包含大部分常用模 块
–enable-mods-shared=most:明确指明要以 DSO 方式编译的模块,为空格分隔 的模块名列表、all 或者 most,all 表示包含所有模 块,most 表示包含大部分模块
–enable-mpms-shared=all:启用 MPM 所有支持的模式,这样 event、worker、prefork 就会以 模块化的方式安装,要用哪个就在 httpd.conf 里配置就好了。
–with-mpm=event:指定启用的 mpm 模式,默认使用 enevt 模式,在 apache 的早期版本 2.0 默认 prefork,2.2 版本是 worker,2.4 版本是 event.
–with-pcre=/usr/local/pcre:支持 pcre
–with-z=/usr/local/zlib:使用 zlib 压缩库
–with-apr=/usr/local/apr:指定 apr 的安装路径
–with-apr-util=/usr/local/apr-util:指定 apr-util 的安装路径
–enable-expires:激活或通过配置文件控制 HTTP 的“Expires:”和“Cache-Control:”头内容,即 对网站图片、js、css 等内容,提供客户端浏览器缓存的设置。这个是 apache 调优的一个重 要选项之一。
–enable-deflate:提供对内容的压缩传输编码支持,一般是 html、js、css 等内容的站点。使 用此参数会打打提高传输速度,提升访问者访问的体验。在生产环境中,这是 apache 调优 的一个重要选项之一。
4.优化链接
[root@httpd ~]# ln -s /usr/local/httpd/bin/* /usr/local/bin/
5.添加为系统服务
[root@httpd ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@httpd ~]# vim /etc/init.d/httpd
添加下面内容,注意前面有#号
# chkconfig: 35 85 15
\\声明服务启动级别,开机启动顺序,关机关闭顺序
# description: apache 2.4.25
\\服务声明,简要信息
[root@httpd ~]# chkconfig --add httpd
//添加httpd为系统服务
[root@httpd ~]# chkconfig httpd on
//设置httpd开机自启
[root@httpd ~]# systemctl start httpd
//开启服务
6.查看httpd端口是否开启
[root@httpd ~]# netstat -anput | grep httpd
参考博文:mysql
需要的源码包:提取码ftq3
1.将源码包复制到mysql服务器中
[root@mysql ~]# cd /usr/src/
[root@mysql src]# ls
cmake-2.8.6.tar.gz mysql-5.6.36.tar.gz
2.安装环境需要的软件
[root@mysql ~]# yum -y install ncurses-devel gcc gcc-c++
3.添加mysql程序用户组
[root@mysql ~]# groupadd mysql
[root@mysql ~]# useradd -M -s /sbin/nologin mysql -g mysql
4.mysql需要cmake编译安装,所以先安装cmake包
[root@mysql ~]# cd /usr/src/
[root@mysql src]# tar zxf cmake-2.8.6.tar.gz
[root@mysql src]# cd cmake-2.8.6/
[root@mysql cmake-2.8.6]# ./configure gmake && gmake install
5.编译安装mysql
[root@mysql ~]# cd /usr/src/
[root@mysql src]# tar zxf mysql-5.6.36.tar.gz
[root@mysql src]# cd mysql-5.6.36/
[root@mysql mysql-5.6.36]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all
[root@mysql mysql-5.6.36]# make && make install
相关参数解释
-DSYSCONFDIR=/etc 指定初始化参数文件目录
-DDEFAULT_CHARSET=utf8 指定默认使用字符集 -DDEFAULT_COLLATION=utf8_general_ci 指定默认字符集校对规则 -DWITH_EXTRA_CHARSETS=all 指定额外支持其他字符集
6.赋权
[root@mysql ~]# chown -R mysql:mysql /usr/local/mysql/
7.centos7系统默认支持的是MariaDB数据库,所以系统默认的/etc/my.cnf配置文件是MariaDB的配置文件,而MySQL默认样本配置文件在,MySQL源码包目录中的support-files文件夹下my-default.cnf,再启动之前替换MySQL提供的配置文件内容。
[root@mysql mysql-5.6.36]# rm -rf /etc/my.cnf
[root@mysql mysql-5.6.36]# cp support-files/my-default.cnf /etc/my.cnf
[root@mysql mysql-5.6.36]# yum -y install perl-Data-Dumper
//安装perl模块
8.初始化数据库
[root@mysql mysql-5.6.36]# /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/
9.设置变量
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
. /etc/profile #立即生效
或者
[root@localhost ~]# ln -s /usr/local/mysql/bin/* /usr/local/bin/
10.开启服务
[root@mysql mysql-5.6.36]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@mysql mysql-5.6.36]# chmod +x /etc/init.d/mysqld
[root@mysql mysql-5.6.36]# /etc/init.d/mysqld start
11.优化路径
[root@mysql bin]# ln -s /usr/local/mysql/bin/mysql /usr/local/bin
[root@mysql bin]# ln -s /usr/local/mysql/bin/mysqladmin /usr/local/bin
12.验证mysql是否开启
[root@mysql ~]# netstat -anput | grep mysqld
需要的源码包 :提取码4qw4
1.安装前提软件
[root@php ~]# yum -y install epel-release.noarch
//可能有些包yum没有,所以安装epel扩展源
[root@php ~]# yum -y install gcc gcc-c++ libxml2-devel lzip2-devel libcurl-devel libmcrypt-devel openssl-devel bzip2-devel
2.复制libmcrpt和php包到php服务器中
安装libmcrypt加密工具
[root@php ~]# tar zxf libmcrypt-2.5.7.tar.gz
[root@php ~]# cd libmcrypt-2.5.7/
[root@php libmcrypt-2.5.7]# ./configure --prefix=/usr/local/libmcrypt && make && make install
3.编译安装php
[root@php ~]# tar zxf php-5.6.27.tar.gz
[root@php ~]# cd php-5.6.27/
[root@php php-5.6.27]# ./configure --prefix=/usr/local/php5.6 --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --enable-fpm --enable-sockets --enable-sysvshm --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --with-mhash --with-mcrypt=/usr/local/libmcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts && make && make install
相关选项的解释:
–prefix=/usr/local/php5.6//安装位置
–with-mysql=mysqlnd //支持 mysql
–with-pdo-mysql=mysqlnd //支持 pdo 模块
–with-mysqli=mysqlnd //支持 mysqli 模块注:上面的三选项的作用:数据库与 php 不在一个服务器上,指定此种方式,安装数据库连接驱动
–with-openssl//支持 openssl 模块–enable-fpm//支持 fpm 模式–enable-sockets//启用 socket 支持–enable-sysvshm//启用系统共享内存支持
–enable-mbstring//多字节字串、像我们的中文就是多字节字串–with-freetype-dir//支持 freetype、就要装 freetype-devel、跟字体相关的、字体解析工具 --with-jpeg-dir
–with-png-dir
注:上面的二选项的作用:处理 jpeg、png 图片的、php 可以动态生成 jpeg
图片–with-zlib//是个压缩库、在互联网传输时用来压缩传输的–with-libxml-dir=/usr//这个 libxml 是用来解析 xml 的、指定/usr 下 --enable-xml //支持 xml 的
–with-mhash//支持 mhash
–with-mcrypt=/usr/local/libmcrypt //libmcrypt-devel 这个程序包所指定的 --with-config-file-path=/etc //指定配置文件的存放路径的 --with-config-file-scan-dir=/etc/php.d //配置文件扫描路径
–with-bz2 //支持 BZip2
为了支持 apache 的 worker 或 event 这两个 MPM,编译时使用了–enable-
maintainer-zts 选项如果使用 PHP5.3 以上版本,为了链接 MySQL 数据库,可以指定 mysqlnd,这样在本机就不需要先安装 MySQL 或
MySQL 开发包了。mysqlnd 从 php 5.3 开始可用,可以编译时绑定到它(而不用和具体的 MySQL
客户端库绑定形成依赖),但从 PHP 5.4 开始它就是默认设置了
4.提供php配置文件
[root@php php-5.6.27]# cp php.ini-production /etc/php.ini
5.为 php-fpm 提供脚本
[root@php php-5.6.27]# cp sapi/fpm/init.d.php-fpm /etc/init.d//php-fpm
[root@php php-5.6.27]# chmod +x /etc/init.d/php-fpm
[root@php php-5.6.27]# chkconfig --add php-fpm
//添加为系统服务
[root@php php-5.6.27]# chkconfig php-fpm on
6.提供 php-fpm 配置文件并编辑
[root@php php-5.6.27]# cp /usr/local/php5.6/etc/php-fpm.conf.default /usr/local/php5.6/etc/php-fpm.conf
[root@php php-5.6.27]# vim /usr/local/php5.6/etc/php-fpm.conf
修改如下
pid = run/php-fpm.pid
listen = 192.168.1.63:9000 //监听地址及端口
pm.max_children = 50 //开机准备线程
pm.start_servers = 5 //开机准备进程
pm.min_spare_servers = 5 //空闲5
pm.max_spare_servers = 35 //最大35
[root@php php-5.6.27]# systemctl start php-fpm
7.验证php是否开启
[root@php php-5.6.27]# netstat -anput | grep php
1.启用Apache服务的代理转发
配置 apache 通过 fastcgi 协议调用 到php
在 Apache2.4 以后已经专门有一个模块针对 FastCGI 的实现,此模块为 mod_proxy_fcgi.so,
它其实是作为 mod_proxy.so 模块的扩充,因此,这两个模块都要加载
[root@httpd ~]# vim /usr/local/httpd/conf/httpd.conf
//加载下面两个模块,找到把#去掉即可
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
Include conf/extra/httpd-vhosts.conf //开启虚拟主机
//定位 AddType;添加下面两行:让 apache 能识别 php 格式的页面
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
//定位至 DirectoryIndex,添加index.php(支持 php 格式的主页)
DirectoryIndex index.php index.html
[root@httpd ~]# systemctl restart httpd
2.配置虚拟主机支持使用 fcgi
[root@httpd ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf //添加下面内容
ServerAdmin [email protected]
DocumentRoot "/var/www/benet" //根目录
ServerName www.benet.com
ServerAlias benet.com
ErrorLog "logs/benet.com-error_log"
CustomLog "logs/benet.com-access_log" common
ProxyRequests Off //关闭正向代理
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://192.168.1.63:9000/var/www/benet/$1 //填写php主机地址
#
# ProxyPass fcgi://192.168.1.63:9000/var/www/benet
#
Options FollowSymLinks
AllowOverride None
Require all granted
[root@httpd ~]# systemctl restart httpd
其中:
ProxyRequests off #关闭正向代理ProxyPassMatch:把以.php 结尾的文件请求发送到 php-fpm 进程,php-fpm 至少需要知道运行的目录和URI,所以这里直接在 fcgi://192.168.1.63:9000 后指明了这两个参数,其它的参数的传递已经被mod_proxy_fcgi.so 进行了封装,不需要手动指定。
特别注意的是,红色字体部分需要与中的 DocumentRoot 后的路一致 ProxyPassMatch。
只有满足特定正则模式的内容才会匹配并执行此规则,这里的模式是,^/(..php(/.)?)$ 从网站(虚拟主机的根目录开始,匹配任何以 .php 结尾,或者在 .php 之后紧跟一个 /再跟别的内容的路径。
^ (caret) 和 $ (dollar)标志要匹配的路径的开始和结束
( )括号里的内容可以用 $1 来表示,以方便后面引用它。 fcgi:// 192.168.163:9000 通过 mod_proxy_fcgi 来转发的代理,使用 fastCGI 协议,转到 PHP-FPM 监听的端口。
/path/to/your/documentroot/
非常重要!必须与虚拟主机的路径匹配,且必须是对应 php 文件在操作系统中的绝对路径。否则会找不到文件。
$1可以从原始请求扩展成整个请求路径的变量,这里指代前面( ) 里面匹配的那个路径(uri)
充:Apache httpd 2.4 以前的版本中,要么把 PHP 作为 Apache 的模块运行,要么添加一个第三方模块支持PHP-FPM 实现。
3.测试
登入mysql服务器创建测试用户
[root@mysql ~]# mysql
mysql> grant all on *.* to testuser@'%' identified by '123456' ;
在 php 服务器上的/var/www/benet 目录下创建.php 的测试页:
[root@php ~]# mkdir -p /var/www/benet
[root@php ~]# vim /var/www/benet/index.php
[root@php ~]# vim /var/www/benet/test.php
访问测试php
测试访问数据库
看到上面两个测试页说明 apache、php、mysql 之间可以协同工作了
下载discuz源码:提取码mgl9
1.复制Discuz包到apache和php服务器的/var/www/benet目录。
配置http服务器
[root@httpd ~]# mkdir -p /var/www/benet
[root@httpd benet]# unzip Discuz_X3.3_SC_UTF8.zip
[root@httpd benet]# mv upload/ /var/www/benet/bbs
[root@httpd benet]# chmod -R 777 /var/www/benet/bbs
配置php服务器(和http配置几乎一致)
[root@php benet]# unzip Discuz_X3.3_SC_UTF8.zip
[root@php benet]# mv upload/ /var/www/benet/bbs
[root@php benet]# chmod -R 777 /var/www/benet/bbs
2.在php服务器修改配置文件,重启服务
[root@php ~]# vim /etc/php.ini
找到下行并改为:
short_open_tag = On
[root@php ~]# systemctl restart php-fpm
3.mysql服务器上创建bbs数据库及用户
[root@mysql ~]# mysql
mysql> create database bbsdb;
mysql> grant all on bbsdb.* to runbbs@'%' identified by 'pwd@123';
4.安装discuz论坛
http://192.168.1.61/bbs/
访问discuz管理后台
http://192.168.1.61/bbs/admin.php