web的應用及使用rpm包安裝

WEB Services
www: Http超文本傳輸協議,無狀態協議,以純AscII碼值傳輸文件,比較常見的版本0.9 1.0 1.1,c/s架構
html超文本標記語言
MIME:多功能互聯網郵件擴展 Multipurpose Internet Mail extension,使http協議可以傳輸不同格式的各種信息
SMTP:簡單的郵件傳輸協議
基於tcp的80端口
網頁;由網頁對象object組成,一個網頁可能由多個object組成

keepalive:保持連接,當我們建立連接三次握手建立之後傳輸完第一個文件之後不會立即斷開,會等待傳輸第二個文件。但是,如果沒有限制可能影響服務器的處理速度
所以要限制一次連接之後最多傳輸多少個文件,過了限制就告訴他去等待下次連接。還要限制空閒時間,否則會影響其他用戶使用。沒有等到使用時,就去排隊等待。

apache:ASF,到現在不再是一個軟件,而是一個軟件基金會,提供web服務的是httpd。
web:httpd 作爲web服務器是非常卓越的,有60%的網站都是以httpd做的。以穩定,功能強大而著稱。

MPM:多道處理模塊 Multi Processing Modules,由於每一個用戶連接來都需要一個進程,佔用內存空間,來實現對此的解決,因此就出現了用線程thread來解決

兩個模塊:prefork 完全基於進程,每一個用戶的訪問就是一個獨立的會話,都是靠一個獨立的進程來響應。啓動時會啓動 一個父進程,每一個用戶訪問時1httpd會生成一個進程,撤銷一個用戶時會撤銷一個進程。 父進程 和子進程的關係.資源利於率低,比較穩定,一個進程崩潰了不會影響其他進程。linux不支持線程,大多數用戶都使用prefork

worker 基於線程的,充分利於線程處理併發,啓動時會生成多個進程,以實現用戶訪問時負載均衡。進程和線程。對內存的利用率比較高,提高了空間的使用率,併發能力比較高,響應比較快,但是不穩定。一個線程崩潰就會影響到其他線程。他們之間是線程和進程。像大多數的比較能支持原生線程的就使用worker。
thread:一個進程可以包含多個線程,這些線程共享進程的所有資源,他們實現了資源分配

HTTP1.1協議提供了8種動作
1.Get向特定資源發出請求
2.POST 向指定資源提交數據進行處理請求。數據被包含在請求體中。POST請求可能會導致新的資源的建立或已有資源的修改
3.HEAD;只顯示協議的內容,不顯示數據
4.PUT 向指定資源位置上傳其最新的內容
5.TRACE:回顯服務器收到的請求
6.DELETE:刪除指定資源
7.OPTIONS:測試請求,測試對方服務器支持功能
8.CONNECT:預留給能夠將連接改爲管道的代理服務器
URL;同一資源定位符 protoc://host/path/to/file

常見的web服務器
httpd (軟件) apache  nginx  lighttpd ,html server

WEb Application server:中間件
IBM:Websphere
BEA: Weblogic (oracle 收購了)
Apache:Tomcat
Oracle:oc4j
resin
web + container
動態網頁:根據用戶的請求時間,地域、身份等信息臨時生成的網頁。本身是靠一個程序在服務端執行下,在格式化成html文檔。
web服務器只解析html文檔,web服務器會調用本地的處理器,運行程序,然後把執行結果格式化成html文檔,然後再傳給web服務器。

CGI:通用網關接口 Common Gateway Interface,我們可以配置我們的web服務器跟一個本地的語言解釋器交互,當web服務器發現一個程序時就會調用語言解釋器,然後再把解析結果返回給web服務器。大多數網頁都是解釋性的語言。
動態網頁的響應速度比靜態網頁慢

FastCGI:把某種語言解釋器做成一個服務,工作在某個端口,生成多個空閒進程進程,等待用戶訪問,需要時只需調動進程,等不需要時在釋放。空閒太多時就會銷燬。從而使web服務器從中脫離出來,實現高性能的應用。

