Menu Close

LAMP手动搭建详程

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

发表回复