apache实现LAMP+apache(URL重定向)

1.apache实现LAMP

LAMP是指一组通常一起使用来运行动态网站的自由软件名称首字母的缩写

a.L是指Linux操作系统

b,.A是指Apache,用来提供Web服务

c.M指MySQL,用来提供数据库服务

d.P指PHP,是动态网站的一种开发语言

1.1php运行方式说明

php是脚本语言,可用命令行执行,开发动态网站需Web服务器(如Apache,Nginx)配合php解析,Web服务器仅能处理静态资源,动态脚本需php处理器解析后,将结果回传给服务器再发给服务器

apache解析php有两种方式:

模块加载(mod_php),php以模块集成到Apache,性能好但是伸缩性差

FastCGI方式,通过协议让服务器与外部FastCGI进程(如php解释器)通信,伸缩性好但有通信开销

CGI是Web服务器与外部程序的接口协议,FastCGI是其改进版,性能更优,php-fpm则是管理php-FastCGI进程的工具

1.2以php-fpm形式配置php

1.2.1安装php包

bash 复制代码
[root@apache ~]# yum install php-fpm php httpd -y

1.2.2重启php和httpd

bash 复制代码
[root@apache ~]# systemctl restart php-fpm
[root@apache ~]# systemctl restart httpd

1.2.3编辑文件

bash 复制代码
[root@apache ~]# vim /var/www/html/index.php
<?php
  phpinfo();
?>

1.2.4测试

1.2.5配置文件说明

a.php.conf文件说明
bash 复制代码
[root@apache ~]# grep -Ev "^.*#|^$"  /etc/httpd/conf.d/php.conf
<Files ".user.ini">  #禁止访问.user.ini文件
    Require all denied
</Files>
AddType text/html .php  #设置 PHP 文件的 MIME 类型
DirectoryIndex index.php   #默认索引文件
<IfModule !mod_php.c>   #如果未加载 mod_php,则使用 PHP-FPM
    SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1  #将http授权头传递给php-fpm
    <FilesMatch \.(php|phar)$>  #将所有 .php和 .phar文件交给 PHP-FPM 处理
        SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"   #通过FastCGI协议与PHP-FPM通信
    </FilesMatch>
</IfModule>
<IfModule  mod_php.c>  #如果加载了 mod_php,则使用内置mod_php解析相关文件
    <FilesMatch \.(php|phar)$>
        SetHandler application/x-httpd-php
    </FilesMatch>
    php_value session.save_handler "files"
    php_value session.save_path    "/var/lib/php/session"
    php_value soap.wsdl_cache_dir  "/var/lib/php/wsdlcache"
