導航:首頁 > 操作系統 > linuxcpost

linuxcpost

發布時間:2024-06-14 07:06:54

⑴ 給linux配置雙網卡,該如何用netconfig來設置

一.安裝和配置網路設備

在安裝linux時,如果你有網卡,安裝程序將會提示你給出tcp/ip網路的配置參數,如本機的 ip地址,預設網關的ip地址,DNS的ip地址等等.根據這些配置參數,安裝程序將會自動把網卡(linux系統首先要支持)驅動程序編譯到內核中去.但是我們一定要了解載入網卡驅動程序的過程,那麼在以後改變網卡,使用多個網卡的時候我們就會很容易的操作.網卡的驅動程序是作為模塊載入到內核中去的,所有linux支持的網卡驅動程序都是存放在目錄/lib/moles/(linux版本號)/net/ ,例如inter的82559系列10/100M自適應的引導網卡的驅動程序是eepro100.o,3COM的3C509 ISA網卡的驅動程序是3C509.o,DLINK的pci 10網卡的驅動程序是via-rhine.o,NE2000兼容性網卡的驅動程序是ne2k-pci.o和ne.o.在了解了這些基本的驅動程序之後,我們就可以通過修改模塊配置文件來更換網卡或者增加網卡.

1. 修改/etc/conf.moles 文件

這個配置文件是載入模塊的重要參數文件,大家先看一個範例文件

#/etc/conf.moles

alias eth0 eepro100

alias eth1 eepro100

這個文件是一個裝有兩塊inter 82559系列網卡的linux系統中的conf.moles中的內容.alias命令表明以太口(如eth0)所具有的驅動程序的名稱,alias eth0 eepro100說明在零號乙太網口所要載入的驅動程序是eepro100.o.那麼在使用命令 modprobe eth0的時候,系統將自動將eepro100.o載入到內核中.對於pci的網卡來說,由於系統會自動找到網卡的io地址和中斷號,所以沒有必要在conf.moles中使用選項options來指定網卡的io地址和中斷號.但是對應於ISA網卡,則必須要在conf.moles中指定硬體的io地址或中斷號, 如下所示,表明了一塊NE的ISA網卡的conf.moles文件.

alias eth0 ne

options ne io=0x300 irq=5

在修改完conf.moles文件之後,就可以使用命令來載入模塊,例如要插入inter的第二塊網卡:

#insmod /lib/moles/2.2.14/net/eepro100.o

這樣就可以在以太口載入模塊eepro100.o.同時,還可以使用命令來查看當前載入的模塊信息:

[root@ice /etc]# lsmod

Mole Size Used by

eepro100 15652 2 (autoclean)

返回結果的含義是當前載入的模塊是eepro100,大小是15652個位元組,使用者兩個,方式是自動清除.

2. 修改/etc/lilo.conf文件

在一些比較新的linux版本中,由於操作系統自動檢測所有相關的硬體,所以此時不必修改/etc/lilo.conf文件.但是對於ISA網卡和老的版本,為了在系統初始化中對新加的網卡進行初始化,可以修改lilo.conf文件.在/etc/lilo.conf文件中增加如下命令:

append="ether=5,0x240,eth0 ether=7,0x300,eth1"

這條命令的含義是eth0的io地址是0x240,中斷是5,eth1的io地址是0x300,中斷是7.

實際上,這條語句來自在系統引導影像文件時傳遞的參數,

LILO: linux ether=5,0x240,eth0 ether=7,0x300,eth1

這種方法也同樣能夠使linux系統配置好兩個網卡.類似的,在使用三個以上網卡的時候,也可以依照同樣的方法.

在配置好網卡之後,就應該配置TCP/IP的參數,在一般情況下,在安裝linux系統的同時就會提示你配置網路參數.但是之後如果我們想要修改網路設置,可以使用如下的命令:

#ifconfig eth0 A.B.C.D netmask E.F.G.H

A.B.C.D 是eth0的IP地址,E.F.G.H是網路掩碼.

其實,在linux系統中我們可以給一塊網卡設置多個ip地址,例如下面的命令:

#ifconfig eth0:1 202.112.11.218 netmask 255.255.255.192

然後,使用命令#ifconfig -a 就可以看到所有的網路介面的界面:

eth0 Link encap:Ethernet HWaddr 00:90:27:58:AF:1A
inet addr:202.112.13.204 Bcast:202.112.13.255 Mask:255.255.255.192
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:435510 errors:0 dropped:0 overruns:0 frame:2
TX packets:538988 errors:0 dropped:0 overruns:0 carrier:0
collisions:318683 txqueuelen:100
Interrupt:10 Base address:0xc000

eth0:1 Link encap:Ethernet HWaddr 00:90:27:58:AF:1A
inet addr:202.112.11.218 Bcast:202.112.11.255 Mask:255.255.255.192
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:10 Base address:0xc000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:2055 errors:0 dropped:0 overruns:0 frame:0
TX packets:2055 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0

我們看到網路介面有三個,eth0 , eth0:1,lo,eth0是真實的乙太網絡介面,eth0:1和eth0是同一塊網卡,只不過綁定了另外的一個地址,lo是會送地址。eth0和eth0:1可以使用不同網段的ip地址,這在同一個物理網段卻使用不同的網路地址的時候十分有用。

