Linux 平臺通過 nginx 和 vsftpd 構建圖片伺服器

2021-02-19 Vue是最牛B的前端框架

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 上搭建圖片伺服器的過程就完成了。

相關焦點

  • 構建高效安全的Nginx Web伺服器
    選擇合適的軟體搭建Web伺服器,讓自己的Web伺服器支持高並發服務和抵禦外部攻擊的能力,是提供網際網路服務所需要長期面對的問題。本文作者根據自己在實踐中的經驗,構建了一套高效安全的Nginx Web伺服器。
  • Ubuntu 18.04部署帶有TLS的VsFTPD伺服器
    FTP或文件傳輸協議是一種常見的網絡協議,用於在兩臺計算機之間傳輸文件或將文件從桌面傳輸到您的網站或web託管伺服器。這些文件可以根據用戶在FTP伺服器上擁有的權限進行上傳和下載。讓我們一步一步地介紹如何在Ubuntu 18.04 LTS系統上安裝和設置FTP伺服器。這是使用FTP的最基本方法,一旦熟悉了它,就可以轉到更複雜的操作。
  • Linux常用伺服器構建-ftp-ssh伺服器
    Linux常用伺服器構建-ftp伺服器ftp伺服器FTP 是File Transfer Protocol(文件傳輸協議)的英文簡稱,而中文簡稱為「文傳協議」。用於Internet上的控制文件的雙向傳輸。同時,它也是一個應用程式(Application)。基於不同的作業系統有不同的FTP應用程式,而所有這些應用程式都遵守同一種協議以傳輸文件。
  • 如何在Ubuntu 18.04 LTS上安裝帶有TLS的VsFTPD伺服器
    FTP或文件傳輸協議是一種常見的網絡協議,用於在兩臺計算機之間傳輸文件或將文件從桌面傳輸到您的網站或web託管伺服器。這些文件可以根據用戶在FTP伺服器上擁有的權限進行上傳和下載。讓我們一步一步地介紹如何在Ubuntu 18.04 LTS系統上安裝和設置FTP伺服器。這是使用FTP的最基本方法,一旦熟悉了它,就可以轉到更複雜的操作。
  • vsftpd伺服器的搭建
    上周講了NFS伺服器的搭建方式,這是一種共享文件的服務。今天來講一下centos7伺服器下搭建FTP的方法。1、首先,通過yum的方式安裝vsftpdyum install vsftpd2、默認的主配置文件放在/etc/vsftpd/vsftpd.confvi /etc/vsftpd/vsftpd.conf
  • Ubuntu16.04環境下使用vsftpd搭建FTP伺服器
    #apt-get remove vsftpdvsftpd命令 啟動start 查看狀態status 停止stop 重啟restart# /etc/init.d/vsftpd restart   # service vsftpd restart# systemctl restart vsftpd# service vsftpd start# service
  • 使用 Nginx 的 image_filter 模塊來構建動態縮略圖伺服器
    $ sudo nginx -s reload通過在圖片請求地址的文件名前加上 /縮放大小/,就可以訪問到你想要的任意尺寸的縮略圖。例如:要生成縮略圖的圖片地址為:http://192.168.100.210/01.jpg,現在只需要將請求修改為:http://192.168.100.210/200/01.jpg 將會自動返回對應的縮略圖。
  • linux搭建FTP伺服器步驟
    linux搭建FTP伺服器在linux作業系統中搭建ftp伺服器,ftp伺服器會提供三種遠程登錄方式,分別是匿名登錄方式、本地用戶方式和虛擬用戶方式
  • Linux+.NetCore+Nginx搭建集群
    本篇和大家分享的是Linux+NetCore+Nginx搭建負載集群,對於netcore2.0發布後,我一直在看官網的文檔並學習,關注有哪些新增的東西,我
  • CentOS7 搭建vsftpd詳細教程
    root用戶,在默認的情況下,是不允許做為ftp用戶登錄的,但是我們可以通過一些配置,來解禁。下面正是這些操作的詳細講解,適當的時候並貼上相應的腳本。1.安裝vsftp用yum命令查找到了我們想要的vsftpd,開始安裝。
  • 在 Linux 上安裝 Nginx 搭建屬於自己的 Web 伺服器
    由於其性能和易用性,Nginx 是最受歡迎的 Web 伺服器。它是一個免費和開源的高性能 HTTP 伺服器。除了Web 伺服器功能,Nginx 還可以充當反向代理和負載均衡器。按照以下步驟將向您展示如何在 Ubuntu、Debian、CentOS、Rocky Linux、AlmaLinux 等各種 Linux 發行版上安裝 Nginx,並測試其功能。
  • centos 7.4 搭建ftp伺服器 vsftpd
    在centos 7.3測試也是OK的,其它版本沒有實驗# 安裝 vsftpd$ yum install vsftpd -y
  • Nginx Linux和Windows安裝教程
    前言本篇文章主要介紹的是Nginx Linux環境和Windows的安裝教程。Nginx 介紹❝Nginx("engine x")是一款是由俄羅斯的程序設計師Igor Sysoev所開發高性能的 Web和 反向代理 伺服器,也是一個 IMAP/POP3/SMTP 代理伺服器。❞HTTP基礎功能:模塊化的結構。
  • CentOS伺服器通過Nginx搭建java後臺服務
    web伺服器,同時也提供了IMAP/POP3/SMTP服務。因此引入Nginx就可以達到負載均衡的效果:淘寶的雙十一使用的就是這種方式處理高並發請求的由於Nginx是使用C語言編寫的,安裝運行在linux作業系統上的兼容性更好
  • Nginx 搭建圖片伺服器
    連結 | cnblogs.com/itdragon/p/7864916.html本章內容通過Nginx 和 FTP 搭建圖片伺服器。
  • 文件共享總結中篇-Linux伺服器文件共享
    上面提到,如果匿名用戶需要上傳、修改及刪除等權限時,需要對/var/ftp/pub目錄有寫權限,使用chown和chmod任意一種命令均可設置權限。重啟伺服器,我們未設置vsftpd開機自啟動哦,我們需要執行systemctl start vsftpd,啟動vsftpd服務,向外提供FTP服務。本次試驗由於我未關閉系統selinux,導致匿名用戶訪問FTP伺服器後,無法進行創建目錄及刪除文件操作。折騰了好久,才想明白。vsftpd是一個FTP伺服器程序,SELinux是CentOS的防火牆組件。
  • VSftpd安裝和配置FTP虛擬用戶實踐
    ls_recurse_enable=YES是否允許遞歸查詢 , 大型站點的 FTP 伺服器啟用此項可以方便遠程用戶查詢chroot_local_user=YESlisten=YES如果設置為 YES , 則 vsftpd 將以獨立模式運行,由vsftpd 自己監聽和處理連接請求listen_ipv6=YES設定是否支持IPV6pam_service_name=vsftpd設置 PAM 外掛模塊提供的認證服務所使用的配置文件名
  • 【必看】Ftp伺服器、 Samba伺服器、NFS伺服器的區別
    ftp的客戶可以是任意平臺,samba是專門針對windows客戶,而NFS則是面向linux/unix用戶的。下面是三種伺服器的對比情況:因此,儘可能少的共享目錄和賦予較小的訪問權限。主機名host是一個很靈活的項目,可以是單個的主機名稱(由/etc/hosts得到),主機ip地址,由域名伺服器解析的主機名稱,IP網絡—網絡號和子網掩碼中間用 「/」連接,NIC等。下面列舉一個例子。
  • 利用ModSecurity在Nginx上構建WAF
    它可以作為Web伺服器的模塊或是單獨的應用程式來運作。ModSecurity的功能是增強Web Application 的安全性和保護Web application以避免遭受來自已知與未知的攻擊。ModSecurity還包含了其他一些特性,如並行文本匹配、Geo IP解析和信用卡號檢測等,同時還支持內容注入、自動化的規則更新和腳本等內容。此外,它還提供了一個面向Lua語言的新的API,為開發者提供一個腳本平臺以實現用於保護Web應用的複雜邏輯。
  • 簡述 FTP 入侵與防禦 [ vsftpd ]
    時,到底能做些什麼挖0day,抱歉,並不在今天的討論範疇 ^_^允許匿名可寫,直接上傳webshell,一般極小的個人站才有可能,ftp目錄即網站目錄允許匿名下載,造成的敏感文件信息洩露爆破,亦可造成敏感配置洩露嗅探,搜集各種明文帳號密碼,然後再拿著這些帳號密碼,去撞目標的其它入口,或以此進行進一步的內網滲透提權,linux