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包
[root@apache ~]# yum install php-fpm php httpd -y
1.2.2重启php和httpd
[root@apache ~]# systemctl restart php-fpm
[root@apache ~]# systemctl restart httpd
1.2.3编辑文件
[root@apache ~]# vim /var/www/html/index.php
<?phpphpinfo();
?>
1.2.4测试
1.2.5配置文件说明
a.php.conf文件说明
[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-FPMSetEnvIfNoCase ^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配置说明
[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压缩文件
[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库扩展,用于处理图像
[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的驱动
[root@apache ~]# yum list all | grep mysql | grep php
php-mysqlnd.x86_64 8.0.20-3.el9 @rhel9-AppStream
d.安装
[root@apache ~]# yum install php-pecl-zip php-gd php-pecl-zip mysql-server -y
1.3.2将nextcloud通过xftp上传并解压缩
a.nextcloud通过xftp上传
b.解压缩
[root@apache ~]# tar -xvf nextcloud-29.0.16.tar.bz2 -C /var/www/html/
1.3.3设置所属者:所属组
[root@apache ~]# chown -R apache:apache /var/www/html/nextcloud*
1.3.4启动MySQL并修改密码创建nextcloud库
a.启动MySQL
[root@apache ~]# systemctl start mysqld
b.修改密码
[root@apache ~]# mysqldadmin -uroot -p password '123'
c.登录并创建nextcloud库
[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.编辑配置文件
[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/184ServerName 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/185ServerName 192.168.75.185#HTTP到HTTPS的永久重定向:#301表示永久重定向(搜索引擎会更新索引指向新地址)#将所有访问该IP的HTTP请求重定向到对应的HTTPS地址redirect 301 / https://192.168.75.185
</VirtualHost>
b.检测并重启
[root@apache ~]# httpd -t
Syntax OK
[root@apache ~]# systemctl restart httpd
c.添加IP
[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.检测并重启
[root@apache ~]# httpd -t
Syntax OK
[root@apache ~]# systemctl restart httpd
e.测试
[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.编辑配置文件
[root@apache ~]# vim /etc/httpd/cond.f/port.conf
<Directory /virtualhost>Allowoverride noneRequire all granted
</Directory>
rewriteengine on
<VirtualHost 192.168.75.184:80>DocumentRoot /virtualhost/port/80ServerName 192.168.75.184RewriteRule ^(/.*)$ http://192.168.183/$1 [R=302] #定义重定向
</VirtualHost>Listen 10000
<VirtualHost 192.168.75.185:10000>DocumentRoot /virtualhost/port/10000ServerName 192.168.75.185
</VirtualHost>
b.检测并重启
[root@apache ~]# httpd -t
Syntax OK
[root@apache ~]# systemctl restart httpd
c.测试
[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