</IfModule>
b.php-fpm配置说明
bash 复制代码
[root@apache ~]#  grep -Ev "^.*;|^$"  /etc/php-fpm.conf
#引入/etc/php-fpm.d/目录下所有.conf后缀的配置文件
include=/etc/php-fpm.d/*.conf
[global]
#指定PHP-FPM进程的PID文件路径
pid = /run/php-fpm/php-fpm.pid
#指定错误日志文件路径
error_log = /var/log/php-fpm/error.log
#设置是否以守护进程
daemonize = yes

1.3配置LAMP(配置文件包已资源绑定)

1.3.1安装与php和mysql相关的软件包

a.php-pecl-zip:php的zip扩展,用于处理zip压缩文件
bash 复制代码
[root@apache ~]# yum list all | grep php | grep zip
php-pecl-zip.x86_64                                  1.19.2-6.el9                       @rhel9-AppStream
b.php-gd:php的GD库扩展,用于处理图像
bash 复制代码
[root@apache ~]# yum list all | grep php | grep gd
php-gd.x86_64                                        8.0.20-3.el9                       @rhel9-AppStream
c.php-mysqlnd是php连接MySQL的驱动
bash 复制代码
[root@apache ~]# yum list all | grep mysql | grep php 
php-mysqlnd.x86_64                                   8.0.20-3.el9                       @rhel9-AppStream
d.安装
bash 复制代码
[root@apache ~]# yum install php-pecl-zip php-gd php-pecl-zip mysql-server -y

1.3.2将nextcloud通过xftp上传并解压缩

a.nextcloud通过xftp上传
b.解压缩
bash 复制代码
[root@apache ~]# tar -xvf nextcloud-29.0.16.tar.bz2 -C /var/www/html/

1.3.3设置所属者:所属组

bash 复制代码
[root@apache ~]# chown -R apache:apache /var/www/html/nextcloud*

1.3.4启动MySQL并修改密码创建nextcloud库

a.启动MySQL
bash 复制代码
[root@apache ~]# systemctl start mysqld
b.修改密码
bash 复制代码
[root@apache ~]# mysqldadmin -uroot -p password '123'
c.登录并创建nextcloud库
bash 复制代码
[root@apache ~]# mysql -uroot -p123
mysql> create database nc     #创建nc为nextcloud的库

1.3.5测试

在浏览器登录http://192.168.75.184/nextcloud/,并点击存储数据库输入数据库用户root,密码123,使用的数据库为nc,登录用户本地主机,点击安装即可

成功结果图:

2.URL重定向

URL重定向是指将客户端请求从一个URL地址转移到另外一个LRL地址的web服务器技术,这两个URL地址可以是同一个域名下的不同资源,也可以是不同的域名

URL重定向分类:

301:永久重定向,服务器向客户端发送指令,告诉客户端当前请求的URL被永久的重定向到其它的URL,客户端下次请求该资源应该使用新的URL

302:临时重定向,服务器向客户端发送指令,告诉客户端当前请求的URL被临时重定向到其它的URL,客户端下次请求该资源还可以继续使用原来的URL

2.1重定向案例

2.1.1使用redirect重定向

a.编辑配置文件
bash 复制代码
[root@apache ~]# vim /etc/httpd/conf.d/ip.conf 
<Directory /virtualhost>
  Allowoverride none   #禁止使用.htaccess文件覆盖当前配置
  Require all granted   #允许所有客户端访问该目录下的资源
</Directory>
<VirtualHost 192.168.75.184:80>
  DocumentRoot /virtualhost/ip/184
  ServerName 192.168.75.184
  #HTTP到HTTPS的重定向:
  #将所有访问该IP的HTTP请求(/代表根路径及所有子路径)
  #重定向到对应的HTTPS地址(默认使用302临时重定向)
  redirect / https://192.168.75.184
</VirtualHost>
<VirtualHost 192.168.75.185:80>
  DocumentRoot /virtualhost/ip/185
  ServerName 192.168.75.185
  #HTTP到HTTPS的永久重定向:
  #301表示永久重定向(搜索引擎会更新索引指向新地址)
  #将所有访问该IP的HTTP请求重定向到对应的HTTPS地址
  redirect 301 / https://192.168.75.185
</VirtualHost>
b.检测并重启
bash 复制代码
[root@apache ~]# httpd -t
Syntax OK
[root@apache ~]# systemctl restart httpd
c.添加IP
bash 复制代码
[root@apache ~]# ip a a 192.168.75.184/24 dev eth0 
[root@apache ~]# ip a a 192.168.75.185/24 dev eth0 
d.检测并重启
bash 复制代码
[root@apache ~]# httpd -t
Syntax OK
[root@apache ~]# systemctl restart httpd
e.测试
bash 复制代码
[root@apache ~]# curl 192.168.75.186
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>302 Found</title>
</head><body>
<h1>Found</h1>
<p>The document has moved <a href="https://192.168.75.190">here</a>.</p>
</body></html>
[root@apache ~]# curl 192.168.75.187
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="https://192.168.75.190">here</a>.</p>
</body></html>

2.1.2使用rewrite重定向

a.编辑配置文件
bash 复制代码
[root@apache ~]# vim /etc/httpd/cond.f/port.conf
<Directory /virtualhost>
  Allowoverride none
  Require all granted
</Directory>
rewriteengine on
<VirtualHost 192.168.75.184:80>
  DocumentRoot /virtualhost/port/80
  ServerName 192.168.75.184
  RewriteRule ^(/.*)$ http://192.168.183/$1 [R=302]  #定义重定向
</VirtualHost>
  Listen 10000
<VirtualHost 192.168.75.185:10000>
  DocumentRoot /virtualhost/port/10000
  ServerName 192.168.75.185
</VirtualHost>
b.检测并重启
bash 复制代码
[root@apache ~]# httpd -t
Syntax OK
[root@apache ~]# systemctl restart httpd
c.测试
bash 复制代码
[root@apache ~]# curl  192.168.75.183/test/
alias-test
[root@apache ~]# curl  192.168.75.183/hahaha/
<h1>sorry!</h1>your page not found
[root@apache ~]# curl  192.168.75.184/test
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>302 Found</title>
</head><body>
<h1>Found</h1>
<p>The document has moved <a href="http://192.168.75.183//test">here</a>.</p>
</body></html>
[root@apache ~]# curl -L  192.168.75.185/test
alias-test
[root@apache ~]# curl -L  192.168.75.185/hahaha
<h1>sorry!</h1>your page not found
相关推荐
猫豆~20 小时前
软件包管理——2day
linux·运维
大白菜13241 天前
进程的信号
linux
XH-hui1 天前
【打靶日记】群内靶机Secure
linux·网络安全
Shingmc31 天前
【Linux】进程控制
linux·服务器·算法
视觉装置在笑7131 天前
Shell 变量基础与进阶知识
linux·运维
悟能不能悟1 天前
apache配置反向代理
apache
Web极客码1 天前
如何通过命令行工具检查 Linux 版本信息
linux·运维·服务器
Lynnxiaowen1 天前
今天我们继续学习Kubernetes内容pod资源对象
运维·学习·容器·kubernetes·云计算
欢鸽儿1 天前
Vitis】Linux 下彻底清除启动界面 Recent Workspaces 历史路径
linux·嵌入式硬件·fpga
繁华似锦respect1 天前
C++ 智能指针底层实现深度解析
linux·开发语言·c++·设计模式·代理模式