另外,網卡有一種模式是混雜模式(prosimc),在這個模式下,網卡將會接收網路中所有的數據包,一些linux下的網路監聽工具例如tcpmp,snort等等都是把網卡設置為混雜模式.

ifconfig命令可以在本次運行的時間內改變網卡的ip地址,但是如果系統重新啟動,linux仍然按照原來的默認的設置啟動網路介面。這時候,可以使用netconfig或netconf命令來重新設置默認網路參數。netconfig 命令是重新配置基本的tcp/ip參數,參數包括是否配置為動態獲得ip地址(dhcpd和bootp),網卡的ip地址,網路掩碼,預設網關和首選的域名伺服器地址。netconf命令可以詳細的配置所有網路的參數,分為客戶端任務,伺服器端任務和其他的配置三個部分,在客戶端的配置中,主要包括基本主機的配置(主機名,有效域名,網路別名,對應相應網卡的ip地址,網路掩碼,網路設備名,網路設備的內核驅動程序),DNS地址配置,預設網關的地址配置,NIS地址配置,ipx介面配置,ppp/slip的配置等等。在伺服器端配置中,主要包括NFS的配置,DNS的配置,ApacheWebServer配置,Samba的配置和Wu-ftpd的配置。在其他的配置選項中,一個是關於/etc/hosts文件中的主機配置,一個是關於/etc/networks文件中的網路配置信息,最後是關於使用linuxconf配置的信息。

在linuxconf命令下,同樣也可以配置網路信息,但是大家可以發現,linuxconf程序是調用netconf來進行網路配置的。

另外,在/etc/sysconfig/network-scripts目錄下存放著系統關於網路的配置文件,範例如下:

:<br><br>
ifcfg-eth0* ifdown-post* ifup-aliases* ifup-ppp*
ifcfg-eth1* ifdown-ppp* ifup-ipx* ifup-routes*
ifcfg-lo* ifdown-sl* ifup-plip* ifup-sl*
ifdown@ ifup@ ifup-post* network-functions

ifcfg-eth0是以太口eth0的配置信息,它的內容如下:

DEVICE="eth0" /*指明網路設備名稱*/
IPADDR="202.112.13.204" /*指明網路設備的ip地址*/
NETMASK="255.255.255.192" /*指明網路掩碼*/
NETWORK=202.112.13.192 /*指明網路地址*/
BROADCAST=202.112.13.255 /*指明廣播地址*/
ONBOOT="yes" /*指明在系統啟動時是否激活網卡*/
BOOTPROTO="none" /*指明是否使用bootp協議*/

所以,我們也可以修改這個文件來進行linux下網路參數的改變。[/SIZE]

--------------------------------------------------------------------------------

二 網路服務的配置

在這一部分,我們並不是詳細的介紹具體的網路伺服器(DNS,FTP,WWW,SENDMAIL)的配置(那將是巨大的篇幅),而是介紹一下與linux網路服務的配置相關的文件.

1. LILO的配置文件

在linux系統中,有一個系統引導程序,那就是lilo(linux loadin),利用lilo可以實現多操作系統的選擇啟動.它的配置文件是/etc/lilo.conf.在這個配置文件中,lilo的配置參數主要分為兩個部分,一個是全局配置參數,包括設置啟動設備等等.另一個是局部配置參數,包括每個引導影像文件的配置參數.在這里我就不詳細介紹每個參數,特別的僅僅說明兩個重要的參數:password和restricted選項,password選項為每個引導的影像文件加入口令保護.

我們都知道,在linux系統中有一個運行模式是單用戶模式,在這個模式下,用戶是以超級用戶的身份登錄到linux系統中.人們可以通過在lilo引導的時候加入參數(linux single 或linux init 0)就可以不需要口令直接進入單用戶模式的超級用戶環境中,這將是十分危險的.所以在lilo.conf中增加了password的配置選項來為每個影像文件增加口令保護.

你可以在全局模式中使用password選項(對所有影像文件都加入相同的口令),或者為每個單獨的影像文件加入口令.這樣一來,在每次系統啟動時,都會要求用戶輸入口令.也許你覺得每次都要輸入口令很麻煩,可以使用restricted選項,它可以使lilo僅僅在linux啟動時輸入了參數(例如 linux single)的時候才會檢驗密碼.這兩個選項可以極大的增加系統的安全性,建議在lilo.conf文件中設置它們.

由於password在/etc/lilo.conf文件是以明文存放的,所以必須要將/etc/lilo.conf文件的屬性改為僅僅root可讀(0400).

另外,在lilo的早期版本中,存在著引導扇區必須存放到前1024柱面的限制,在lilo的2.51版本中已經突破了這個限制,同時引導界面也變成了圖形界面更加直觀.將最新版本下載解壓後,使用命令make" 後,使用命令make install即可完成安裝.注意: 物理安全才是最基本的安全,即使在lilo.conf中增加了口令保護,如果沒有物理安全,惡意闖入者可以使用啟動軟盤啟動linux系統.

