httpd的安装以及配置文件查看,centos7的默认版本是httpd.x86_64 2.4.6
[root@lmj ~]#yum list all |grep httpd 查看yum库的软件
[root@lmj ~]#yum install httpd.x86_64 -y 安装软件以及依赖的软件
[root@lmj ~]#rpm -ql httpd.x86_64 查看安装的文件
例如:
可以试着启动服务查看下欢迎页面:
[root@lmj ~]#systemctl start httpd.service
监听了tcp6后,tcp也可以用的,
虽然这个只显示了IPv6的端口监听,但并不代表只接受IPv6的连接,实际上,apache会以mapped address (::FFFF:a.b.c.d) 方式来接受IPv4的连接。除了少部分平台上,例如FreeBSD,NetBSD,OpenBSD之外, Apache在编译时,默认启用了 –enable-v4-mapped 选项。所以,Apache会同时接受IPv6和IPv4的连接请求。
除非是 IPV6_V6ONLY 模式开启,才需要两个不同的socket来分别监听IPv6和IPv4.IPV6_V6ONLY模式可以通过 sysctl net.ipv6.bindv6only 来控制,默认是关闭的。如果你实在愿意在netstat中只看到IPv4端口的监听,那么,你可以修apachezhttp.conf 中,将
Listen 80
修改为
Listen 0.0.0.0:80
或是直接关闭IPV6
在浏览器中输入 192.168.211.158 访问默认页面:
下图就是访问的默认文件位置:
(我们可以把要访问的页面直接放在 /var/www/html/下面。)
[root@lmj ~]#ls -l /etc/httpd/conf 里面是主配置文件
[root@lmj ~]#ls -l /etc/httpd/conf.d/ 里面是模块化配置文件 (在配置时我可以重新建立以.conf结尾的文件而无需修改主配置文件。如增加新的监听端口新建模块化配置文件:
[root@lmj ~]#vim /etc/httpd/conf.d/prot.conf 输入Listen 8080 wq!保存退出即可,也可使用httpd -t检查语法是否错误。
Httpd的并发响应模型是由:MPM:prefork,worker,event来完成的。
prefork:两级进程模型,父进程管理子进程,每个子进程响应一个请求。
worker:三级模型,父进程管理子进程,子进程通过线程响应用户请求,每线程处理一个用户请求。
event:两级模型,父进程管理子进程,子进程通过event-drlven机制直接响应n个请求。
配置显示httpd服务的状态页面
[root@lmj /etc/httpd]#httpd -M |grep status
status_module (shared) 表示此模块已经加载,如果为加载需要加载此模块LoadModule status_module modules/mod_status.so
在需要访问的中心主机或虚拟主机配置文件中加入以下Location
<Location /server-status>
SetHandler server-status
<RequireAll>
Require ip 172.16(此处注意生产环境敏感信息不能使用Require all granted允许所有人访问)
</RequireAll>
</Location>
[root@lmj /etc/httpd]#vim conf/httpd.conf 编辑配置文件
[root@lmj /etc/httpd]#systemctl restart httpd.service 重启服务或加载配置文件,生产环境就不能重启动,重新加载配置文件即可。
LAMP:
httpd:接收用户的web请求;静态资源则直接响应;动态资源为php脚本,对此类资源的请求将交由php来运行;
php:运行php程序;
MariaDB:数据管理系统;
YAML
httpd与php结合的方式:
FastCGI
modules (把php编译成为httpd的模块)
MPM:
prefork: libphp5.so
event, worker: libphp5-zts.so
安装lamp:
CentOS 6: httpd, php, mysql-server, php-mysql
# service httpd start
# service mysqld start
CentOS 7: httpd, php, php-mysql, mariadb-server
# systemctl start httpd.service
# systemctl start mariadb.service
[root@lmj ~]#yum install httpd, php, php-mysql, mariadb-server -y
[root@lmj /etc/httpd]#vim /var/www/html/jchj.php 编辑php网页测试文件
浏览器访问以.php的网页
进入数据库mysql -uroot -p (已修改过root密码)
MariaDB [(none)]> show databases; 查看数据库
MariaDB [(none)]> CREATE DATABASE http_php CHARSET ‘utf8’; 创建一个数据库
MariaDB [(none)]> GRANT ALL ON http_php.* TO ‘root’@’localhost’ IDENTIFIED BY ‘123456’; 授权本地用户访问该数据库的权限。
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *. * TO root@’%’ IDENTIFIED BY ‘123456’;授权能远程连接的用户拥有所有库的权限
[root@lmj /]#vim /var/www/html/php_mysql.php
编写php连接mysql的测试代码:
<?php
$conn = mysql_connect(‘192.168.211.158′,’root’,’123456′);
if ($conn)
echo “OK”;
else
echo “Failure”;
?>
测试访问成功
httpd+php结合的方式:
module: php
fastcgi : php-fpm
补充:
Markdown
php-fpm:
CentOS 6:
PHP-5.3.2-:默认不支持fpm机制;需要自行打补丁并编译安装;
httpd-2.2:默认不支持fcgi协议,需要自行编译此模块;
解决方案:编译安装httpd-2.4, php-5.3.3+;
CentOS 7:
httpd-2.4:rpm包默认编译支持了fcgi模块;
php-fpm包:专用于将php运行于fpm模式;
配置文件:
服务配置文件:/etc/php-fpm.conf, /etc/php-fpm.d/*.conf
php环境配置文件:/etc/php.ini, /etc/php.d/*.ini
连接池:
pm = static|dynamic
static:固定数量的子进程;pm.max_children;
dynamic:子进程数据以动态模式管理;
pm.start_servers
pm.min_spare_servers
pm.max_spare_servers
;pm.max_requests = 500
创建session目录,并确保运行php-fpm进程的用户对此目录有读写权限;
# mkdir /var/lib/php/session
# chown apache.apache /var/lib/php/session
(1) 配置httpd,添加/etc/httpd/conf.d/fcgi.conf配置文件,内容类似:
DirectoryIndex index.php
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
(2) 虚拟主机配置
DirectoryIndex index.php
<VirtualHost *:80>
ServerName www.b.net
DocumentRoot /apps/vhosts/b.net
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/apps/vhosts/b.net/$1
<Directory “/apps/vhosts/b.net”>
Options None
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
假设fpm的status页面输出URL为/pmstatus,测试接口的输出位置为/ping