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