2. 域名服務的配置文件

(1)/etc/HOSTNAME 在這個文件中保存著linux系統的主機名和域名.範例文件

ice.xanet.e.cn

這個文件表明了主機名ice,域名是xanet.e.cn

(2)/etc/hosts和/etc/networks文件 在域名服務系統中,有著主機表機制,/etc/hosts和/etc/networks就是主機表發展而來在/etc/hosts中存放著你不需要DNS系統查詢而得的主機ip地址和主機名的對應,下面是一個範例文件:

# ip 地址 主機名 別名

127.0.0.1 localhosts loopback

202.117.1.13 www.xjtu.e.cn www

202.117.1.24 ftp.xjtu.e.cn ftp

在/etc/networks 中,存放著網路ip地址和網路名稱的一一對應.它的文件格式和/etc/hosts是類似的

(3)/etc/resolv.conf 這個文件是DNS域名解析器的主要配置文件,它的格式十分簡單,每一行由一個主關鍵字組成./etc/resolv.conf的關鍵字主要有:

domain 指明預設的本地域名,
search 指明了一系列查找主機名的時候搜索的域名列表,
nameserver 指明了在進行域名解析時域名伺服器的ip地址.下面給出一個範例文件:
#/etc/resolv.conf
domain xjtu.e.cn
search xjtu.e.cn e.cn
nameserver 202.117.0.20
nameserver 202.117.1.9

(4)/etc/host.conf 在系統中同時存在著DNS域名解析和/etc/hosts的主機表機制時,由文件/etc/host.conf來說明了解析器的查詢順序.範例文件如下:

#/etc/host.conf

order hosts,bind #解析器查詢順序是文件/etc/hosts,然後是DNS
multi on #允許主機擁有多個ip地址
nospoof on #禁止ip地址欺騙

3. DHCP的配置文件
/etc/dhcpd.conf是DHCPD的配置文件,我們可以通過在/etc/dhcpd.conf文件中的配置來實現在區域網中動態分配ip地址,一台linux主機設置為dhcpd伺服器,通過鑒別網卡的MAC地址來動態的分配ip地址.範例文件如下:

option domain-name "chinapub.com";
use-host-decl-names off;
subnet 210.27.48.0 netmask 255.255.255.192
{
filename "/tmp/image";
host dial_server
{
hardware ethernet 00:02:b3:11:f2:30;
fixed-address 210.27.48.8;
filename "/tmp/image";
}
}
在這個文件中,最主要的是通過設置的硬體地址來鑒別區域網中的主機,並分配給它指定的ip地址,hardware ethernet 00:02:b3:11:f2:30指定要動態分配ip的主機得網卡的MAC地址,fixed-address 210.27.48.8指定分配其ip地址。filename "/tmp/image"是通過tftp服務,主機所要得到的影像文件,可以通過得到的影像文件來引導主機啟動。

4. 超級守候進程inetd的配置

在linux系統中有一個超級守候進程inetd,inetd監聽由文件/etc/services指定的服務的埠,inetd根據網路連接請求,調用相應的服務進程來相應請求.在這里有兩個文件十分重要,/etc/inetd.conf和/etc/services,文件/etc/services定義linu系統中所有服務的名稱,協議類型,服務的埠等等信息,/etc/inetd.conf是inetd的配置文件,由它來指定那些服務可以由inetd來監聽,以及相應的服務進程的調用命令.首先介紹一下/etc/services文件,/etc/services文件是一個服務名和服務埠對應的資料庫文件,如下面所示:/etc/services文件

(實際上,以上僅僅是/etc/services的一部分,限於篇幅沒有全部寫出)

在這個文件中,為了安全考慮,我們可以修改一些常用服務的埠地址,例如我們可以把telnet服務的埠地址改為52323,www的埠改為8080,ftp埠地址改為2121等等,這樣僅僅需要在應用程序中修改相應的埠即可.這樣可以提高系統的安全性.

/etc/inetd.conf文件是inetd的配置文件, 首先要了解一下linux伺服器到底要提供哪些服務。一個很好的原則是" 禁止所有不需要的服務",這樣黑客就少了一些攻擊系統的機會./etc/inetd.conf範例文件

大家看到的這個文件已經修改過的文件,除了telnet 和ftp服務,其他所有的服務都被禁止了.在修改了/etc/inetd.conf之後,使用命令kill -HUP (inetd的進程號),使inetd重新讀取配置文件並重新啟動即可.

5. ip route的配置

利用linux,一台普通的微機也可以實現高性價比的路由器.首先讓我們了解一下linux的查看路由信息的命令:

[root@ice /etc]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
202.112.13.204 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
202.117.48.43 0.0.0.0 255.255.255.255 UH 0 0 0 eth1
202.112.13.192 202.112.13.204 255.255.255.192 UG 0 0 0 eth0
202.112.13.192 0.0.0.0 255.255.255.192 U 0 0 0 eth0
202.117.48.0 202.117.48.43 255.255.255.0 UG 0 0 0 eth1
202.117.48.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 202.117.48.1 0.0.0.0 UG 0 0 0 eth1
命令netstat -r n 得到輸出結果和route -n是一樣的.它們操作的都是linux 內核的路由表.

