nginx服務器配置

nginx = ngin +x , engine x : ngin 先後四個, n,php

  1. 有兩個配置文件: /etc/nignx/nginx.conf 全局配置文件, nginx/sites_availbe/default配置文件, 是用來配置站點使用 php等應用的...
  2. 在配置 自定義編譯安裝軟件的時候,
    ./configure 命令的選項
    --with-http_stub_status_module: 使用with的時候, 表示的是啓用 某個特徵功能, with和後面的單詞用 橫線鏈接, 然後面的單詞要用下劃線書寫, 一般with 後不須要寫等號和內容
    --prefix=..., 和 --user=... 等, 不是由with引導的選項, 要寫等號和內容.css

  3. pcre: 跑車熱, pc, re: 熱, 表示的是perl兼容正則表達式. 若是你不須要使用正則表達式, 你能夠不安裝pcre, 可是因爲httpd 或 nginx要 進行 地址重寫rewrite的時候, 就須要正則表達式模塊;
    而zlib和 zlib-devel 是用來 提供 壓縮和 解壓縮的函數和 類 及 數據結構等.
    而nginx 和 httpd 的編譯安裝和配置 跟 httpd差很少.html

  4. ./configure --with-prce --prefix=/usr/local/nginx --user=www等等前端

  5. 爲何要使用代理服務器和反向代理服務器?
    由於若是你的機器直接向目標服務器發送請求, 你的請求可能會被fw給拒絕. 若是向代理服務器發送請求,由代理服務器代替你發送請求並返回你的請求結果.
    代理服務器的目的是讓 內網機器 訪問 外網的服務器;
    而反向代理服務器 是當外網 機器訪問 內網的 服務器時, 爲了保護 內網的 內容服務器 的安全, 可讓外網機器 先訪問 反向代理服務器, 而後讓 反向代理服務器來向 內網的內容服務器發送請求...linux

nginx能夠作web服務器, 反向代理服務器, 或郵件服務器. 由於nignx的內存佔用少, 併發能力很高.ios


  1. linux 中的nobody 用戶?
    是linux中的內建用戶, 如同win在安裝一些系統軟件的時候,會自動建立一些內置用戶同樣.
    nobody是系統內置的用戶, 主要是一些系統服務軟件好比nignx, httpd, vsftp等的默認的客戶端登陸用戶同樣
    , 他是沒法登陸的.相似於win中的匿名帳戶anonymous同樣
    nobody的id號是 99

/usr/sbin/nologin: 是一個命令, 表示"不能登陸"一般是一些內置用戶纔會使用這個shell進行登陸.nginx

  1. poll是"選舉,投票,民意測驗"等, 在linux內部編程的時候, 表示的是io事件隊列.
    最開始使用的是select,而後是poll, 而後是 epoll, 它是linux內部網絡編程時好比httpd, nignx等網絡編程時的 系統調用函數
    好比: int epoll(struct epoll(), struct epollfd...)
    包括 #include <epoll.h>, epoll包括三個部分, epoll.create, epoll.ctl, epoll.wait等c++

  2. 用0~9來表示10個預約義的句柄, 0: 表示標準輸入.. . 而要在重定向中, 引用 某個句柄的時候, 則要使用 & 表示 引用. 並且這個句柄的 重定向命令能夠直接放在 前面的命令後面. 好比:
    ls a_dir 2>&1web

  3. 重定向和管道的區別?
    管道是表示 鏈接的 先後 兩個命令 | 先後必須都是命令, 表示前一個命令的輸出, 做爲 下一個命令 的輸入.
    而重定向後面是一個文件, 不是命令, 表示命令的輸出結果到某個文件, 或表示命令的來源是某個文件. 重定向關聯的是 文件,不是命令.正則表達式

dup和dup2函數, 是linux內部編程要使用的 系統調用函數, 包含在 unistd.h 即除了 c的標準頭文件外, 還有unix自身使用的頭文件.是將一個文件描述符複製成另外一個數值.

在不少系統中, 好比這裏的fedora23中, useradd和 adduser的用法 和使用結果 徹底 是同樣的. 徹底沒必要區分這兩個命令.


script:
typescript: 打字稿, 用打字完成的稿子.
script會將shell session的結果所有記錄下來, 輸入在 默認的 typescript文件中.

