Nginx 安裝及配置php
1、Nginx 簡介:html
Nginx("engine x") 是一款是由俄羅斯的程序設計師 Igor Sysoev 所開發高性能的 Web和 反向代理服務器,也是一個 IMAP/POP3/SMTP 代理服務器。在高鏈接併發的狀況下,Nginx 是 Apache 服務器不錯的替代品。是 C 語言編寫的,建議在 Linux 運行。linux |
2、環境軟件版本準備:nginx
系統平臺:CentOS release 6.6 (Final) 64位。c++
Nginx:nginx-1.10.3.tar.gz 下載地址: http://nginx.org/download/nginx-1.10.3.tar.gz正則表達式
PCRE:pcre-8.35.tar.gz 下載地址: http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz算法
3、安裝編譯工具及庫文件:vim
[root@localhost ~]# yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel |
gcc:安裝 nginx 須要先將官網下載的源碼進行編譯,編譯依賴 gcc 環境。安全
zlib:zlib 庫提供了不少種壓縮和解壓縮的方式,nginx 使用 zlib 對 http 包的內容進行 gzip。服務器
openssl:OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼算法、經常使用的密鑰和證書封裝管理功能及SSL協議,並提供豐富的應用程序供測試或其它目的使用。nginx 不只支持http 協議,還支持 https(即在 ssl 協議上傳輸 http),因此須要在 linux 安裝 openssl 庫。
PCRE:PCRE(Perl Compatible Regular Expressions) 是一個 Perl 庫,包括 perl 兼容的正則表達式庫。nginx 的 http 模塊使用 pcre 來解析正則表達式,因此須要在 linux 上安裝 pcre庫。
安裝 PCRE:
1.解壓安裝包
[root@localhost moudles]# tar -zxvf pcre-8.35.tar.gz -C ../softwares/ |
2.進入安裝目錄:
[root@localhost moudles]# cd /opt/softwares/pcre-8.35/ |
3.編譯安裝:
[root@localhost pcre-8.35]# ./configure |
[root@localhost pcre-8.35]# make && make install |
4.查看 pcre 版本:
[root@localhost pcre-8.35]# pcre-config ––version |
4、Nginx 安裝:
1.解壓安裝包:
[root@localhost moudles]# tar -zxvf nginx-1.10.3.tar.gz -C ../softwares/ |
2.進入安裝目錄:
[root@localhost moudles]# cd /opt/softwares/nginx-1.10.3/ |
3.編譯安裝:注意:編譯時將臨時文件目錄指定爲 /var/temp/nginx , 須要在/var 目錄下遞歸建立 /temp 和 /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 |
[root@localhost nginx-1.10.3]# make && make install |
4.啓動報錯修復:
[root@localhost nginx-1.10.3]# cd /usr/local/nginx/sbin/ |
[root@localhost sbin]# ./nginx |
從錯誤看是缺乏 lib 包致使的,進一步查看一下:
[root@localhost sbin]# ldd $(which /usr/local/nginx/sbin/nginx) |
從上面的信息能夠看出 libpcre.so.1 => not found ,也就是沒有找到 libpcre.so.1, 咱們進入 /lib64 本身手動連接下。
[root@localhost sbin]# cd /lib64/ |
[root@localhost lib64]# ln -s libpcre.so.0.0.1 libpcre.so.1 |
5.查看 nginx 版本:
[root@localhost lib64]# cd /usr/local/nginx/sbin/ |
6.nginx 經常使用命令:
## 啓動 nginx [root@localhost sbin]# ./nginx ## 中止 nginx ## -s都是採用向 Nginx 發送信號的方式 [root@localhost sbin]# ./nginx -s stop [root@localhost sbin]# ./nginx -s quit ## Nginx 重載配置 [root@localhost sbin]# ./nginx -s reload
7.設置防火牆:
CentOS 默認是不開放 80 端口的,這樣致使了配置完 Nginx 只能在本機訪問(127.0.0.1) 局域網內訪問不了 。
① 查看防火牆狀態:
[root@localhost sbin]# service iptables status Chain FORWARD (policy ACCEPT) Chain OUTPUT (policy ACCEPT) |
② 開放 80 端口:
[root@localhost sbin]# vim /etc/sysconfig/iptables |
③ 重啓防火牆:
[root@localhost sbin]# service iptables restart |
8.nginx啓動成功狀態:
FTP 安裝及配置
1、安裝vsftpd組件:
[root@localhost conf]# yum -y install vsftpd |
2、添加一個 FTP 用戶:此用戶就是用來登錄 FTP 服務器用的。
① 建立用戶:
[root@localhost conf]# useradd ftpuser |
建立完用戶,能夠用這個用戶登陸,記得用普通登錄,最好不要匿名登錄了。
② 查看是否建立成功:
[root@localhost home]# ls |
③ 爲帳戶添加密碼:建議 8 位以上密碼
[root@localhost ~]# passwd ftpuser |
3、設置防火牆:
FTP 服務器默認端口爲 21, 而 CentOS 默認是不開放 21 端口的。
① 開放 21 端口:
[root@localhost ~]# vim /etc/sysconfig/iptables |
② 重啓防火牆:
[root@localhost ~]# service iptables restart |
4、修改 SeLinux:
外網能夠訪問,可是沒有返回目錄,也上傳不了。
① 查看狀態:
[root@localhost ~]# getsebool -a | grep ftp |
注意: 標註兩行爲 off,表明沒有開啓外網的訪問。
② 開啓外網訪問:
[root@localhost ~]# setsebool -P allow_ftpd_full_access on |
已經開啓。
5、關閉匿名訪問:
將 /etc/vsftpd/vsftpd.conf 文件中 anonymous_enable=YES 改爲 NO
[root@localhost vsftpd]# vim /etc/vsftpd/vsftpd.conf |
6、開啓被動模式:
① 設置端口範圍:被動模式默認是開啓的,可是咱們要設置一個端口範圍,在 vsftpd.conf 文件結尾加上端口範圍, 如:
pasv_min_port=30000 |
② 重啓 vsftpd:
[root@localhost vsftpd]# service vsftpd restart |
③ 設置防火牆端口:
[root@localhost vsftpd]# vim /etc/sysconfig/iptables |
④ 重啓防火牆:
[root@localhost vsftpd]# service iptables restart |
7、設置開機自啓 vsftpd FTP服務:
[root@localhost vsftpd]# chkconfig vsftpd on |
配置 Nginx + FTP 服務器
1、配置Nginx 服務器:
1. 進入nginx 配置文件目錄:
[root@localhost vsftpd]# cd /usr/local/nginx/conf/ |
2. 修改配置文件:有兩種方式
①方式一:在配置文件server{}中location /{} 修改配置
1 #默認請求 2 location / { 3 root /home/ftpuser/www;#定義服務器的默認網站根目錄位置 4 index index.html index.php index.htm;#定義首頁索引文件的名稱 5 }
②方式二:在http{}內配置新服務
1 server { 2 listen 8080; 3 server_name localhost; 4 5 #charset utf-8; 6 7 #access_log logs/host.access.log main; 8 9 #默認請求 10 location / { 11 root /home/ftpuser/www;#定義服務器的默認網站根目錄位置 12 index index.html index.php index.htm;#定義首頁索引文件的名稱 13 } 14 }
部署驗證
出現403問題。
解決方案:
1.查看配置文件中路徑是否配置成功:
location / {
root /home/ftpuser/www; index index.html index.htm; }
[root@localhost conf]# cd /home/ftpuser/www/ |
兩個路徑徹底匹配,說明路徑沒有問題。
2.查看路徑中是否存在文件:
[root@localhost www]# ls |
存在文件,能夠排除是文件問題。
3.排查權限問題:
[root@localhost conf]# cat nginx.conf #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root /home/ftpuser/www; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { # listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} }
發現用戶權限沒有開啓。咱們添加須要的用戶。
[root@localhost conf]# vim nginx.conf #user nobody; |
從新加載 nginx 配置:
[root@localhost conf]# cd ../sbin/ |
從新驗證