新聞中心
Nginx 特性

Nginx 性能穩(wěn)定、功能豐富、運維簡單、處理靜態(tài)文件速度快且消耗系統(tǒng)資源極少。
1、相比 Apache,用 Nginx 作為 Web 服務器:使用資源更少,支持更多并發(fā)連接,效率更高。
2、作為負載均衡服務器:Nginx 既可在內部直接支持 Rails 和 php,也可支持作為 HTTP 代理服務器對外進行服務。Nginx 用 C 編寫而成, 不論是系統(tǒng)資源開銷還是 CPU 使用效率都比 Perlbal 要好的多。
3、作為郵件代理服務器:Nginx 同時也是一款非常優(yōu)秀的郵件代理服務器(最早開發(fā)這個產品的目的之一,是作為郵件代理服務器)。
4、反向代理可以根據url將請求轉向于不同用途的集群,比如圖片請求,轉向圖片服務器集群;視頻請求,轉身視頻服務器集群。
nginx是一款輕量級的web服務器/反向代理服務器/電子郵件代理服務器,安裝非常簡單,配置文件也很簡潔(還支持 perl 語法)。Nginx 支持平滑加載新配置,還能夠在不間斷服務的情況下進行軟件版本升級。
Apache 特性
1、Apache 是 LAMP 架構最核心的 Web Server,開源、穩(wěn)定、模塊豐富是 Apache 的優(yōu)勢。但 Apache 的缺點是有些臃腫,內存和 CPU 開銷大,性能上有損耗,不如一些輕量級的 Web 服務器(譬如:Nginx、Tengine等)高效,輕量級的 Web 服務器對于靜態(tài)文件的響應能力來說遠高于 Apache 服務器。
2、Apache 做為 Web Server 是負載 PHP 的最佳選擇,如果流量很大的話,可以采用 Nginx 來負載非 PHP 的 Web 請求。Nginx 是一個高性能的 HTTP 和反向代理服務器,Nginx 以其穩(wěn)定、豐富功能集、示例配置文件和低系統(tǒng)資源的消耗而聞名。Nginx 現能支持 PHP 和 FastCGI,也支持負載均衡和容錯,可和 Apache 配合使用,是輕量級的 HTTP 服務器的首選。
3、Web 服務器緩存也有多種方案,Apache 提供了自己的緩存模塊,也可以使用外加的 Squid 模塊進行緩存,這兩種方式均可有效提高 Apache 的訪問響應能力。Squid Cache 是一個 Web 緩存服務器,支持高效緩存,可作為網頁服務器的前置 cache 服務器緩存相關請求以提高 Web 服務器速度。把 Squid 放在 Apache 的前端來緩存 Web 服務器生成動態(tài)內容,而 Web 應用程序只需要適當地設置頁面實效時間即可。如訪問量巨大,則可考慮使用 memcache 作為分布式緩存。
4、PHP 的加速可使用 eAccelerator 加速器,eAccelerator 是一個自由開放源碼的 PHP 加速器。它會優(yōu)化動態(tài)內容緩存,提高 PHP 腳本緩存性能,使 PHP 腳本在編譯狀態(tài)下,對服務器的開銷幾乎完全消除。它還可對腳本起優(yōu)化作用,以加快其執(zhí)行效率。 使 PHP 程序代碼執(zhí)效率可提高 1-10 倍。
nginx優(yōu)點:
- 輕量級服務器,相比較apache占用的資源更加少。
- 高并發(fā)。
- 配置文件的語法等簡單易懂
- 社區(qū)活躍。
- 支持epoll模型。使得nginx可以支持高并發(fā)。
- 利用nginx可以對ip限速,可以限制連接數
環(huán)境:
CentOS 6.8 2.6.32-642.15.1.el6.x86_64
軟件:
libiconv-1.14.tar.gz
libmcrypt-2.5.8.tar.gz
mcrypt-2.6.8.tar.gz
mhash-0.9.9.9.tar.gz
mysql-5.6.12-linux-glibc2.5-x86_64.tar.gz(二進制版)
php-5.6.30.tar.gz
nginx-1.12.0.tar.gz
提示:在進入正題之前一定要先去了解下nginx的工作原理和常用場景。
不要死記,多操作,多理解,自然就懂了。
看別人操作,不如自己操作。
要能清晰的了解同類產品的區(qū)別。
大綱:
- 安裝nginx
- 啟動nginx
- 配置虛擬主機
- 安裝mysql二進制版
- 安裝php
- 測試lnmp環(huán)境
nginx
1、安裝nginx
wget http:
//nginx
.org
/download/nginx-1
.12.0.
tar
.gz
tar
zxvf nginx-1.12.0.
tar
.gz
cd
nginx-1.12.0/
yum
install
gcc gcc-c++ zilb.x86_64 zlib-devel.x86_64 pcre-devel.x86_64 pcre.x86_64
openssl.x86_64 openssl-devel.x86_64-y
useradd
-M -s
/sbin/nologin
nginx
.
/configure
--help
.
/configure
--prefix=
/application/nginx1
.12.0 --user=nginx --group=nginx --with-pcre
--with-http_ssl_module --with-http_stub_status_module
echo
$?
make
echo
$?
make
install
echo
$?
ln
-s
/application/nginx1
.12.0/
/application/nginx
cd
/application/nginx
| nginx目錄結構 | |
| conf | 配置文件 |
| html | 默認站點 |
| logs |
日志文件 |
| sbin | 命令 |
總結:
1 選擇軟件一定不能選擇最新的,否則出問題不容易解決,因為第一個吃螃蟹。
2 一定要自己創(chuàng)建用戶,否則nginx會給默認用戶。
3 編譯的參數根據自己的實際情況出發(fā)。
4 編譯、make、make install要養(yǎng)成echo $?的習慣防止出錯。
5 做一個軟鏈接優(yōu)化路徑。
2、啟動nginx
/application/nginx/sbin/nginx
-t
/application/nginx/sbin/nginx
lsof
-i :80
curl localhost
總結:
- nginx的檢查語法操作是一樣的,只是命令名字換了
- nginx啟動后面不需要任何參數
- 本地做個訪問測試如果能成功則說明網站已經在工作了,在如果外網訪問不進來就是其他問題了,比如防火墻iptables、selinux等的問題
3、配置虛擬主機
如果熟悉了Apache的虛擬主機那么Nginx的虛擬主機也很容易理解,而且配置還比Apache簡單很多。
虛擬主機:
- 基于域名的虛擬主機
- 基于IP的虛擬主機
- 基于端口的虛擬主機
mkdir
/application/nginx/conf/extra
-p
##把我們的虛擬主機文件放在這個擴展目錄中,可以在管理網站的時候更加方便
vim
/application/nginx/conf/nginx
.conf
##將主配置文件修改為以下內容
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application
/octet-stream
;
sendfile on;
keepalive_timeout 65;
include extra
/blog
.conf;
include extra
/easy
.conf;
include extra
/bad
.conf;
}
vim
/application/nginx/conf/extra/blog
.conf
##將虛擬主機blog配置文件配置為以下內容,不存在則創(chuàng)建
server {
listen 80;
server_name www.blog.linuxidc.com;
location / {
root html
/blog
;
index index.html index.htm;
}
}
vim
/application/nginx/conf/extra/easy
.conf
##將虛擬主機easy配置為以下內容,不存在則創(chuàng)建
server {
listen 80;
server_name www.easy.linuxidc.com;
location / {
root html
/easy
;
index index.html index.htm;
}
}
vim
/application/nginx/conf/extra/bad
.conf
##將虛擬主機bad配置文件修改為以下內容,不存在則創(chuàng)建
server {
listen 80;
server_name www.bad.linuxidc.com;
location / {
root html
/bad
;
index index.html index.htm;
}
}
cd
/application/nginx/html/
for
name
in
blog bad easy;
do
mkdir
$name;
echo
"$name.linuxidc.com"
>
$name
/index
.html;
done
##利用for循環(huán)創(chuàng)建目錄,并向index.html中寫入內容
tree ./
bad
│ └── index.html
├── blog
│ └── index.html
├── easy
│ └── index.html
vim
/etc/hosts
127.0.0.1 localhost www.blog.linuxidc.com www.easy.linuxidc.org.cn
##修改本地hosts文件,為了配合我們的基于域名的虛擬主機
ping
-c 1
ping
-c 1
ping
-c 1 www.bad.linuxidc.com
/application/nginx/sbin/nginx
-s reload
##重啟nginx服務器
curl
blog.linuxidc.com
curl
bad.linuxidc.com
curl
easy.linuxidc.com
提示:使用curl訪問域名時返回如上信息即基于域名的虛擬主機搭建成功。
擴展:
* 域名重定向
- 為什么需要域名重定向,第一是為了防止惡意綁定,最簡單的道理就是,域名是別人買的,別人想把域名指向公網中的任意一臺主機我們也沒有辦法。但是用了域名重定向后,可以在使用惡意域名訪問我們的服務器后,會在地址欄重定向為我們指定的域名,并訪問指定的站點。(理解一個原理,在一個未知域名訪問我們的主機時其實是以IP的形式訪問,也就是說我們重定向的其實是IP地址)
- 還有就是多域名指向同意服務器,提高訪問量。
------------------------------------------------------------------
vim
/application/nginx/conf/extra/rewrite
.conf
##編譯rewirte.conf文件不存在則創(chuàng)建,內容如下
server {
listen 80;
server_name www.rewrite.linuxidc.org;
rewrite ^/(.*) http:
//www
.easy.linuxidc.com/$1 permanent;
#^/表示
#
#永久有效
}
----OK------------------------------------------------------------
------------------------------------------------------------------
vim
/application/nginx/conf/nginx
.conf
##修改nginx的主配置文件,注意include的順序這個很重要否則域名重定向就沒用了
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application
/octet-stream
;
sendfile on;
keepalive_timeout 65;
include extra
/rewrite
.conf;
include extra
/blog
.conf;
include extra
/easy
.conf;
include extra
/bad
.conf;
}
----OK------------------------------------------------------------
/application/nginx/sbin/nginx
-t
/application/nginx/sbin/nginx
-s reload
vim
/etc/hosts
127.0.0.1 localhost www.blog.linuxidc.com www.easy.linuxidc.org.cn
www.rewrite.linuxidc.org
ping
-c 1
curl -L www.rewrite.linuxidc.org
curl -I www.rewrite.linuxidc.org
HTTP
/1
.1 301 Moved Permanently
Server: nginx
/1
.12.0
Date: Sun, 16 Apr 2017 14:19:58 GMT
Content-Type: text
/html
Content-Length: 185
Connection: keep-alive
Location: http:
//www
.easy.linuxidc.com/
隱藏nginx版本號:
vim
/application/nginx/conf/nginx
.conf
##修改為以下內容
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application
/octet-stream
;
sendfile on;
keepalive_timeout 65;
server{
listen 8080;
server_name www.linuxidc.win;
rewrite ^/(.*) http:
//www
.blog.linuxidc.com/$1 permanent;
}
include extra
/easy
.conf;
include extra
/bad
.conf;
include extra
/blog
.conf;
server_tokens off;
}
apache隱藏版本號的方法:
----------------------------
cat
/application/apache/conf/extra/httpd-default
.conf
.............
ServerTokens Prod
ServerSignature Off
.............
-----------------------
nginx日志管理
-
使用mv工具和crontab工具
具體方法如下:
----------------------------------------------------------------------------
vim nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application
/octet-stream
;
sendfile on;
keepalive_timeout 65;
log_format main
'$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'
;
include extra
/rewrite
.conf;
include extra
/bad
.conf;
include extra
/blog
.conf;
include extra
/easy
.conf;
server_tokens off;
}
vim extra
/blog
.conf
server {
listen 80;
server_name www.blog.linuxidc.com;
access_log logs
/blog
.access.log main;
location / {
root html
/blog
;
index index.html index.htm;
}
}
##其他的配置文件也一樣在server標簽里添加日志信息
----OK------------------------------------------------------------
#sed -i '/server_name www.bad.linuxidc.com;/a\\taccess_log logs\/bad.access.log
main; ' extra
/bad
.conf
..
/sbin/nginx
-t
..
/sbin/nginx
-s reload
ll ..
/logs/
total 220
-rw-r--r-- 1 root root 110155 Apr 17 15:42 access.log
-rw-r--r-- 1 root root 0 Apr 17 15:42 bad.access.log
-rw-r--r-- 1 root root 0 Apr 17 15:42 blog.access.log
-rw-r--r-- 1 root root 0 Apr 17 15:42 easy.access.log
-rw-r--r-- 1 root root 98802 Apr 17 15:43 error.log
-rw-r--r-- 1 root root 6 Apr 16 22:29 nginx.pid
-rw-r--r-- 1 root root 0 Apr 17 15:42 rewrite.access.log
##可見日志文件已經生成
---------------------------------------------------------------------------------
vim
/application/nginx/logs/backlog
.sh
##寫一個自動備份的腳本
#!/bin/sh
for
name
in
rewrite bad blog easy;
do
/bin/mv
/application/nginx/logs/
${name}.access.log
/applog/nginx/access/
$(
date
+%F)_${name}.log
if
[ $? -
eq
0 ]
then
echo
"$(date +%F) ${name}"
>>
/applog/nginx/access/successfully
.txt
else
echo
"$(date +%F) ${name}"
>>
/applog/nginx/access/error
.txt
fi
done
/bin/find
/applog/nginx/access/
-mtime +7 -
exec
rm
-rf {} \;
---腳本完成------OK------------------------------------------------------------
chmod
+x
/application/nginx/logs/backlog
.sh
crontab
-e
30 1 * * *
/application/nginx/logs/backlog
.sh
##晚上訪問量少,適合做備份等工作
mkdir
-p
/applog/nginx/access/ 總結:
- 基于域名的虛擬主機普遍常用到,基于IP和端口的一般在公司內部使用
- 在修改配置文件之前一定要做好備份,一邊修改和對比
- 創(chuàng)建擴張目錄,存放虛擬主機的配置,因為在企業(yè)里由于需要配合大量的業(yè)務,所以配置內容也會隨之增加,如果全部都是在nginx.conf里的話會使得整個文件非常的臃腫。
- apache的重啟:./bin/apachectl restart
- nginx的配置文件每句結尾一定要加上;(分號)
- windows修改hosts的路徑:win+R--> system32--> drivers --> etc-->hosts。如果記事本不能修改,請先以管理員運行記事本,在把hosts文件拖入。推薦使用Notepad++。
- Apache服務器在站點目錄下沒有index.html時,可以訪問并查看整個網站的目錄結構,可以通過修改httpd.conf中的“Options Indexes FollowSymLinks”---> "Options -Indexes FollowSymLinks"。nginx安全新則相對高點,如果沒有index.html文件直接報錯一般是403.
- Apache服務器的默認站點目錄是DocumentRoot。Nginx是root html。
- 服務器一定要隱藏版本號,否則容易被攻擊。
++++++++++++++++++++++nginx服務安裝完成++++++++++++++++++++++++
Mysql
4、安裝二進制mysql
mysql分類:
社區(qū)版
商業(yè)版
集群
wget http:
//dev
.mysql.com
/get/Downloads/MySQL-5
.5
/mysql-5
.5.32-linux2.6-x86_64.
tar
.gz
tar
zxvf mysql-5.5.32-linux2.6-x86_64.
tar
.gz
cp
-avr mysql-5.5.32-linux2.6-x86_64/
/application/
cd
/application/
mv
mysql-5.5.32-linux2.6-x86_64/ mysql-5.5.32/
ln
-s mysql-5.5.32/ mysql
useradd
-M -s
/sbin/nologin
mysql
cd
mysql
mkdir
/application/mysql/data
-p
chown
-R mysql:mysql
/application/mysql-5
.5.32/
-----------------------------------------------------------------
.
/scripts/mysql_install_db
--basedir=
/application/mysql/
--datadir=
/application/mysql/data/
--user=mysql
##初始化數據庫
mysql_install_db根據版本的不同可能存放的路徑也不一樣
--basedir是mysql的安裝路縉
--datadir是數據文件存放路徑
--user是用戶名
成功的標準是
echo
$?沒有錯誤+兩個OK沒有error
To start mysqld at boot
time
you have to copy
support-files
/mysql
.server to the right place
for
your system
##想要開機自動啟動,就把mysql.server放到正確的位置即/etc/init.d/mysqld
/application/mysql//bin/mysqladmin
-u root password
'new-password'
/application/mysql//bin/mysqladmin
-u root -h linuxidc password
'new-password'
Alternatively you can run:
/application/mysql//bin/mysql_secure_installation
##設置密碼的方法
You can start the MySQL daemon with:
cd
/application/mysql/
;
/application/mysql//bin/mysqld_safe
&
##運行數據庫
You can
test
the MySQL daemon with mysql-
test
-run.pl
cd
/application/mysql//mysql-test
; perl mysql-
test
-run.pl
##測試數據庫
提示:
/etc/init
.d
/mysqld
實質是復制了mysql.server文件,所以一定不要和
cd
/application/mysql/
;
/application/mysql//bin/mysqld_safe
&方法一起用否則會出錯
---------------------------------------------------------------
\
cp
support-files
/my-medium
.cnf
/etc/my
.cnf
\
cp
support-files
/mysql
.server
/etc/init
.d
/mysqld
--------------------------------------
vim
/etc/init
.d
/mysqld
..................
basedir=
/application/mysql/
datadir=
/application/mysql/data
...................
或者
#sed -i'46s/\(basedir=\)/\1\/application\/mysql/p' /etc/init.d/mysqld
##修改46行為basedir=/application/mysql,只限定當前環(huán)境,其他環(huán)境可能有變化
#sed -i'47s/\(datadir=\)/\1\/application\/mysql\/data/p' /etc/init.d/mysqld
##修改datadir為/application/mysq/data
----OK---------------------------------
chmod
+x
/etc/init
.d
/mysqld
/etc/init
.d
/mysqld
start
echo
"export PATH=/application/mysql/bin:$PATH"
>>
/etc/profile
source
/etc/profile
----------------------------------------------------
mysql_secure_installation
##以下內容看自己的需求
mysql -uroot -p
mysql>show databases;
mysql> use mysql
mysql> show tables;
mysql>
select
User,Host from user;
mysql>DELETE FROM user WHERE User=
'root'
and Host=
'::1'
;
## 目前是不會用的到的所以刪除,如果有需求就不用刪除
mysql> quit
--OK-------------------------------------------------- 總結:
a) 針對自己的硬件平臺選用合適的編譯器來優(yōu)化編譯后的二進制代碼;
b) 根據不同的軟件平臺環(huán)境調整相關的編譯參數;
c) 針對我們特定應用場景選擇需要什么組件不需要什么組件;
d) 根據我們的所需要存儲的數據內容選擇只安裝我們需要的字符集;
e) 同一臺主機上面可以安裝多個MySQL;
f) 等等其他一些可以根據特定應用場景所作的各種調整。
在源碼安裝給我們帶來更大靈活性的同時,同樣也給我們帶來了可能引入的隱患:
a) 對編譯參數的不夠了解造成編譯參數使用不當可能使編譯出來的二進制代碼不夠穩(wěn)定;
b) 對自己的應用環(huán)境把握失誤而使用的優(yōu)化參數可能反而使系統(tǒng)性能更差;
c) 還有一個并不能稱之為隱患的小問題就是源碼編譯安裝將使安裝部署過程更為復雜,所花費的
時間更長;
PHP
需要下載以下的依賴包,并且編譯:
libiconv(libiconv-1.14.tar.gz)
libmcrypt-2.5.8.tar.gz,加密庫
mcrypt-2.6.8.tar.gz
mhash-0.9.9.9.tar.gz
網頁題目:CentOS6.8安裝LNMP環(huán)境(Linux+Nginx+MySQL+PHP)
網站鏈接:http://www.5511xx.com/article/dheiopp.html


咨詢
建站咨詢