在某些命令的 "幫助"信息, 不是 output信息時, 要將這些 假的 控制檯輸出信息, 重定向到一個文件中, 使用重定向 >, >> 沒法實現, 這時, 要使用 script:

script: -a 是表示將信息append到一個文件中, 默認的文件名是 typescript, 也能夠指定文件名 -a foo.spt
-t 表示記錄時間time信息, 默認的是將 時序信息記錄到 錯誤error句柄, 因此須要重定向: -t 2>time.info


一般 在linux中的 目錄後 加斜槓和 不加 斜槓, 一般來講是沒有什麼區別的, 只是在一些特別的地方有區別: 好比在seo中, 在http訪問中, 一般要加上斜槓, 一般若是要訪問的是目錄自己, 則不加斜槓, 而要訪問的是目錄中的內容, 則要加上斜槓!


一般安裝一些服務程序的時候, 須要 pcre, zlib, openssl等, 通常這些常見的核心功能的包, 都是安裝了的. 只是 他們的 開發包通常是沒有被安裝的, 好比: openssl-open, zlib-devel的包. 要查看這些包(程序)是否被安裝, 只須要用 rpm 進行查看就行了, 好比 rpm -aq | grep 'openssl-devel' 要是嚴格的整個單詞進行匹配的話 , 使用 -w選項: grep -w ....

gcc, gcc-c++ , gcc的庫包: libgcc等一般也是被安裝的

注意的是, grep爲了查詢的方便, 默認的狀況下, 被查找的內容是不區分是不是完整的單詞的, 若是要 嚴格地區分/匹配單詞的話, 就使用 -w選項.

一般, 開源軟件的 網址都是以org爲結尾的, 少數的是以net結尾的 :好比 nginx.org , zlib.org -> zlib.net , pcre.org

nginx等軟件的mainline版本, 和stable版本, legacy版本的區別

mainline是"主力, 主線"版本, 是當前正在作的, 正在開發的版本, 至關於開發版
stable是最新的穩定版, 建議在生成環境中使用部署
legacy是之前的 穩定的老版本.


對於本身建立的目錄而言, 咱們之前老是習慣於一級目錄一級目錄的切換進入, 而事實上是能夠一次性的進入多級深目錄的.

在使用 su -c 命令的時候, 爲了使用的方便, 若是在命令中, 使用了"相對路徑"或 "相對路徑下的文件名", 那麼這個相對路徑 是正對 當前 路徑而言的, 而不是 針對 root/ 超級用戶的路徑而言的 想一想也是, 若是相對於 su 來講, 若是認爲 su -c '....' 後面的命令中的路徑就是相對於super user而言的, 那麼到底是相對於 su的哪一個 路徑而言的呢? 因此, 很顯然, 這個su -c

後面的命令中的 路徑 都是相對於 當前 路徑 pwd 而言的. 好比:

[foo@localhost b]$ su -c 'cp ab /opt'
Password: 
[foo@localhost b]$ pwd
/home/foo/Downloads/a/b
那麼 上面的那條 命令 就是將 當前 的 a/b路徑下的 ab文件 拷貝到 /opt中

關於linux下文檔的命名技巧, 最好是用 英文字母開頭, 中間能夠有包含漢字. 這樣在使用 自動補全的時候, 能夠只經過輸入英文字母就能夠補全 搜索到了

好像, 在vim中進行設置的 命令, 都是以set開頭的, 尚未 不是 以set開頭的命令, 除了map映射.

1 mvc不是哪個框架所臆想出來的, 而是經過總結網站的結構, 開發過程而提出的規律.由於網站
的業務邏輯是經過後臺即controller控制器來實現的, 它只有一個目的和做用, 就是: 得到變量
或數據的值, 獲得經過業務邏輯的過程的數據.
2 視圖view, 實際上就是模板, 也就是傳統開發中的前臺頁面, 只不過不是用html結尾的, 而是用
tpl結尾的. 他就是用來表現/顯示數據的. 就是把後臺的業務邏輯數據 (經過 傳遞參數的方式, 以動態變量的 方式傳遞到前端頁面),
而後, 前端頁面/ 網頁中, 在 關鍵 位置, 把 後臺 傳遞 過來的 參數 /變量 嵌入 頁面 中 顯示出來. 你能夠經過不一樣的方式/樣式來呈現, 這個不一樣的樣式就是css,
它只是對數據的裝飾打扮同樣. 而數據自己其實仍是那一個/同一個.
3
4 模塊module就是數據庫, 不管是前臺仍是後臺的基石都是數據庫, 數據都是存儲在數據庫中的
5

