Nginx WEB 伺服器
Nginx 是一個高性能的 HTTP 和 反向代理 伺服器,也是一個 IMAP/POP3/SMTP 代理伺服器。 Nginx 是由 Igor Sysoev 為俄羅斯訪問量第二的 Rambler.ru 站點開發的,第一個公開版本 0.1.0 發布於 2004 年 10 月 4 日。其將原始碼以類 BSD 許可證的形式發布,因它的穩定性、豐富的功能集、示例配置文件和低系統資源的消耗而聞名。
這篇文章主要介紹了 Linux 平臺通過 nginx 和 vsftpd 構建圖片伺服器, 需要的朋友可以參考下
因為開發需要,需要在 Linux 上構建一個獨立的圖片伺服器,此處默認您已安裝好 Linux 系統。系統環境:CentOs6.5,Vmware10
一、Nginx 安裝
1、nginx 安裝環境
nginx 是 C 語言開發,建議在 linux 上運行,本教程使用 Centos6.5 作為安裝環境。
安裝 nginx 需要先將官網下載的源碼進行編譯,編譯依賴 gcc 環境,如果沒有 gcc 環境,需要安裝 gcc:yum install gcc-c++
PCRE(PerlCompatible Regular Expressions) 是一個 Perl 庫,包括 perl 兼容的正則表達式庫。nginx 的 http 模塊使用 pcre 來解析正則表達式,所以需要在 linux 上安裝 pcre 庫。
yuminstall -y pcre pcre-devel
註:pcre-devel 是使用 pcre 開發的一個二次開發庫。nginx 也需要此庫。
zlib 庫提供了很多種壓縮和解壓縮的方式,nginx 使用 zlib 對 http 包的內容進行 gzip,所以需要在 linux 上安裝 zlib 庫。
yuminstall -y zlib zlib-devel
OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及 SSL 協議,並提供豐富的應用程式供測試或其它目的使用。
nginx 不僅支持 http 協議,還支持 https(即在 ssl 協議上傳輸 http),所以需要在 linux 安裝 openssl 庫。
yuminstall -y openssl openssl-devel
2、編譯安裝
將 nginx-1.8.0.tar.gz 拷貝至 linux 伺服器。
解壓:
tar -zxvf nginx-1.8.0.tar.gz
進入 nginx 的根目錄:
cd nginx-1.8.0
A.configure
./configure --help 查詢詳細參數(參考本教程附錄部分:nginx 編譯參數)
參數設置如下:
./configure \ --prefix=/usr/local/nginx \ --pid-path=/var/run/nginx/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --with-http_gzip_static_module \ --http-client-body-temp-path=/var/temp/nginx/client\ --http-proxy-temp-path=/var/temp/nginx/proxy\ --http-fastcgi-temp-path=/var/temp/nginx/fastcgi\ --http-uwsgi-temp-path=/var/temp/nginx/uwsgi\ --http-scgi-temp-path=/var/temp/nginx/scgi
注意:上邊將臨時文件目錄指定為 / var/temp/nginx,需要在 / var 下創建 temp 及 nginx 目錄
B. 編譯安裝
makemake install
安裝成功查看安裝目錄 :
C. 啟動 nginx
cd /usr/local/nginx/sbin/./nginx
查詢 nginx 進程:
15098 是 nginx 主進程的進程 id,15099 是 nginx 工作進程的進程 id
注意:執行./nginx 啟動 nginx,這裡可以 - c 指定加載的 nginx 配置文件,如下:
./nginx-c /usr/local/nginx/conf/nginx.conf
如果不指定 - c,nginx 在啟動時默認加載 conf/nginx.conf 文件,此文件的地址也可以在編譯安裝 nginx 時指定./configure 的參數(--conf-path= 指向配置文件(nginx.conf))
D. 停止 nginx
方式 1,快速停止:
cd /usr/local/nginx/sbin ./nginx -s stop
此方式相當於先查出 nginx 進程 id 再使用 kill 命令強制殺掉進程。
方式 2,完整停止 (建議使用):
cd /usr/local/nginx/sbin ./nginx -s quit
此方式停止步驟是待 nginx 進程處理任務完畢進行停止。
E. 重啟 nginx
方式 1,先停止再啟動(建議使用):
對 nginx 進行重啟相當於先停止 nginx 再啟動 nginx,即先執行停止命令再執行啟動命令。
如下:
./nginx -s quit ./nginx
方式 2,重新加載配置文件:
當 nginx 的配置文件 nginx.conf 修改後,要想讓配置生效需要重啟 nginx,使用 - s reload 不用先停止 nginx 再啟動 nginx 即可將配置信息在 nginx 中生效,如下:
./nginx -s reload
F. 測試
nginx 安裝成功,啟動 nginx,即可訪問虛擬機上的 nginx:
到這說明 nginx 上安裝成功。
二、FTP 安裝
1、安裝 vsftpd 組件
[root@bogon ~]# yum -y install vsftpd
安裝完後,有 / etc/vsftpd/vsftpd.conf 文件,是 vsftp 的配置文件。
2、添加一個 ftp 用戶
此用戶就是用來登錄 ftp 伺服器用的。
[root@bogon ~]# useradd ftpuser
這樣一個用戶建完,可以用這個登錄,記得用普通登錄不要用匿名了。登錄後默認的路徑為 /home/ftpuser.
3、給 ftp 用戶添加密碼。
[root@bogon ~]# passwd ftpuser
輸入兩次密碼後修改密碼。
4、防火牆開啟 21 埠
因為 ftp 默認的埠為 21,而 centos 默認是沒有開啟的,所以要修改 iptables 文件,有些安裝的 CentOs 默認沒有開啟防火牆,則無需考慮這步了。
[root@bogon ~]# vim /etc/sysconfig/iptables
在行上面有 22 -jACCEPT 下面另起一行輸入跟那行差不多的,只是把 22 換成 21,然後:wq 保存。
還要運行下, 重啟 iptables
[root@bogon ~]# service iptables restart
5、修改 selinux
外網是可以訪問上去了,可是發現沒法返回目錄(使用 ftp 的主動模式,被動模式還是無法訪問),也上傳不了,因為 selinux 作怪了。
修改 selinux:
執行以下命令查看狀態:
[root@bogon ~]# getsebool -a | grepftp allow_ftpd_anon_write --> off allow_ftpd_full_access --> off allow_ftpd_use_cifs --> off allow_ftpd_use_nfs --> off ftp_home_dir --> off ftpd_connect_db --> off ftpd_use_passive_mode --> off httpd_enable_ftp_server --> off tftp_anon_write --> off [root@bogon ~]#
執行上面命令,再返回的結果看到兩行都是 off,代表,沒有開啟外網的訪問
[root@bogon ~]#setsebool -P allow_ftpd_full_access on [root@bogon ~]#setsebool -P ftp_home_dir on
這樣應該沒問題了(如果,還是不行,看看是不是用了 ftp 客戶端工具用了 passive 模式訪問了,如提示 Entering Passive mode,就代表是 passive 模式,默認是不行的,因為 ftp passive 模式被 iptables 擋住了,下面會講怎麼開啟,如果懶得開的話,就看看你客戶端 ftp 是否有 port 模式的選項,或者把 passive 模式的選項去掉。如果客戶端還是不行,看看客戶端上的主機的電腦是否開了防火牆,關吧)
FileZilla 的主動、被動模式修改:
菜單:編輯→設置
6、關閉匿名訪問
修改 / etc/vsftpd/vsftpd.conf 文件:
重啟 ftp 服務:
[root@bogon ~]# service vsftpd restart
7、開啟被動模式
默認是開啟的,但是要指定一個埠範圍,打開 vsftpd.conf 文件,在後面加上
pasv_min_port=30000 pasv_max_port=30999
表示埠範圍為 30000~30999,這個可以隨意改。改完重啟一下 vsftpd 由於指定這段埠範圍,iptables 也要相應的開啟這個範圍,所以像上面那樣打開 iptables 文件。 也是在 21 上下面另起一行,更那行差不多,只是把 21 改為 30000:30999, 然後: wq 保存,重啟下 iptables。這樣就搞定了。
8、設置開機啟動 vsftpd ftp 服務
[root@bogon ~]# chkconfig vsftpd on
整個在 Linux 上搭建圖片伺服器的過程就完成了。