命令cat /proc/net/route的輸出結果是以十六進製表示的路由表.

[root@ice /etc]# cat /proc/net/route
Iface Destination Gateway Flags RefCnt Use Metric Mask
eth0 CC0D70CA 00000000 0005 0 0 0 FFFFFFF
eth1 2B3075CA 00000000 0005 0 0 0 FFFFFFF
eth0 C00D70CA CC0D70CA 0003 0 0 0 C0FFFFF
eth0 C00D70CA 00000000 0001 0 0 0 C0FFFFF
eth1 003075CA 2B3075CA 0003 0 0 0 00FFFFF
eth1 003075CA 00000000 0001 0 0 0 00FFFFF
lo 0000007F 00000000 0001 0 0 0 000000F
eth1 00000000 013075CA 0003 0 0 0 0000000
通過計算可以知道,下面的這個路由表(十六進制)和前面的路由表(十進制)是一致的.

我們還可以通過命令route add (del )來操作路由表,增加和刪除路由信息.

除了上面的靜態路由,linux還可以通過routed來實現rip協議的動態路由.我們只需要打開linux的路由轉發功能,在/proc/sys/net/ipv4/ip_forward文件中增加一個字元1.

三.網路的安全設置
在這一部分,再次強調一定要修改/etc/inetd.conf,安全的策略是禁止所有不需要的服務.除此之外,還有以下幾個文件和網路安全相關.

(1)./etc/ftpusers ftp服務是一個不太安全的服務,所以/etc/ftpusers限定了不允許通過ftp訪問linux主機的用戶列表.當一個ftp請求傳送到ftpd,ftpd首先檢查用戶名,如果用戶名在/etc/ftpusers中,則ftpd將不會允許該用戶繼續連接.範例文件如下:

# /etc/ftpusers - users not allowed to login via ftp
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
nadmin

(2)/etc/securetty 在linux系統中,總共有六個終端控制台,我們可以在/etc/securetty中設置哪個終端允許root登錄,所有其他沒有寫入文件中的終端都不允許root登錄.範例文件如下:

# /etc/securetty - tty's on which root is allowed to login
tty1
tty2
tty3
tty4
(3)tcpd的控制登錄文件/etc/hosts.allow和/etc/hosts.deny

在tcpd服務進程中,通過在/etc/hosts.allow和/etc/hosts.deny中的訪問控制規則來控制外部對linux主機的訪問.它們的格式都是

service-list : hosts-list [ : command]

服務進程的名稱 : 主機列表 可選,當規則滿足時的操作

在主機表中可以使用域名或ip地址,ALL表示匹配所有項,EXCEPT表示除了某些項, PARANOID表示當ip地址和域名不匹配時(域名偽裝)匹配該項.

範例文件如下:

#
# hosts.allow This file describes the names of the hosts which are
# allowed to use the local INET services, as decided
# by the '/usr/sbin/tcpd' server.
#
ALL : 202.112.13.0/255.255.255.0
ftpd: 202.117.13.196
in.telnetd: 202.117.48.33
ALL : 127.0.0.1
在這個文件中,網段202.112.13.0/24可以訪問linux系統中所有的網路服務,主機202.117.13.196隻能訪問ftpd服務,主機202.117.48.33隻能訪問telnetd服務.本機自身可以訪問所有網路服務.

在/etc/hosts.deny文件中禁止所有其他情況:

#/etc/hosts.deny

ALL : DENY : spawn (/usr/bin/finger -lp @%h | /bin/mail -s "Port Denial noted in %d-%h" root)

在/etc/hosts.allow中,定義了在所有其他情況下,linux所應該執行的操作.spawn選項允許linux系統在匹配規則中執行指定的shell命令,在我們的例子中,linux系統在發現無授權的訪問時,將會發送給超級用戶一封主題是"Port Denial noted in %d-%h"的郵件,在這里,我們先要介紹一下allow和deny文件中的變數擴展.

(4)/etc/issue和/etc/issue.net

在我們登錄linux系統中的時候,我們常常可以看到我們linux系統的版本號等敏感信息.在如今的網路攻擊行為中,許多黑客首先要收集目標系統的信息,版本號等就是十分重要的信息,所以在linux系統中一般要把這些信息隱藏起來./etc/issue和/etc/issue.net就是存放這些信息的文件.我們可以修改這些文件來隱藏版本信息.

另外,在每次linux重新啟動的時候,都會在腳本/etc/rc.d/rc.local中再次覆蓋上面那兩個文件./etc/rc.d/rc.local文件的範例如下:

# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
if [ -f /etc/redhat-release ]; then
R=$(cat /etc/redhat-release)
arch=$(uname -m)
a="a"
case "_$arch" in
_a*) a="an";;
_i*) a="an";;
esac
NUMPROC=`egrep -c "^cpu[0-9]+" /proc/stat`
if [ "$NUMPROC" -gt "1" ]; then
SMP="$NUMPROC-processor "
if [ "$NUMPROC" = "8" -o "$NUMPROC" = "11" ]; then
a="an"
else
a="a"
fi
fi
# This will overwrite /etc/issue at every boot. So, make any changes you
# want to make to /etc/issue here or you will lose them when you reboot.
#echo "" > /etc/issue
#echo "$R" >> /etc/issue
# echo "Kernel $(uname -r) on $a $SMP$(uname -m)" >> /etc/issue
cp -f /etc/issue /etc/issue.net
echo >> /etc/issue
在文件中黑體的部分就是得到系統版本信息的地方.一定要將他們注釋掉.