模塊:把某種語言解釋器做成對應web服務器的模塊,需要時把模塊裝入到自己的運行空間。
rsync 可以實現主從同步

LAMP  Linux+apache+MYSQL+PHP(網頁腳本語言)
1.使用rpm包實現
2.使用源代碼實現

使用rpm包安裝web服務器
apache:httpd軟件
http://www.apache.org/ 官網
version:1.x 以穩定爲要務
 2.X  2.0 2.2 添加了一些功能
yum list httpd * 查看軟件包

進程名httpd,運行進程用戶身份如果是rpm包裝的是apache
配置文件在/etc/httpd
/etc/httpd/conf/httpd.conf 主配置文件
/etc/httpd/conf.d/*.conf 配置文件的組成成分,在主配置文件中會使用include把它們包含進來
網頁文件在/var/www/html,也可以放在別處,不過selinux和web服務器是有聯繫的,selinux中要求把網頁放在此,如果要放在別處,就要改變其標籤
httpd.i386 服務器端
httpd-devel.i386  開發包
httpd-nanual.i386 使用手冊

1.安裝httpd包
yum install httpd
要保證主機名和地址是一致的,可以互相解析
vim /etc/hosts  使主機名和IP地址對應
192.168.0.181
www.magedu.com  www
vim /etc/sysconfig/network 修改主機名
HOSTNSME=www.magedu.com
apache在啓動時會自動檢測主機名和地址是否一致,如果不一致就不會啓動。主機名要改全。

/etc/init.d/httpd 服務腳本
chkconfig httpd on 開機啓動
service httpd start 啓動服務
可以再/var/www/html中做一個簡單的index.html網頁測試一下
可以訪問一下試一試

2.配置主配置文件 
參數Parameter  值value

vim /etc/httpd/conf/httpd.conf
(不區分大小寫,但是後面的字符串區分大小寫,)所有以#開頭的是註釋,分爲三個,Section1:Global Environment    Section2:’Main‘ Server configuration   Section3:Virtual Hosts

比較常用的參數:
Global Environment

ServerRoot "/etc/httpd" 服務器運行根目錄,不能隨意改的,自動編譯安裝時就不一定在此


PidFile  run/httpd.pid       服務進程號的保存路徑,特定識別這個進程是否在運行狀態,服務腳本用來判斷此進程是否處於此狀態的一種手段,也可以保護進程。當我們把服務關閉時,這些進程號文件也會被關閉。

 Timeout 120 Tcp三次握手超時的時間

KeepAlive  Off 是否啓用保持連接

MaxKeepAliveRequests 100 用戶最多可以請求多少個文件
KeepAliveTimeout 15 KeepAlive 保活連接超時時間

MPM
prefork.c的參數
StartServers  8 啓動服務時啓動幾個進程
事件同步異步
(strace -p PID 追蹤進程的運行狀態

ab;apache benchmark 對apache功能進行測試
-c 模擬多少個用戶進行訪問
-n 客戶端的請求數
ab -c -n url
-n>-c
)

MinSpareServers  最少空閒幾個進程

MaxSpareServers   最多空閒幾個進程

ServerLimit  有限時間內最多允許開啓多少個服務器進程

MaxClients   允許啓動的最大併發進程數

MaxRequestsPerChild 一個服務器進程最多可以接受多少個請求

Listen 監聽的地址和端口,可以用多次
Listen 192.168.0.181:80 監聽一個特定的端口
一個地址可以通過多個端口監聽

LoadModule 裝載模塊
Include conf.d/*.conf 包含的塊


‘Main’ server configuration  主服務器

ServerAdmin 服務器管理員的郵箱地址

ServerName  當前服務器的網站的名稱,如果被禁用就會使用主機名和IP地址

DocumentRoot "/var/www/html"存放網頁的位置
<Directory />
   Options FollowSymLinks 是否允許訪問鏈接文件
   AllowOverride None
<Directory "/var/www/html"> 訪問的方式,只對指定的目錄生效
 
Options Indexs(索引)FollowSymlinks       訪問的選項
基於IP的訪問控制功能:
AllowOverride None 是否允許覆蓋下面的認證
定義哪些用戶可以訪問
Order allow,deny(默認法則)先允許allow,在允許deny(不允許)
Allow from all  多個IP地址用空格隔開

使用AuthConfig的配置用戶的認證,使用用戶名和密碼
AllowOverride AuthConfig 使用認證
AuthName “”
AuthType basic
AuthUserFile /etc/httpd/.htpasswd
require valid-user所有合法的用戶
(htpasswd  創建用戶
-c  第一次使用,沒有這個文件就創建
-m  加密
htpasswd -c -m /etc/httpd/.htpasswd tom

httpd -t
service httpd configtest  檢查語法是否有誤

chcon -R --reference=/var/www/html /www  修改標籤)

日誌文件有兩個;
訪問日誌:/var/log/httpd/access_log
 錯誤日誌:/var/log/httpd/error_log

DirectoryIndex  網站的默認主頁面 index.html index.html.var 注意次序,第一個被找到的就是主頁

ErrorLog logs/error_log 錯誤日誌,相對於/etc/httpd
LogLeverl warn  錯誤日誌的級別
LogFormat 爲錯誤日誌定義別名
CustomLog logs/access_log  combined 訪問日誌的路徑及格式

Alias  “bbs”/test/bbs      別名,路徑別名,實現網頁的引用,把不在當前路徑的網頁,定義一個別名,引用到當前網頁
ScriptAlias 腳本別名 /cgi-bin/ "/var/www/cgi-bin/"
AddDefaultCharset 字符集的編碼 UTF-8
AddType 增加一些apache支持文件類型

Section3 :虛擬主機socket: IP:PORT
虛擬主機:一臺物理主機可以提供多個不同的站點
一個網站運行需要一個獨立的套接字
Socket IP:POTR
curl -I
http://172.16.100.1

做這個之前需要先配置好DNS服務器,根據需要配置DNS服務器。
虛擬主機的實現方式3種
基於IP
基於port 端口
基於FQDN,主機頭,需要啓用NamevirtualHost *:80
<VirtualHost *:80>
ServerName
DocumentRoot
</VirtualHost>

中心主機和虛擬主機是不能同時使用的
# DocumentRoot “ /www” 註銷中心主機
定義虛擬主機
<VirtualHost 192.168.0.181:80>
ServerName
DocumentRoot
ErroLog 定義錯誤日誌
CustomLog 訪問日誌
<Directory "/web/magedu.com">
  Optiongs
 </Directory>
</VirtualHost>

如果用的是基於主機頭的虛擬主機,用Ip地址訪問返回的是第一個虛擬主機的網頁

web服務基於ssl的實現,
http:80
https:443
https :http+ssl/tls
ssl: C-->S ssl/tls
 3des
s-->certificate -->C
C--verify cert-->S
C--send passwd-->S
S-->page-->client

需要關閉selinux, setenforc 0
1.SSL 會話的建立只能基於IP來實現;
2.apache,httpd默認不支持ssl,需要裝mod_ssl 的rpm包
yum -y install mod_ssl
cd /etc/httpd/conf.d/ssl.conf 配置文件
vim ssl.conf
crl 證書吊銷列表

做證書
#cd /etc/pki/CA/
#(umask 077; openssl genrsa 1024 > private/cakey.pem)
#vim /etc/pki/tls/openssl.cnf
dir   = /etc/pki/CA
再把一些默認值改一下,等下用的時候就不用寫了

生成自簽證書
openssl rep -new -x509 -key private/cakey.pem -out cacert.pem -days 36500
hostname一定要和訪問web服務的主機名一樣

touch index.txt serial
echo 01 > serial
mkdir newcerts certs crl

給web服務器發證

cd /etc/httpd/
mkdir ssl/
cd ssl/
(umask 077;openssl genrsa 1024 > httpd.key)
openssl rep -new -key httpd.key -out httpd.csr
openssl ca -in httpd.csr -out httpd.crt

vim /etc/httpd/conf.d/ssl.conf

DocumentRoot  啓用,
ServerName

SSLCertificateFile /etc/httpd/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key
這樣就可以了,保存退出就可以了。

ODBC:開放數據庫互聯,程序員進入數據庫的接口
JDBC:實現java數據庫互連的

動態網站:
asp:active Server Page
ASP.NET

php;開源的,最流行的,www.php.net,最新版本穩定版5.3  超文本域處理器。支持完全面向對象,最初叫personal home page,比較成熟的是4.的版本。可以直接做成index.php,也可以做成嵌入式的腳本index.html

jsp 最強了,可以把網頁代碼直接編譯成中間件

CGI: perl
 python
ruby  (ruby on rails) 不安全,可以實現基於網頁控制服務器


如何安裝佈置php
yum install php
作爲apache的模塊存在的
/etc/httpd/conf.d/php.conf 爲apache生成的關於php的文件
<?php   phpinfo()php的內置函數,測試php是否正常工作,並生成一個網頁 ?>


SQL:Struct Query Language 結構化查詢語言
編程語言:

關係型數據庫中用於實現數據管理的語言
oracle 最強大的 不適用於中小型的企業,最新的11g,9i 10g grid: 網格,
RAC;真應用集羣    企業中最信得過的數據庫
DB2 IBM的,在國內使用的比較廣泛,特別是政府
Infomix 被IBM收購
Sybase   曾和oracle,Infomix 同站三巨頭


SQL Server 適合中小型企業使用


MySQL:是互聯網中應用最多的數據庫,開放源碼,在2008被SUN收購,現屬於Oracle。簡單易用,關係型數據庫,RDBMS;關係型數據管理系統

MariaDB:MySQL的分支

Openoffice 工作在linux中,開源的,現在被Oracle收購

PostgreSQL 開源數據庫,技術比較好,
EnterpriseDB 企業版的


RDBMS:
數據文件:
select查詢
update修改
delete刪除
insert插入

安裝MySQL:
mysql-server 服務器
mysql 客戶端
 yum install mysql-server
service mysqld start
chkconfig mysqld on

客戶端mysql
使用mysql命令可以直接連接到mysql服務器
默認用戶是root 但不是操作系統的root用戶,默認沒有密碼
\q 退出
SHOW DATABASES;查看mysql的數據庫
information_schema  不存在,提供的規範
mysql 主要數據庫
test

CREATE DATABASE mydb; 創建數據庫

use mysql; 設定默認數據庫
SHOW TABLES; 查看錶

DROP DATABASE  mydb; 刪除數據庫
不會提示,
use mydb;
創建表 CREATE TABLE tb1 (
 -> Name CHAR字符串(20),
 -> Age INT 正型
 -> );
需要定義字段,及字段類型
DESC tb1 查看錶的結構
SELECT * FROM tb1 查看錶的內容
INSERT INTO tb1 (Name ,Age)VALUES ('Jerry',13);
向表中插入數據,字符串型的加引號
INSERT INTO tb1 (Name,Age) VALUES('hh',11,),(‘ww',12); 一次插入多行數據
INSERT INTO tb1 (Name) Values ('hh');
只插入一個字段的值
WHERE 指定條件
UPDATE tb1 SET Age=23 WHERE Name='hh';
修改字段的值,修改數據
DELETE FROM tb1 WHERE name='hh'; 刪除表中的數據
刪除對象使用DROP,刪除表中的數據用DELETE
quit 退出

 
使php連接數據庫
yum install php-mysql php-mbstring(支持擴展字符串)php-xml php-pear -y

php 可執行文件
phpize php的擴展並編譯
-v 可以顯示所有的php的擴展模塊
/etc/php.ini php的配置文件

測試是否連接數據庫成功
vim index.php
<?php $link=mysql_connect (localhost,'root','');
if ($link)
echo “sucess";
else
echo "failure";
?>


論壇:國內的 discuz 騰訊
phpwind 阿里巴巴

國外: phpbb

博客最著名的 wordpress

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章