FQDN: fully qualified domain name. 徹底限定域名, 全稱域名, 全程域名, 全域名, 是 主機名+域名. 是主機名的完整表示, 表示了主機在整個域名樹中的位置.
qualify: v. 使...有資格, 使合格; 限定, 限制. fqdn: 就是徹底限制域名, 就是說這個主機名經過域名就徹底限定了. 是惟一肯定的了.

要修改主機名? 設置/修改本地機器的域名?
三種方法:

  1. hostname: 臨時型的修改, 修改後在每一個地方包括另起一個terminal, 也能看到新修改的hostname. 可是 重啓後失效.
  2. 在/etc/sysconfig/network中, 添加: hostname="..." networking=yes... 這個要重啓後永久生效
  3. 要添加本機在本地的 域名: 能夠在 /etc/hosts文件中, 直接添加你要設置的本地機器的 域名, 好比: echo '127.0.0.1 foo.bar.com' >> /etc/hosts 這時候,訪問你添加的本地域名就能即時生效
  4. 要求主機名要簡單易記, 並且要有實際意義. 如同變量名的命名同樣

爲何有時候php頁面中不能使用 ROOT_PATH, 而要直接使用 dirname(FILE)?

其實, ROOT_PATH自己就是用 define('ROOT_PATH', dirname(__FILE__)) ; 來定義的. dirname是php語言自己所提供的一個函數, 給出當前文件所在的 絕對路徑字符串.
若是在某些頁面中, 不能使用這個路徑, 多是由於 定義 ROOT_PATH的文件 沒有被 包含到? 這時你就只好直接些dirname了.

其實, 在tp開發中, 爲了表示 某個文件的路徑,(是絕對路徑) 有多種方法 , 你能夠直接寫dirname... 只是這種寫法看起來不"高大上"(實際上是同樣的), 若是用 預先定義好的路徑常量, 可能看起來 1. 要簡潔些, 2. 要更明確些, 一看就知道其 "語義" , 好比 APP_PATH, ROOT_PATH

在任何一種編程語言中, 何時, 要加引號?

都是同樣的 : 對於一個 字符序列, 只有多是三種狀況: 一是變量, 二是常量, 三是 字符串; 因此, 若是你不能說出它是 變量名, 也說不出是常量, 那麼它就只能是 字符串了. 既然是字符串, 那就該用 單引號了!

什麼叫 可變的, 依據條件來變化/肯定的css樣式?

並非指 css名稱能夠變化, 在定義 css的樣式的時候, 它必須是肯定的.
所謂css 隨外在條件的變化而不一樣, 是指: 在 模板文件中, 咱們能夠在 if結構中, 根據外在條件, 來指定 class 類的名字 . 也就是說, 若是條件不一樣, class類的名字就不一樣, 或者class類的名字 是一個 變量 字符串...


  1. aria: [a:ri2], 詠歎調, 就是關於 閱讀, 關於 障礙人士的閱讀輔助器, 實際上就是 "關於障礙人士的 無障礙閱讀" 提供支持, 要求達到dot(無障礙閱讀/department of transportation)網站才能上線. 好比: aria-label, aria-hidden等屬性. 這些屬性基本上是沒有什麼做用的, 像國外的一些框架如bootstrap等用得比較多.

  1. 正則表達式中的括號有兩個做用, 一個是分組便於後面的反向引用;二是便於理解和查看, 這時即便沒有反向引用也能夠這樣作
    正則中的點號, 表示 除了 回車符以外的 任意字符
    所以, 要表示 點號自己, 就須要用 轉義: 反斜槓 .

  2. nginx和apache都支持rewrite, 首先都須要安裝 pcre包, 由於這個正則包提供了rewrite地址重寫的正則匹配功能, 好比: ~, ~, !~ , !~
    rewrite的設置包括:
    set 設置變量
    if 根據條件知足時肯定 正則重寫功能, 條件運算符包括: =, !=, ~ (正則匹配)等
    return 返回
    rewrite: rewrite語句的格式包括: 正則表達式 替換地址 標誌
    其中, 標誌有四種:
    break, 表示替換後的地址是最終地址了, 再也不進行正則檢查
    last,表示替換後的地址是最後地址,可是還能夠繼續進行正則替換
    redirect, 表示臨時性的重定向302
    permanent, 表示永久性的重定向301
    rewrite的重寫有一個特色,是能夠進行重複、遞歸的正則替換檢查和重寫, 即正則後的地址還能夠進行正則替換