(5)其他配置

在普通微機中,都可以通過ctl+alt+del三鍵的組合來重新啟動linux.這樣是十分不安全的,所以要在/etc/inittab文件中注釋該功能:

# Trap CTRL-ALT-DELETE

#ca::ctrlaltdel:/sbin/shutdown -t3 -r now

php是什麼意思

php通常指超文本預處理器,用於面向對象、命令式編程,是一種通用開源腳本語言。

主要特點:

為開源性和免費性、快捷性、資料庫連接的廣泛性、面向過程和面向對象並用。優點是利於學習,使用廣泛。此外,php還可以指菲律賓比索的標准貨幣代碼符號,MPLS網路中的倒數第二跳彈出功能。是英文超級文本預處理語言Hypertext Preprocessor的縮寫。PHP 是一種HTML 內嵌式的語言,是一種在伺服器端執行嵌入HTML文檔的腳本語言,語言風格有些類似於C語言,被廣泛的運用。

簡介:

PHP(外文名:PHP: Hypertext Preprocessor,中文名:「超文本預處理器」)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法它可以比CGI或者Perl更快速地執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML(標准通用標記語言下的一個應用)文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;PHP還可以執行編譯後代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。

特性包括:

1、PHP 獨特的語法混合了 C、Java、Perl 以及 PHP 自創新的語法

2、PHP可以比CGI或者Perl更快速的執行動態網頁——動態頁面方面,與其他的編程語言相比,PHP是將程序嵌入到HTML文檔中去執行,執行效率比完全生成htmL標記的CGI要高許多;PHP具有非常強大的功能,所有的CGI的功能PHP都能實現

3、 PHP支持幾乎所有流行的資料庫以及操作系統。

4、最重要的是PHP可以用C、C++進行程序的擴展!

語言特點:

開源免費

PHP是一個受眾大並且擁有眾多開發者的開源軟體項目,Linux + Nginx + Mysql + PHP是它的經典安裝部署方式,相關的軟體全部都是開源免費的,所以使用PHP可以節約大量的正版授權費用。不過PHP作為一個開源軟體,它缺乏大型科技公司的支持背景,網路上對它的唱衰也是經久不衰,不過它的持續迭代和性能持續增強的現實卻是鼓舞人心的,PHP社區用實際行動給予各種質疑強有力的回擊。

快捷高效

PHP的內核是C語言編寫的基礎好效率高,可以用C語言開發高性能的擴展組件;PHP的核心包含了數量超過1000的內置函數,功能應有盡有很全面,開箱即用程序代碼簡潔; PHP數組支持動態擴容,支持以數字、字元串或者混合鍵名的關聯數組,能大幅提高開發效率; PHP是一門弱類型語言,程序編譯通過率高,相對其他強類型語言開發效率快;PHP天然熱部署,在php-fpm運行模式下代碼文件覆蓋即完成熱部署;PHP經過20多年的發展,在互聯網上可以搜到海量的參考資料供參考學習。

性能提升

PHP版本越高它的整體性能越高,根據官方介紹,PHP7.0.0 對比PHP5.6性能就提升了2倍,PHP7.4已經比PHP7.0快了約30%,PHP8.0在性能上又相對PHP7.4大約改進了10%。PHP 8.0 引入了 JIT編譯器特性,同時加入多種新的語言功能,例如命名參數、聯合類型、註解、Constructor Property Promotion、match 表達式、nullsafe 運算符以及對類型系統、錯誤處理和一致性的改進。PHP擁有自己的核心開發團隊,保持5年發布一個大版本、1個月發布2個小版本的頻率,最新的版本是PHP8.08 。

跨平台

每個平台都有對應的php解釋器版本,指針對不同平台均編譯出目標平台的二進制碼(PHP解釋器),php開發的程序可以不經修改運行在windows、linux、unix等多個操作系統上。

常駐內存

php-cli模式下可以實現程序常駐內存,各種變數和資料庫連接都能長久保存在內存實現資源復用,比較常用的做法是結合swoole 組件編寫cli框架。

頁面生命周期

在php-fpm模式下,所有的變數都是頁面級的,無論是全局變數還是類的靜態成員,都會在頁面執行完畢後被清空,對程序員水平要求低,佔用內存非常少,特別適合中小型系統的開發。

運行機制:

PHP常見的運行模式有2種,分別是php-fpm 和php-cli 。當PHP 選擇運行在php-fpm模式下,所有的變數都是頁面級的,無論是全局變數還是類的靜態成員,都會在頁面執行完畢後被清空。運行在php-cli模式下可以實現程序常駐內存,各種變數和資料庫連接都能長久保存在內存 實現資源復用,性能可以得到很大的提升,php-cli開發比較復雜能但是能夠獲取更高的性能,對開發者的要求比較高需要比較高的開發水平,比較常用的模式是結合swoole 組件編寫cli框架,各種變數能保存在跨進程的高性能共享內存 Table ,可以開發出支持熱啟動的php-cli可靠各類應用系統。

