• Apache 网站服务基础


    Apache 网站服务基础

    目录

    Apache 网站服务基础

    1.1:apache简介

    1:Apache 的起源

    2:Apache 的主要特点

    1.2:安装 httpd 服务器

    1:准备工作

    2:源码编译及安装

    3:确认安装结果

    4:优化执行路径

    5:添加 httpd 系统服务

    二:httpd 服务器的基本配置

    2.1:Web 站点的部署过程

    1:确定网站名称、IP 地址

    2:配置并启动 httpd 服务

    3:部署网页文档

    4:在客户机中访问 Web 站点

    5:查看 Web 站点的访问情况

    2.2:httpd.conf 配置文件

    1:全局配置项

    2:区域配置项

    三:构建虚拟 Web 主机

    3.1:基于域名的虚拟主机

    1:为虚拟主机提供域名解析(两个域名)

    2:为虚拟主机准备网页文档(两个网站)

    3:添加虚拟主机配置

    4:在客户机中访问虚拟 Web 主机

    3.2:基于 IP 地址、基于端口的虚拟主机

    1:为主机设置多个IP地址

    2:基于 IP 地址的虚拟主机

    3:基于端口的虚拟主机

    四:MySQL 的编译安装

    1:准备工作

    2:源码编译及安装

    3:安装后的其他调整

    4:启动并访问 MySQL 服务

    五:构建 PHP 运行环境

    5.1:安装 PHP 软件包

    1:准备工作

    2:安装扩展工具库

    3:编译安装 PHP

    5.2:设置 LAMP 组件环境

    1:php.ini 配置调整

    2:httpd.conf 配置调整

    5.3:测试 LAMP 协同工作

    1:测试 PHP 网页能否正确显示

    2:测试 PHP 网页能否访问 MySQL 数据库

    六:LAMP 架构应用实例

    6.1:部署 phpMyAdmin 系统

    1:解包并复制到网站目录

    2:建立配置文件 config.inc.php

    3:访问 phpMyAdmin 的 Web 管理界面

    6.2:使用 phpMyAdmin 系统


    1.1:apache简介

    1:Apache 的起源
    2:Apache 的主要特点

    1.2:安装 httpd 服务器

    1:准备工作

    检查是否用rpm方式安装有httpd,如果有,卸载使用 RPM 方式安装的 httpd,并且编译安装之前需要先安装依赖软件。

    [root@www ~]# systemctl stop firewalld

    [root@www ~]# systemctl disable firewalld

    [root@localhost ~]# rpm -qa httpd

    #检查是否已经安装有httpd

    [root@localhost ~]# rpm -e httpd --nodeps

    注意:

    如果提示错误,证明没有rpm安装的httpd

    [root@localhost ~]# yum install -y apr-util-devel pcre-devel gcc* lrzsz

    2:源码编译及安装

    (1)解包

    [root@localhost ~]# tar zxvf httpd-2.4.25.tar.gz

    [root@localhost ~]# cd httpd-2.4.25

    (2)配置

    [root@localhost httpd-2.4.25]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi

    备注:

    --prefix:制定程序的安装目录

    --enable-so:启用动态加载模块DSO的支持,使httpd具备进一步扩展功能的能力

    --enable-rewrite:启用网页地址重写功能,用于网站优化

    --enable-charset-lite:启动字符集支持,以便支持使用各种字符集编码的网页

    --enable-cgi:启用cgi脚本程序支持,扩展网站的应用访问能力

    DSO是Dynamic SharedObjects(动态共享目标)的缩写,它是现代Unix派生出来的操作系统都存在着的一种动态连接机制。它提供了一种在运行时将特殊格式的代码,在程序运行需要时,将需要的部分从外存调入内存执行的方法。

    (3)编译及安装

    [root@localhost httpd-2.4.25]# make && make install

    3:确认安装结果

    [root@localhost httpd-2.4.25]# ls /usr/local/httpd/

    4:优化执行路径

    [root@localhost ~]# ln -s /usr/local/httpd/bin/* /usr/local/bin

    [root@localhost ~]# ls -l /usr/local/bin/httpd /usr/local/bin/apachectl

    [root@localhost ~]# httpd -v

    Server version: Apache/2.4.25 (Unix)

    Server built:   Jun  6 2022 20:42:04

    5:添加 httpd 系统服务

    [root@localhost ~]# cd /lib/systemd/system

    [root@localhost system]# vim httpd.service

    [Unit]

    Description=The Apache HTTP Server

    After=network.target

    [Service]

    Type=forking

    PIDFile=/usr/local/httpd/logs/httpd.pid

    ExecStart= /usr/local/bin/apachectl $OPTIONS

    ExecReload= /bin/kill -HUP $MAINPID

    [Install]

    WantedBy=multi-user.target

    注释:

    After=network.target

    Before/After:要是一个服务 Before 另一个服务,那么在并行启动时(Systemd 总是用进程 0 并行启动所有东西,然后通过这两个标记来二次等待排序),那另一个服务这时就会等这个服务先启动并返回状态,注意是先启动而不是启动成功,因为失败也是一种状态,一定要成功才启动另一个服务是通过依赖关系定义的。反之 After 亦然。After=network.target 指的是后于network服务启动。

    Type=forking

    服务的启动方式,有fork方式和simple方式

    forking的方式在启动程序后会调用 fork() 函数,把必要的通信频道都设置好之后父进程退出,留下守护精灵的子进程。你要是使用的这种方式,最好也指定下 PIDFILE=,不要让 Systemd 去猜,非要猜也可以,设置 GuessMainPID 为 yes。

    ExecReload= /bin/kill -HUP $MAINPID

    $ MAINPID是服务的systemd变量,它指向主应用程序的PID

    WantedBy=multi-user.target

    指定运行级别

    [root@localhost system]# systemctl daemon-reload

    [root@localhost system]# systemctl enable httpd.service

    [root@localhost system]# systemctl start httpd

    [root@localhost system]# netstat -anpt | grep httpd

    二:httpd 服务器的基本配置

    2.1:Web 站点的部署过程
    1:确定网站名称、IP 地址

    [root@localhost ~]# hostnamectl set-hostname www.benet.com

    [root@localhost ~]# bash

    2:配置并启动 httpd 服务

    (1)配置 httpd 服务

    [root@www ~]# vim /usr/local/httpd/conf/httpd.conf

    修改网站名称:

    ServerName www.benet.com

    [root@www ~]# httpd -t

    Syntax OK

    (2)启动 httpd 服务

    [root@www ~]# systemctl restart httpd

    [root@www ~]# netstat -anpt | grep httpd

    3:部署网页文档

    [root@www ~]# echo "it works" > /usr/local/httpd/htdocs/index.html

    4:在客户机中访问 Web 站点

    [root@localhost ~]# vim /etc/hosts

    添加域名解析:

    192.168.10.101 www.benet.com

    [root@localhost ~]# curl www.benet.com

    5:查看 Web 站点的访问情况

    [root@www ~]# tail /usr/local/httpd/logs/access_log

    注意:

    在此处为httpd服务器做个快照,为后续章节提供实验环境

    2.2:httpd.conf 配置文件

    1:全局配置项
    2:区域配置项

    三:构建虚拟 Web 主机

    3.1:基于域名的虚拟主机

    1:为虚拟主机提供域名解析(两个域名)

    [root@www ~]# vim /etc/hosts

    192.168.10.101 www.benet.com

    192.168.10.101 www.accp.com

    2:为虚拟主机准备网页文档(两个网站)

    [root@www ~]# mkdir -p /var/www/html/benetcom

    [root@www ~]# mkdir -p /var/www/html/accpcom

    [root@www ~]# echo "

    www.benet.com

    "> /var/www/html/benetcom/index.html

    [root@www ~]# echo "

    www.accp.com

    "> /var/www/html/accpcom/index.html

    3:添加虚拟主机配置

    [root@www ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf

    Require all granted

        DocumentRoot "/var/www/html/benetcom"

        ServerName www.benet.com

        ErrorLog "logs/www.benet.com.error_log"

        CustomLog "logs/www.benet.com.access_log" common

        DocumentRoot "/var/www/html/accpcom"

        ServerName www.accp.com

        ErrorLog "logs/www.accp.com.error_log"

        CustomLog "logs/www.accp.com.access_log" common

    [root@www ~]# vim /usr/local/httpd/conf/httpd.conf

    去掉注释符号:

    Include conf/extra/httpd-vhosts.conf

    [root@www ~]# systemctl restart httpd

    4:在客户机中访问虚拟 Web 主机

    [root@node2 ~]# cat /etc/hosts

    192.168.10.101 www.benet.com

    192.168.10.101 www.accp.com

    [root@node2 ~]# curl www.benet.com

    www.benet.com

    [root@node2 ~]# curl www.accp.com

    www.accp.com

    3.2:基于 IP 地址、基于端口的虚拟主机

    1:为主机设置多个IP地址

    [root@www ~]# cd /etc/sysconfig/network-scripts/

    [root@www network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0

    [root@www network-scripts]# cp ifcfg-ens33 ifcfg-ens33:1

    [root@www network-scripts]# vim ifcfg-ens33:0

    IPADDR=192.168.10.210

    NETMASK=255.255.255.0

    GATEWAY=192.168.10.254

    NAME=ens33:0

    DEVICE=ens33:0

    [root@www network-scripts]# vim ifcfg-ens33:1

    IPADDR=192.168.10.220

    NETMASK=255.255.255.0

    GATEWAY=192.168.10.254

    NAME=ens33:1

    DEVICE=ens33:1

    [root@www network-scripts]# systemctl restart network

    [root@www network-scripts]# ip address

    2:基于 IP 地址的虚拟主机

    [root@www ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf

    Require all granted

        DocumentRoot "/var/www/html/benetcom"

        ServerName www.benet.com

        ErrorLog "logs/www.benet.com.error_log"

        CustomLog "logs/www.benet.com.access_log" common

        DocumentRoot "/var/www/html/accpcom"

        ServerName www.accp.com

        ErrorLog "logs/www.accp.com.error_log"

        CustomLog "logs/www.accp.com.access_log" common

    [root@www ~]# systemctl restart httpd

    客户端测试

    [root@node2 ~]# curl 192.168.10.210

    www.benet.com

    [root@node2 ~]# curl 192.168.10.220

    www.benet.com

    3:基于端口的虚拟主机

    [root@www ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf

    Require all granted

    Listen 80

    Listen 8080

    192.168.10.101:80>

        DocumentRoot "/var/www/html/benetcom"

        ServerName www.benet.com

        ErrorLog "logs/www.benet.com.error_log"

        CustomLog "logs/www.benet.com.access_log" common

    192.168.10.101:8080>

        DocumentRoot "/var/www/html/accpcom"

        ServerName www.accp.com

        ErrorLog "logs/www.accp.com.error_log"

        CustomLog "logs/www.accp.com.access_log" common

    [root@www ~]# systemctl restart httpd

    [root@www ~]# netstat -anpt | grep httpd

    客户端测试

    [root@node2 ~]# curl 192.168.10.101:80

    www.benet.com

    [root@node2 ~]# curl 192.168.10.101:8080

    www.accp.com

    恢复前面做的快照,继续后面的实验

    四:MySQL 的编译安装

    1:准备工作

    (1)检查安装环境

    [root@www ~]# rpm -q mysql-server mysql

    未安装软件包 mysql-server

    未安装软件包 mysql

    [root@www ~]# yum install -y ncurses-devel autoconf

    备注:

    初始化mysql需要autoconf,它是自动化配置脚本生成工具,安装自动化脚本生成工具

    (2)安装cmake

    [root@www ~]# tar zxf cmake-2.8.6.tar.gz

    [root@www ~]# cd cmake-2.8.6

    [root@www cmake-2.8.6]# ./configure

    [root@www cmake-2.8.6]# gmake && gmake install

    备注:

    此步骤可以用yum的方法安装cmake

    yum -y install cmake

    2:源码编译及安装

    (1)创建运行用户

    [root@www ~]# useradd -M -s /sbin/nologin mysql

    (2)解包

    [root@www ~]# tar zxf mysql-5.6.36.tar.gz

    (3)配置

    [root@www ~]# cd mysql-5.6.36

    [root@www 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

    -DDEFAULT_COLLATION:用于指定数据集如何排序,以及字符串的比对规则

    (4)编译并安装

    [root@www mysql-5.6.36]# make && make install

    3:安装后的其他调整

    1)对数据库目录进行权限设置

    [root@www mysql-5.6.36]# chown -R mysql:mysql /usr/local/mysql

    2)建立配置文件

    [root@www mysql-5.6.36]# rm -rf /etc/my.cnf

    备注:

    系统原来已经有这个文件了,该文件是由mariadb-libs包生成的

    [root@www mysql-5.6.36]# cp support-files/my-default.cnf /etc/my.cnf

    (3)初始化数据库

    [root@www mysql-5.6.36]# /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/

    (4)设置环境变量

    [root@www mysql-5.6.36]# echo "PATH=$PATH:/usr/local/mysql/bin">> /etc/profile

    [root@www mysql-5.6.36]# . /etc/profile

    4:启动并访问 MySQL 服务

    [root@www mysql-5.6.36]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld

    [root@www mysql-5.6.36]# chmod +x /etc/rc.d/init.d/mysqld

    [root@localhost mysql-5.6.36]# chkconfig --add mysqld

    [root@localhost mysql-5.6.36]# chkconfig mysqld on

    [root@localhost mysql-5.6.36]# systemctl start mysqld

    [root@www mysql-5.6.36]# netstat -anpt | grep mysqld

    [root@www ~]# mysql -u root -p

    注意:

    此时的mysql是空密码

    mysql>set password =password('123456');

    mysql>EXIT

    [root@www ~]#mysql -u root -p123456

    五:构建 PHP 运行环境

    5.1:安装 PHP 软件包
    1:准备工作

    为了避免发生程序冲突等现象,建议先将 RPM 方式安装的 PHP 及相关依赖包

    [root@www ~]# rpm -e php php-cli php-ldap php-common php-mysql --nodeps

    [root@www ~]# yum -y install zlib-devel libxml2 libxml2-devel lxz-devel

    2:安装扩展工具库

    1)安装 libmcrypt

    [root@www ~]# tar zxf libmcrypt-2.5.8.tar.gz

    [root@www ~]# cd libmcrypt-2.5.8/

    [root@www libmcrypt-2.5.8]# ./configure

    [root@www libmcrypt-2.5.8]# make && make install

    [root@www libmcrypt-2.5.8]# ln -s /usr/local/lib/libmcrypt.* /usr/lib/

    2)安装 mhash

    [root@www ~]# tar zxf mhash-0.9.9.9.tar.gz

    [root@www ~]# cd mhash-0.9.9.9/

    [root@www mhash-0.9.9.9]# ./configure

    [root@www mhash-0.9.9.9]# make && make install

    [root@www mhash-0.9.9.9]# ln -s /usr/local/lib/libmhash* /usr/lib/

    3)安装 mcrypt

    [root@www ~]# tar zxf mcrypt-2.6.8.tar.gz

    [root@www ~]# cd mcrypt-2.6.8/

    [root@www mcrypt-2.6.8]# ./configure

    [root@www mcrypt-2.6.8]# export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

    [root@www mcrypt-2.6.8]# ./configure

    [root@www mcrypt-2.6.8]# make && make install

    备注:

    上述三个扩展工具库,可以设置好阿里的yum仓库,用yum安装

    yum -y install libmcrypt libmcrypt-devel mcrypt mhash

    3:编译安装 PHP

    1)解包

    [root@www ~]# tar zxf php-5.5.38.tar.gz

    [root@www ~]# cd php-5.5.38

    2)配置

    [root@www php-5.5.38]# ./configure --prefix=/usr/local/php5 \

    --with-mcrypt \

    --with-apxs2=/usr/local/httpd/bin/apxs \

    --with-mysql=/usr/local/mysql \

    --with-mysqli=/usr/local/mysql/bin/mysql_config \

    --with-config-file-path=/usr/local/php5 \

    --enable-mbstring

    注意:

    不能用192.168.10.101连接。

    想用主机IP连接需要在安装php时指定mysql函数集为mysqlnd

    --with-mysqli=mysqlnd

    如果使用本地函数集,php连接mysql数据库可以使用localhost、127.0.0.1、本机主机名

    ,但不能用本机IP地址192.168.10.101

    --with-apxs2=/usr/local/httpd/bin/apxs

    整合apache,apxs功能是使用mod_so中的LoadModule指令,加载指定模块到apache,要求apache要打开SO模块

    (3)编译及安装

    [root@www php-5.5.38]# make && make install

    备注:

    这一步时间很长

    备注:

    ./configure --prefix=/usr/local/php5 \

    --with-apxs2=/usr/local/httpd/bin/apxs \

    --with-mysql=mysqlnd \

    --with-mysqli=mysqlnd \

    --with-config-file-path=/usr/local/php5 \

    --enable-mbstring

    5.2:设置 LAMP 组件环境

    1:php.ini 配置调整

    1php.ini 的建立及基本设置

    [root@www php-5.5.38]# cp php.ini-development /usr/local/php5/php.ini

    [root@www php-5.5.38]# vim /usr/local/php5/php.ini

    default_charset = "UTF-8"               #去掉前面的注释

    file_uploads = On

    upload_max_filesize = 2M

    max_file_uploads = 20

    post_max_size = 8M

    short_open_tag = On              ##修改值

    extension=php_mysqli.dll                ##去掉前面的注释

    (2)添加 ZendGuardLoader 优化模块

    [root@www~]#tar zxf zend-loader-php5.5-linux-x86_64_update1.tar.gz

    [root@www~]#cd zend-loader-php5.5-linux-x86_64/

    [root@www zend-loader-php5.5-linux-x86_64]#cp ZendGuardLoader.so /usr/local/php5/lib/php

    [root@www ~]# vim /usr/local/php5/php.ini

    [PHP]下面添加:

    [PHP]

    zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so

    zend_loader.enable=1

    2:httpd.conf 配置调整

    [root@www ~]# vim /usr/local/httpd/conf/httpd.conf

    Listen *:80

    …… //省略部分内容

    LoadModule php5_module modules/libphp5.so

    AddType application/x-httpd-php .php

    DirectoryIndex index.html index.php

    #Include conf/extra/httpd-vhosts.conf

    [root@www ~]# apachectl -t

    Syntax OK

    [root@www ~]# systemctl restart httpd

    5.3:测试 LAMP 协同工作

    1:测试 PHP 网页能否正确显示

    [root@www ~]# vim /usr/local/httpd/htdocs/test1.php

    phpinfo( );

    ?>

    2:测试 PHP 网页能否访问 MySQL 数据库

    [root@www ~]# vim /usr/local/httpd/htdocs/test2.php

    $link=mysqli_connect('localhost','root','123456');

    if($link) echo "恭喜你,数据库连接成功啦!!";

    mysqli_close($link);

    ?>

    注意:

    对数据库的连接授权,授权后可以使用主机名连接

    mysql> grant all on *.* to root@'www.benet.com' identified by '123456';

    注意:

    如果用的是mysqlnd,要用IP地址进行连接,127.0.0.1192.168.10.101都可以

    六:LAMP 架构应用实例

    6.1:部署 phpMyAdmin 系统
    1:解包并复制到网站目录

    [root@www ~]# tar zxf phpMyAdmin-4.7.2-all-languages.tar.gz

    [root@www ~]# mv phpMyAdmin-4.7.2-all-languages/ /usr/local/httpd/htdocs/phpMyAdmin

    2:建立配置文件 config.inc.php

    [root@www ~]# cd /usr/local/httpd/htdocs/phpMyAdmin

    [root@www phpMyAdmin]# cp config.sample.inc.php config.inc.php

    备注:

    用msqlnd,需要修改文件

    [root@www phpMyAdmin]# vim config.inc.php

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

    3:访问 phpMyAdmin 的 Web 管理界面

    6.2:使用 phpMyAdmin 系统

    1:创建新的库、新的表

    2:表及数据记录的管理

    3:直接执行 MySQL 查询语句

  • 相关阅读:
    MYSQL函数,一篇文章看完!
    nginx根据header分流
    大一,小小练习题--含答案
    从零开始学React--环境搭建
    python 日常处理数据中使用到的零碎知识点(一)
    Java逻辑运算符(&&、||和!),Java关系运算符
    【QT+JS】QT和JS 中的正则表达式 、QT跑JS语言
    细聊.Net Core中IServiceScope的工作方式
    2023年中国液压胀管分类、产量及市场规模分析[图]
    国货之光!ATECLOUD—功能如此强大的测试测量上位机开发工具软件!
  • 原文地址:https://blog.csdn.net/L17335916197/article/details/139632636