一,概念
前言
UI的轉變:B/S架構
Web Server
Nginx(Tengine)、Apache、IIS
靜態元素
.html .img .css .swf .mp4
動態元素
.php .jsp .cgi .asp SQL
Web 中間件
php: PHP-fpm、HHVM
jsp: Tomcat、JBOSS、Resin、IBM WebSphere
常見組合方式
LNMP (Linux + Nginx + MySQL + PHP) //php-fpm進程
LAMP (Linux + Apache + MySQL + PHP) //php作爲Apache的模塊
Nginx + Tomcat //取代Apache與Tomcat結合,java
二,靜態站點
Apache
建議使用2.4及以上的版本
Apache基礎
Apache: www.apache.org
軟件包: httpd
服務端口: 80/tcp(http) 443/tcp(https,http+ssl)
配置文件: /etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf
/etc/httpd/conf.d/welcome.conf //默認測試頁面
安裝Apache
[root@apache ~]# yum -y install httpd
[root@apache ~]# systemctl start httpd
[root@apache ~]# systemctl enable httpd
虛擬主機
目的
虛擬主機VirtualHost
作用:在一臺物理服務器上運行多個網站
類型
基於主機名
基於IP地址
基於端口號
配置虛擬主機
實現如下網站:
www.a.org /var/www/html/a.org
www.b.org /b.org
注意關閉firewalld和selinux
www.a.org
# mkdir /var/www/html/a.org
# vim /var/www/html/a.org/index.html
創建a.org的配置文件
# vim /etc/httpd/conf.d/a.org.conf
<VirtualHost *:80>
ServerName www.a.org
DocumentRoot /var/www/html/a.org
</VirtualHost>
檢測配置文件語法,重啓服務
# httpd -t
# systemctl restart httpd
注意:web客戶機可以自建DNS,也可以HOSTs文件解析。
測試:yum install -y elinks
elink www.a.org
www.b.org
# mkdir /b.org
# vim /b.org/index.html
創建b.org的配置文件
# vim /etc/httpd/conf.d/b.org.conf
<VirtualHost *:80>
ServerName www.b.org
DocumentRoot /b.org
</VirtualHost>
<Directory "/b.org">
Require all granted
</Directory>
檢測配置文件語法,重啓服務
# httpd -t
# systemctl restart httpd
注意:域名解析。www.b.org
測試:yum install -y elinks
elink www.b.org
三,動態站點
1,HttpServer:(測試LAMP)
首先安裝Apache和上面的靜態站點一樣
1.1 Apache 基礎
Apache: www.apache.org
軟件包: httpd
服務端口: 80/tcp(http) 443/tcp(https,http+ssl)
配置文件: /etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf
/etc/httpd/conf.d/welcome.conf //默認測試頁面
1.2 安裝 Apache
[root@apache ~]# yum -y install httpd
[root@apache ~]# systemctl start httpd
[root@apache ~]# systemctl enable httpd
1.3 防火牆
[root@apache ~]# sed -ri '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
[root@apache ~]# setenforce 0
[root@apache ~]# firewall-cmd --permanent --add-service=http
[root@apache ~]# firewall-cmd --permanent --add-service=https
[root@apache ~]# firewall-cmd --reload
1.5 網站主目錄建立測試頁
1 建立靜態頁面。
[root@apache ~]# vim /var/www/html/index.html
1702test
請注意觀察測試是否成功。
2 建立動態頁面。
[root@apache ~]# vim /var/www/html/2.php
<?php
phpinfo();
?>
請觀察測試是否成功,NO(需要安裝php)
1.6 安裝php
之所以,測試不成功。是因爲沒有人解析動態語言。
[root@apache ~]# yum -y install php //php作爲Apache的模塊
觀察安裝後的結果。
[root@apache ~]# ll /etc/httpd/modules/libphp5.so
-rwxr-xr-x. 1 root root 4588368 Jun 24 2015 /etc/httpd/modules/libphp5.so
[root@apache ~]# ll /etc/httpd/conf.d/php.conf
-rw-r--r--. 1 root root 691 Jun 24 2015 /etc/httpd/conf.d/php.conf
重新啓動網站程序。調動php模塊
[root@apache ~]# systemctl restart httpd
請再次刷新頁面。見下圖。PHP語言被解析成功。
請思考。PHP查詢的數據存放在哪裏?
答:在數據庫中。
1.7 安裝數據庫(mysql/Mariadb)
[root@apache ~]# yum -y install mariadb-server mariadb
[root@apache ~]# systemctl start mariadb.service
[root@apache ~]# systemctl enable mariadb.service
增強mysql。
[root@apache ~]# mysql_secure_installation //提升mariadb安全 [可選]
Set root password? [Y/n]
New password: 123
Re-enter new password: 123
手動測試賬號密碼。
[root@apache ~]# mysql -uroot -p123 //登錄mariadb測試
MariaDB [(none)]> \q
[root@apache ~]# rm -rf /var/www/html/*
[root@apache ~]# vim /var/www/html/2.php
<?php
$link=mysql_connect('localhost','root','123');
if ($link)
echo "Successfuly";
else
echo "Faile";
mysql_close();
?>
請思考。數據庫是否可以連接成功。
測試結果: php無法連接mysql 。因爲缺少php連接mysql的工具
1.8 配置php-mysql,用來連接Mariadb
配置php連接Mariadb
[root@apache ~]# yum -y install php-mysql
[root@apache ~]# php -m //查看php有哪些擴展
[PHP Modules]
mysql
mysqli
[root@apache ~]# systemctl restart httpd
1.9 Apache基本配置
[root@tianyun ~]# vim /etc/httpd/conf/httpd.conf
ServerRoot "/etc/httpd" //安裝目錄
Listen 80 //監聽端口
IncludeOptional conf.d/*.conf //包含conf.d下的*.conf文件
User apache //運行Apache的用戶
Group apache //運行Apache的用戶組
DirectoryIndex index.html index.php //設置默認主頁,用一個。
DocumentRoot //站點默認主目錄
2.0 MPM優化 (面試題)
# prefork MPM //進程模式(穩定)
<IfModule prefork.c>
StartServers 6 //初始建立的進程數
MinSpareServers 6 //最小空閒的進程數
MaxSpareServers 15 //最大空閒的進程數
ServerLimit 2000 //最大啓動的進程數 默認256
MaxClients 2000 //最大併發連接數 默認256
MaxRequestsPerChild 4000 //每個子進程在其生命週期內允許響應的最大請求數,0不限制
</IfModule>
# worker MPM //線程模式(高效)
<IfModule worker.c>
StartServers 2 //初始建立的進程數
ThreadsPerChild 50 //每個進程建立的線程數
MinSpareThreads 100 //最小空閒的線程數
MaxSpareThreads 200 //最大空間的線程數
MaxClients 2000 //最大的併發訪問量(線程)
MaxRequestsPerChild 0 //每個子進程在其生命週期內允許響應的最大請求數,0不限制
</IfModule>
圖示
2,部署網上商城 ecshop
下載的logo
2.1 基礎環境
一,基礎環境
[root@apache ~]# sed -ri '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
[root@apache ~]# setenforce 0
[root@apache ~]# systemctl stop firewalld.service
[root@apache ~]# systemctl disable firewalld.service
2.2 安裝LAMP
二、安裝LAMP
[root@apache ~]# yum -y install httpd mariadb-server mariadb php php-mysql gd php-gd
[root@apache ~]# systemctl start httpd mariadb
[root@apache ~]# systemctl enable httpd mariadb
[root@apache ~]# mysqladmin -u root password "123"
2.3 安裝Ecshop
2.3.1 上傳站點源碼包
1. Apache 配置虛擬主機
[root@apache ~]# vim /etc/httpd/conf.d/zhufo.conf
httpd -t httpd配置文件語法檢測
[root@apache ~]# systemctl restart httpd
2. 導入ecshop網站源碼
[root@apache ~]# mkdir -p /webroot/zhufo
[root@apache ~]# unzip ECShop_V3.0.0_UTF8_release0518.zip
[root@apache ~]# cp -rf ECShop_V3.0.0_UTF8_release0518/* /webroot/zhufo/
[root@tianyun ~]# vim /etc/hosts //如果沒有使用DNS解析
192.168.122.161 www.zhufo.top zhufo.top //161爲 web server IP
2.3.2 前臺安裝源碼包
[root@apache ~]# chmod -R 777 /webroot/zhufo/
修改php.ini時區
[root@apache ~]# vim /etc/php.ini
[root@apache ~]# systemctl restart httpd
3,部署博客系統wordpress
Logo
3.1 基礎環境[已完成]
一、基礎環境[已完成]
[root@apache ~]# sed -ri '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
[root@apache ~]# setenforce 0
[root@apache ~]# systemctl stop firewalld.service
[root@apache ~]# systemctl disable firewalld.service
3.2 安裝LAMP[已完成]
二、安裝LAMP[已完成]
[root@apache ~]# yum -y install httpd mariadb-server mariadb php php-mysql gd php-gd
[root@apache ~]# systemctl start httpd mariadb
[root@apache ~]# systemctl enable httpd mariadb
[root@apache ~]# mysql_secure_installation
3.3 安裝Ecshop
3.3.1 Apache 配置虛擬主機
1. Apache 配置虛擬主機
[root@apache ~]# vim /etc/httpd/conf.d/tianyun.conf
[root@apache ~]# systemctl restart httpd
3.3.2 導入wordpress網站源碼
2. 導入wordpress網站源碼
[root@apache ~]# mkdir -p /webroot/tianyun
[root@apache ~]# tar xf wordpress-4.5.3-zh_CN.tar.gz
[root@apache ~]# cp -rf wordpress/* /webroot/tianyun/
3.3.3 準備數據庫(創建一個庫)
3.3.4 安裝wordpress[任何client]
4. 安裝wordpress [任何client]
[root@tianyun ~]# vim /etc/hosts
192.168.122.161 www.zhufo.top zhufo.top www.tianyun.com tianyun.com //161爲 web server IP
chmod -R 777 /webroot/tianyun
4,Apache訪問控制
準備環境
[root@aliyun ~]# rm -rf /var/www/edusoho/web/download/*
[root@aliyun ~]# echo "download....." > /var/www/edusoho/web/download/index.html
僅用於http 2.4+
案例1:允許所有主機訪問
<Directory "/var/www/edusoho/web/download">
AllowOverride None
Require all granted
</Directory>
AllowOverride All 允許子目中的 .htaccess 中的設置覆蓋當前設置
AllowOverride None 不允許子目中的 .htaccess 中的設置覆蓋當前設置
Require all denied
案例2:只允許網段192.168.5.0/24、192.168.10.0/24訪問
<Directory "/var/www/edusoho/web/download">
AllowOverride None
Require ip 202.106.0.0/24
Require ip 114.248.160.203
</Directory>
案例3:只拒絕某些主機訪問
<Directory "/var/www/edusoho/web/download">
AllowOverride None
<RequireAll>
Require not ip 114.248.160.203
Require all granted
</RequireAll>
</Directory>
案例4:針對文件的訪問控制4
不允許在/var/www/edusoho/web/upload目錄中執行.php文件
<Directory /webroot/baidu/upload>
AllowOverride None
Require all granted
<Files ~ "\.php$" >
Order allow,deny
Deny from all
</Files>
</Directory>