php-fpm在PHP 5.3.3 版本成為了官方正式組件(2010-07-22),它提供了穩定可靠的進程管理服務,進程不足時候可以智能擴充數量,閑置時候可以自動回收銷毀多餘的進程,同時它對程序的容錯能力很強大運行非常穩定,可以應付企業級的開發需求。php-fpm友好的完成了使用HTTP/HTTPS等TCP/IP互聯網協議下進行的用戶的輸入輸出,頁面級生命周期各種資源用完即釋放,不存在內存泄漏的問題。php-fpm也提供有一些常駐內存的技術支持,例如PHP 7.4引入的opcache.preload也能實現局部的PHP類和函數的常駐內存,不過這個方法不夠靈活,和伺服器配置捆綁的太死了。

php-cli因為能實現各類資源的常駐內存,所以可以資源復用,更高效完成多進程編程和非同步編程,可以開發出負載能力更高的應用系統。但是相對php-fpm的簡單編程開發,開發者要注意很多的事項和需要做很多附加的控制器開發,否則就無法實現期待中的高性能。

首先開發者需要去實現可靠的進程管理服務,保證系統進程遇到各類錯誤退出運行後能夠自動創建新的進程,只有這樣才能保證後續的服務請求有足夠空閑進程可分配。每個業務代碼段都要做異常處理,讓進程遇到非致命錯誤時候不會退出,因為進程重啟意味程序和各類資源需要再次載入,這個過程性能消耗不小,所以只有進程穩定運行了常駐內存才有意義。

其次因為常駐內存,編寫的新的程序必須重啟服務才能生效,這一點習慣了fpm模式的開發者會感到比較陌生。另外開發者需要手工釋放內存,否則系統長時間運行後會出現內存泄露。同時在cli模式下,我們不能像fpm里直接用 $_SERVER、$_POST、$_GET、$_COOKI和$_FILES 進行編程工作,需要自己去解析各種互聯網通訊協議完成用戶的輸入輸出。要實現多進程編程利用多核CPU計算,還有學習使用pcntl和posix編程,這里涉及到了非同步編程邏輯,這塊難度還是比較大的。比較常用的模式是結合swoole 組件編寫cli框架。

PHP是一個活躍的社區開發語言,有專業的核心開發團隊在持續不斷的迭代,最近一個版本就是PHP 8.0.8 引入了很多的新特性。

語言參考:

內置函數

PHP 有很多標準的函數和結構。還有一些函數需要和特定的擴展模塊一起編譯,否則在使用它們的時候就會得到一個致命的「未定義函數」錯誤。例如,要使用 image 函數中的 imagecreatetrue,需要在編譯 PHP 的時候加上 GD 的支持。或者要使用 mysqli_connect函數,就需要在編譯 PHP 的時候加上 MySQLi 支持。有很多核心函數已包含在每個版本的 PHP 中如字元串和變數函數。調用 phpinfo或者 get_loaded_extensions可以得知 PHP 載入了那些擴展庫。同時還應該注意,很多擴展庫默認就是有效的。

靜態網站與動態網站的區別

靜態網站:web1.0 時代

動態網站:web2.0 時代

靜態網站特點:

1、網頁內容一經發布到網站伺服器,無論是否有用戶訪問,每個靜態頁面的內容都是保存在網站伺服器上的。也就是說,靜態網頁是實實在在保存在伺服器上的文件,每個網頁都是一個獨立的文件。

2、靜態網頁的內容相對穩定,因此容易被搜索引擎檢索。

3、 靜態網頁沒有資料庫的支持,在網站製作和維護方面工作量較大,因此當網站信息量很大時完全依靠靜態網頁製作方式比較困難。

4、靜態網頁的交互性較差,在功能方面有較大的限制。


⑶ 用linux系統是做什麼用的

Linux可以運行在伺服器和其他大型平台之上,如大兆團型機和超級計算機,是一個領先的操作系統。世界上500個最快的超級計算機90%以上運行Linux發行版或變種,最快的前10名超級計算機運行的都是Linux操作系統。

Linux也廣泛應用在嵌入式設備上,如手機、平板電腦、路由器、電視和電子游戲機等。在移動設備上廣泛使用的Android操作系統就是創建在Linux內核之上。

Linux是一款免費的操作系統,用戶可以通過網路或其他途徑免費獲得,並族塌橘可以任意修改其源代碼。來自全世界的無數程序員參與了Linux的修改、編寫工作,程序員可以根據自己的興趣和靈感對其進行改變,這讓Linux吸收了無數程序員的精華,不斷壯大。

(3)linuxcpost擴展閱讀:

Linux系統的優勢:

1、跨衫寬平台的硬體支持