301和302重定向主要是針對搜索引擎,爬蟲,seo網站優化和排名等
搜索引擎一般對302(臨時性)重定向不友好, 302重定向被認爲是k站,黑帽優化,會影響網站的排名;
規範化的重定向,是發生在 網站域名發生變化/更改的場合,使用301重定向,搜索引擎會把原網站的權重、排名等通通轉移到新的域名。

  1. linux系統這一些經常使用的工具包,好比libxml, libxml2等, 這些包一般是 用C語言寫的, 用來提供了一些操做xml文檔(中的節點等 xpath等)、檔案的函數、 類、 和數據類型等。
    這些基礎的通用包, 每每被不少應用軟件如php, apache,nginx等所依賴。

  2. linux中配置文件的格式, [key] symbol [value] 其中的symbol有多種方式, 有的是用空格, 有的是用等號,有的是用冒號, 有的是用大括號, 主要是看你的解釋器的寫法。

有三個地方修改、配置你的本地機器的域名:
hostname,
/etc/sysconfig/network
/etc/hosts


  1. 要想作到網頁內容能夠管理和控制, 那麼在寫代碼的時候, 就要作到每一部分的內容, 你都可以說得出來,好比是描述,是縮略圖,是標題等等, 而不是本身爲所欲爲的寫,由於網頁上的一切, 除了固定的、靜態的、不變的部分,其餘一切都要用數據庫來存儲和管理。
    前端頁面的內容, 要作到 模塊化, 分段化, 而後每一個item要作到 語義化, 結構化

先後臺的設計, 都是基於數據庫的, 後臺的內容模塊包括:

 後臺設計,實際上很大一部分工做, 就是把對數據、數據庫的操做 可視化了 而已,即好比建立表,增長字段等操做,從數據庫的操做界面移動到 網頁上來了。 固然這個一個方面是 爲了後臺數據庫的安全,(不能讓人輕易地隨便的直接操做數據庫, 經過表單的方式能夠對將要進入數據庫的數據進行安全預處理), 另外一方面,在網站建設好以後,交給客戶使用時不少客戶並不知道這些知識, 因此只好用可視化的方式來管理。

  • 一個模塊的增長頁面, 實際上就是在數據庫中建立一個表。
  • 表中的 字段 的 增長詳情表單, 相似於數據庫可視化管理工具(如phpmyadmin中的字段增長頁面表單)
  • 最後, 表建立好了, 字段增長好了, 你要把這些字段的詳情 用一個表格列出來, 同時在這個表格中, 你應該有對 每一個表、每一個字段的能夠操做的(如編輯、刪除等)button連接

  • 後臺管理系統中, 還應該有關於前臺 頁面的 生成方式, 以及一些圖片的上傳 處理、規定表單等。

實際上, 不少的 前端js ui插件,組件,在後臺管理系統中用得是比較多的, 好比表單, 好比標籤頁組,好比左邊導航欄的摺疊組件等.


在配置 nginx反向代理服務器 : proxy_pass 127.0.0.1 ... 時, 一般只需加密 從客戶端到代理服務器 這一段的內容,使用ssl(或openssl協議)採用https 訪問, 而從代理服務器到內網的內容服務器, 能夠不用加密不使用ssl, 這樣不會損害性能performance(表現)。


若是使用的是 x86_64位的chrome安裝包rpm, 也就須要64位的 c++和庫: libstdc++.so(64bits)...
chromium是開源的,而chrome則不是開源的.
chromium是開發版,是試水的, 幾個小時就有新版本出現? 金絲雀版->dev版->beta版->stable版.