由於Linux 的內核大部分是用C語言編寫的,並採用了可移植的Unix標准應用程序介面,所以它支持如i386、Alpha、AMD和Sparc等系統平台,以及從個人電腦到大型主機,甚至包括嵌入式系統在內的各種硬體設備。

2、豐富的軟體支持

與其他的操作系統不同的是,安裝了Linux系統後,用戶常用的一些辦公軟體、圖形處理工具、多媒體播放軟體和網路工具等都已無需安裝。

而對於程序開發人員來說,Linux更是一個很好的操作平台,在Linux 的軟體包中,包含了多種程序語言與開發工具,如gcc、cc、C++、Tcl/Tk、Perl、Fortran77 等。

3、完善的網路功能

Linux 內置了很豐富的免費網路伺服器軟體、資料庫和網頁的開發工具,如Apache、Sendmail、VSFtp、SSH、MySQL、PHP和JSP 等。近年來,越來越多的企業看到了Linux 的這些強大的功能,利用Linux 擔任全方位的網路伺服器。

⑷ Linux串口連接ttyS0、ttyS1是什麼意思

這是通信串口名稱。
在Linux環境下,串口名從ttyS0開始依次是ttyS1、ttyS2等。在本程序中,使用ttyS0作為通信串口。在打開ttyS0的時候,選項 O_NOCTTY 表示不能把本串口當成控制終端,否則用戶的鍵盤輸入信息將影響程序的執行; O_NDELAY表示打開串口的時候,程序並不關心另一端 的串口是否在使用中。在Linux中,打開串口設備和打開普通文件一樣,使用的是open()系統調用。比如我么打開串口設備1也就是COM1,只需要:
fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY );
打開的串口設備有很多設置選項。本文中使用int setup_com(int fd)設置。在系統頭文件中 定義了終端控制結構struct termios,tcgetattr()和tcsetattr()兩個系統函數獲得和設置這些屬性。結構 struct termios中的域描述的主要屬性包括:
c_cflag : 控制選項
c_lflag : 線選項
c_iflag : 輸入選項
c_oflag :輸出選項
c_cc :控制字元
c_ispeed :輸入數據波特率
c_ospeed :輸出數據波特率
如果要設置某個選項,那麼就使用"|=「運算,如果關閉某個選項就使用」&=「和」~"運算。本文使用的各個選項的意義定義如下:
c_cflag:
CLOCAL 本地模式,不改變埠的所有者
CREAD 表示使能數據接收器
PARENB 表示偶校驗
PARODD 表示奇校驗
CSTOPB 使用兩個停止位
CSIZE 對數據的bit使用掩碼
CS8 數據寬度是8bit
c_lflag:
ICANON 使能規范輸入,否則使用原始數據(本文使用)
ECHO 回送(echo)輸入數據
ECHOE 回送擦除字元
ISIG 使能SIGINTR,SIGSUSP, SIGDSUSP和 SIGQUIT 信號
c_iflag:
IXON 使能輸出軟體控制
IXOFF 使能輸入軟體控制
IXANY 允許任何字元再次開啟數據流
INLCR 把字元NL(0A)映射到CR(0D)
IGNCR 忽略字元CR(0D)
ICRNL 把CR(0D)映射成字元NR(0A)
c_oflag: OPOST 輸出後處理,如果不設置表示原始數據(本文使用原始數據)
c_cc[VMIN]: 最少可讀數據
c_cc[VTIME]: 等待數據時間(10秒的倍數)

⑸ 如何安裝PostgreSQL

PostgreSQL安裝:
一、windows下安裝過程
安裝介質:postgresql-9.1.3-1-windows.exe(46M),安裝過程非常簡單,過程如下:
1、開始安裝:

2、選擇程序安裝目錄:

註:安裝 PostgreSQL 的分區最好是 NTFS 格式的。PostgreSQL 首要任務是要保證數據的完整性,而 FAT 和 FAT32 文件系統不能提供這樣的可靠性保障,而且 FAT 文件系統缺乏安全性保障,無法保證原始數據在未經授權的情況下被更改。此外,PostgreSQL 所使用的"多分點"功能完成表空間的這一特徵在FAT文件系統下無法實現。
然而,在某些系統中,只有一種 FAT 分區,這種情況下,可以正常安裝 PostgreSQL,但不要進行資料庫的初始化工作。安裝完成後,在 FAT 分區上手動執行 initdb.exe 程序即可,但不能保證其安全性和可靠性,並且建立表空間也會失敗。
3、選擇數據存放目錄:

4、輸入資料庫超級用戶和創建的OS用戶的密碼

註:資料庫超級用戶是一個非管理員賬戶,這是為了減少黑客利用在 PostgreSQL 發現的缺陷對系統造成損害,因此需要對資料庫超級用戶設置密碼,如下圖所示,安裝程序自動建立的服務用戶的用戶名默認為 postgres。
5、設置服務監聽埠,默認為5432

6、選擇運行時語言環境