Rlogin: remote login, 是unix系統上的主機之間的 遠程登陸.因此在linux和win上比較少見
若是你在安裝linux/unix等系統的機器 跟前 經過控制檯進行登陸, 叫本地登陸. 其實都沒有必要,能夠經過 網絡, 實現遠程登陸. 遠程登陸的仍是 機器的 shell, 控制檯.
ssh: 是 secure shell 安全的shell殼 安全的終端.
ssh跟telnet和rlogin相比, 兩個優勢, 一個是它是對 用戶名和密碼進行了加密的,不像telnet和rlogin是明文, 可能會被截獲產生dns欺騙和ip欺騙. 第二他對終端傳輸的數據內容進行了壓縮和解壓縮.

putty: [pati],或讀[puti].
linux服務器自己一般都開啓了ssh server 服務.
而終端只要有ssh的終端軟件, 經過ssh協議均可以登陸到服務器的shell上. 這種ssh client軟件不少. 像 linux(本身就自帶ssh客戶端, 直接用 ssh linux_server_ip就能夠了), xshell, putty, secureCRT等.並且這些軟件一般 還不僅是 只支持 ssh協議, 還包括支持 telnet, rlogin, serial等 遠程登陸協議.


ecs: elastic compute service: 可伸縮計算服務. 就是web server服務. 雲服務器所使用的操做系統可能在不一樣的時期不一樣的地區都有所不一樣,好比有debian, centos等
開源不等於免費, 雖然都是free.
開源是爲了保證代碼的質量 "要多少雙眼睛才能馴服複雜性?"
而收費主要是針對 企業用戶的 服務.

若是考慮後期使用 國內的雲服務器, 仍是要在 centos上佈置, 主要是6.x和7.x的版本, 如今用得最多的仍是6.5的版本! 由於如今的雲你用最低配置的話, 大概是 1核, 1~2GB的內存, 1~2M的帶寬,因此用 centos7(只有64位的, 適用於獨立的大內存的主機)並無優點. 同時64位的系統安裝32位的軟件可能仍是存在些問題.

連貫, 一致. cohere [k2u' hi2]: 先後連貫, 先後一致, 粘接... n. co'herence: the varous elements of the novel fail to cohere. has a surprising sense of coherence.

livecd livedvd bindvd的各版本的區別?
bin-dvd是硬盤安裝版, 必需要安裝到硬盤主機上才能使用; live是活的, 現場直播的, 是刻在光盤上的, 能夠直接從光盤上啓動, 免安裝的. livecd和livedvd的區別只是前者的體積更小, 更易於維護

下載centos的地方不少:
好比: www.centoscn.com/centosSoft/isos, 這個中文站
mirrors.163.com 國內的開源鏡像站
vault.centos.org centos的保鮮庫就是存放以往版本的
iso是鏡像, ios是操做系統.
好比 http://vault.centos.org/6.5/isos/i386/

而這些centos的保險櫃爲了 下載分壓, 都是保持在 kernel.org的主機上的. kernel.org是linux開源組織 組件的一個 存儲/管理內核的一個組織. 他的主機是: archive.kernel.org/centos-vault/

linux中的包的命名: 用點號來鏈接各個單詞, 若是一個單詞由多個部分組成, 中間用橫線- 來鏈接, 好比: centos-6.5-i386-bin-dvd1.iso

centos/rhel的生命週期(即廠家服務支持, 安全更新等)是7年, 甚至能夠延長到10年. 而其餘ubun server /deb等好像是 18個月, 並且硬件驅動兼容性好(各個主流硬件廠家早就將硬件送到centos, redhat去測試了), 軟件也比較多, 沒有潔癖, 能夠安裝/包含非開源軟件...

爲何要採用 單顆多核而少用 多顆單核的cpu呢?

可能在設計和實現的時候, 主要有幾個考慮

  1. 是若是設計多顆單核的cpu, 那麼每一顆cpu都須要供電 電路 \與主板總線的鏈接 線路, 這樣在主板的尺寸更大, 使用的元件更多, 在排線佈線的佈局上困難更大.
  2. 更重要的是, 在提供一樣 的計算能力上, 單顆多核的cpu比多顆單核的cpu更高效: 好比現代軟件常常要進行的 多線程運行, 若是是後者, 則各個線程只能在分散的 多個cpu上運行, 各個線程之間要交換數據只能經過cpu外部的總線進行交換, 而若是是單顆多核cpu, 各個線程都是在同一cpu內部運行, 數據交換在同一個cpu內部進行, 這樣交換數據的速度就遠遠比經過外部總線的速度更快;
    二是, 各個線程之間共享數據的問題, 單顆多核可以很好地共享數據, 共享單顆cpu的cache. 可是若是是多顆cpu的話, 共享cache的話, 就難以保證各個cache之間的 數據的 一致 coherence.
    因此 如今的cpu體系可能是 單顆多核的.
    參考知乎上的: 這段話:
架構能夠變幻無窮,面向需求、綜合考量是王道。來,簡單舉個例子。假設如今咱們要設計一臺計算機的處理器部分的架構。如今擺在咱們面前的有兩種選擇,多個單核CPU和單個多核CPU。若是咱們選擇多個單核CPU,那麼每個CPU都須要有較爲獨立的電路支持,有本身的Cache,而他們之間經過板上的總線進行通訊。假如在這樣的架構上,咱們要跑一個多線程的程序(常見典型狀況),不考慮超線程,那麼每個線程就要跑在一個獨立的CPU上,線程間的全部協做都要走總線,而共享的數據更是有可能要在好幾個Cache裏同時存在。這樣的話,總線開銷相比較而言是很大的,怎麼辦?那麼多Cache,即便咱們不心疼存儲能力的浪費,一致性怎麼保證?若是真正作出來,還要在主板上佔多塊地盤,給佈局佈線帶來更大的挑戰,怎麼搞定?若是咱們選擇多核單CPU,那麼咱們只須要一套芯片組,一套存儲,多核之間經過芯片內部總線進行通訊,共享使用內存。在這樣的架構上,若是咱們跑一個多線程的程序,那麼線程間通訊將比上一種情形更快。若是最終實現出來,對板上空間的佔用較小,佈局佈線的壓力也較小。看起來,多核單CPU完勝嘛。但是,若是須要同時跑多個大程序怎麼辦?假設倆大程序,每個程序都好多線程還幾乎用滿cache,它們分時使用CPU,那在程序間切換的時候,光指令和數據的替換就要費多大事情啊!因此呢,大部分通常我們使用的電腦,都是單CPU多核的,好比咱們配的Dell T3600,有一顆Intel Xeon E5-1650,6核,虛擬爲12個邏輯核心。少部分高端人士須要更強的多任務併發能力,就會搞一個多顆多核CPU的機子,Mac Pro就能夠有兩顆


單顆多核和多顆單核:   就像你要去公司上班而不是在家裏上班同樣。去公司上班(多核CPU)的話,資源共享(共享緩存),溝通方便(CPU內數據傳輸速度遠大於總線速度)。
除非信息技術(類比總線)上有突破性進展,不然咱們仍是天天要擠公車去公司上班(多CPU方案沒法取代多核

在新的版本中, 使用了應用分組.
之前是使用多個 應用程序, 平級的, 好比最多見的兩個獨立的應用程序, 前臺和後臺, Home和Admin.它們是平

級的, 且目錄跟tp是在同一個地方.

而如今分組後, Home和Admin是做爲 一個大的/總的應用程序 App下的兩個應用分組,是兩個目錄. 而App跟

ThinkPHP是平級的.


NetSarang公司提供安全的 鏈接解決方案. 主要包括: xshell5, xftp5, xlpd5, xmanager5 都是鏈接的客戶端軟件.
爲何xmanager沒有自帶xftp? 實際上, xftp等跟xshell是獨立的軟件, 須要獨立的下載和安裝. 可是他們的操做界面(包括菜單/工具欄/設置等都基本上是同樣的)
它只是帶了 xbrowser, xconfig等, 再xbrowser中能夠管理xshell和xftp。

阿里雲申請?
idc: internet data center: 網絡數據中心, 一般是一些



hacker: 黑客
cracker: 駭客


/etc/services文件的做用是 表述了/規定了 系統中的服務名稱 和它們使用的端口號 和 協議 之間的 對應關係.這個文件能夠被其餘應用程序所讀取並使用,好比 獲取某個端口所正在使用的服務名稱, 或者使用服務名稱來代替端口號,更容易記憶. 也要求/推薦/建議 自開發的服務程序, 在這個文件中 寫上本身的服務名稱和端口號之間的對應關係. 這樣便於管理.

格式是: service-name port/protocol [aliases...] [ ## comments]

相關文章
相關標籤/搜索