註:選擇資料庫存儲區域的運行時語言環境(字元編碼格式)。
在選擇語言環境時,若選擇"default locale"會導致安裝不正確;同時,PostgreSQL 不支持 GBK 和 GB18030 作為字元集,如果選擇其它四個中文字元集:中文繁體 香港(Chinese[Traditional], Hong Kong S.A.R.)、中文簡體 新加坡(Chinese[Simplified], Singapore)、中文繁體 台灣(Chinese[Traditional], Taiwan)和中文繁體 澳門(Chinese[Traditional], Marco S.A.R.),會導致查詢結果和排序效果不正確。建議選擇"C",即不使用區域。
----我選擇了default localt,安裝正確;建議選擇default localt。
7、安裝過程(2分鍾)

8、安裝完成

安裝完成後,從開始文件夾可以看到:

在安裝目錄可以看到:

其中:data存放數據文件、日誌文件、控制文件、配置文件等。
uninstall-postgresql.exe用於卸載已安裝的資料庫管理系統。
pg_env.bat里配置了資料庫的幾個環境變數,內容如下:

二、pgAdmin(大象)
對於每種資料庫管理系統,都有相當多的設計與管理工具(可視化界面管理工具),有的是資料庫廠商自己提供的(一般都至少有一個),有的是第三方公司開發的,你甚至可以自己寫一個簡單易用的管理工具。例如Oracle的Oracle SQL Developer(自己開發的)、PLSQL Developer(第三方公司開發的)、SQL Server Management Studio(自己開發的)、http://www.oschina.net/project(開源中國)網站上提供的個人或組織開發的簡易小巧的管理工具。
PostgreSQL就有好幾款流行的管理工具,例如:pgAdmin、navicat_pgsql、phppgsql等。
pgAdmin是一個針對PostgreSQL資料庫的設計和管理介面,可以在大多數操作系統上運行。軟體用C++編寫,具有很優秀的性能。
pgadmin 是與 Postgres 分開發布的,可以從www.pgadmin.org下載。目前裝個全功能的PostgreSQL資料庫,自帶該管理工具。
打開pgAdmin,可以看到在第一部分安裝的本地資料庫的屬性,如下圖所示:

圖中可以看出,新安裝的PostgreSQL資料庫管理系統帶有一個資料庫postgres;已建好兩個表空間:pg_default、pg_global。
initdb.exe初始化的兩個默認表空間pg_global、pg_default。資料庫默認的表空間pg_default 是用來存儲系統目錄對象、用戶表、用戶表index、和臨時表、臨時表index、內部臨時表的默認空間,他是模板資料庫template0和template1的默認表空間。initdb.exe初始化的兩個默認表空間pg_global、pg_default。資料庫默認的表空間pg_global是用來存儲共享系統目錄的默認空間。
pg_default 為 PostgreSQL也可以理解成系統表空間,它對應的物理位置為 $PGDATA/base目錄。
在PostgreSQL(pg_catalog)下可以看到postgers資料庫的一些數據字典和數據字典視圖。

新建一個伺服器連接,連接遠程linux伺服器上的PostgreSQL資料庫(假設已有遠程linux上已安裝好PostgreSQL資料庫管理系統):

得到資料庫屬性如下圖所示:

圖中可以看出,該遠程資料庫管理系統上建有兩個資料庫:postgres、cpost;四個表空間:pg_default、pg_global、pis_data、pis_index。

三、pgsql
對於每種資料庫管理系統,都會提供一個命令行管理介面,例如Oracle的sqlplus,SQL Server的isql和osql等。
凡是用圖形管理界面可以實現的功能原則上都可以通過命令行界面命令實現。兩者各有優缺點,使用場合不同。在windows下當然常用圖形管理界面,因為在圖像管理界面中往往都嵌有命令行工具,而在unix和linux下,當然就常用命令行工具了,除了我們在類unix下主要使用字元界面的原因外,還因為大部分情況下我們只能通過telnet或ssh工具遠程連接伺服器進行操作,此時也只能使用命令行了。
從開始目錄打開SQL shell(pgsql),該可執行程序為E:\PostgreSQL\bin\psql.exe。輸入密碼得到如下圖界面:

也可以在修改了系統環境變數Path之後(增加PostgreSQL\bin目錄),從命令行直接啟動pgsql。

至此,PostgreSQL在Windows下安裝完畢。

閱讀全文

與linuxcpost相關的資料

熱點內容
驚變1小時8分鍾才是經典 瀏覽:724
ps如何pdf製作 瀏覽:782
如何按照序號排列文件夾 瀏覽:433
演算法設計與分析基礎網盤 瀏覽:712
linux信號量的使用 瀏覽:61
朴初炫演過的電影 瀏覽:969
掌閱下的書在哪個文件夾 瀏覽:851
程序員學python難嗎 瀏覽:737
源泉插件圖紙加密 瀏覽:609
minitab編程 瀏覽:231
網頁編程語言大全 瀏覽:633
單片機鋰離子 瀏覽:9
單片機交流電流測量 瀏覽:717
小雞模擬器ios游戲一直正在解壓 瀏覽:928
可以把文件夾轉化為文檔的軟體 瀏覽:956
微軟認證高級程序員 瀏覽:887
人工智慧網路演算法工程師 瀏覽:459
白色邊框app是什麼 瀏覽:740
日本愛情尺寸度電影推薦 瀏覽:935
國內女人偷情片 瀏覽:287