【NGINX+PHP7.3+MYSQL】安装指南
文章目錄
- NGINX
- 添加源 --> 查看
- 安裝
- 配置
- 設置開機啟動
- 啟動服務
- 停止服務
- 重新加載
- 防火墻
- 效果圖
- 可能出現的問題
- 報 [emerg] bind() to 0.0.0.0:XXXX failed (13: Permission denied)錯誤的處理方式
- 端口小于1024
- 端口大于1024
- 403 Forbidden
- SELinux沒有關閉
- Nginx啟動用戶和工作用戶不一致
- 網頁所在的目錄權限不對
- 缺少默認的首頁
- 訪問報錯:No input file specified
- recv() failed (104: Connection reset by peer) while reading response header from upstream
- MYSQL
- yum源的安裝
- 擴展
- 修改密碼的強度:
- PHP7.3
- 安裝源
- 安裝PHP 以及 擴展
- 設置
- 安裝更多擴展:
- Composer
NGINX
Nginx (engine x) 是一個高性能的 HTTP 和反向代理服務器,也是一個 IMAP/POP3/SMTP 服務器。。 本例演示 CentOS 7 下安裝和配置 Nginx 的基本步驟。
添加源 --> 查看
$ sudo rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm$ sudo yum repolist Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile* base: mirrors.aliyun.com* extras: mirrors.aliyun.com* updates: mirrors.aliyun.com repo id repo name status base/7/x86_64 CentOS-7 - Base 9,911 extras/7/x86_64 CentOS-7 - Extras 368 nginx/x86_64 nginx repo 108 updates/7/x86_64 CentOS-7 - Updates 1,041 repolist: 11,428安裝
$ sudo yum install nginx配置
設置開機啟動
$ sudo systemctl enable nginx啟動服務
$ sudo systemctl start nginx停止服務
$ sudo systemctl restart nginx重新加載
一般重新配置之后,不希望重啟服務,這時可以使用重新加載。
$ sudo systemctl reload nginx防火墻
默認 CentOS7 使用的防火墻 firewalld 是關閉 http 服務的(打開 80 端口)。
$ sudo firewall-cmd --zone=public --permanent --add-service=http success $ sudo firewall-cmd --reload success打開之后,可以查看一下防火墻打開的所有的服務
$ sudo firewall-cmd --list-service ssh dhcpv6-client http可以看到,系統已經打開了 http 服務。
效果圖
可能出現的問題
報 [emerg] bind() to 0.0.0.0:XXXX failed (13: Permission denied)錯誤的處理方式
端口小于1024
原因是1024以下端口啟動時需要root權限,所以sudo nginx即可。
端口大于1024
查看http允許訪問的端口
$ semanage port -l | grep http_port_t將要啟動的端口加入到如上端口列表中
$ semanage port -a -t http_port_t -p tcp 8090403 Forbidden
一般是四種原因:
- SELinux沒有關閉
- Nginx啟動用戶和工作用戶不一致
- 網頁所在的目錄權限不對
- 缺少默認的首頁
SELinux沒有關閉
1.1 臨時關閉SELinux,但是重啟操作系統還會開啟
setenforce=01.2 永久關閉SELinux
vim /etc/selinux/config 將SELINUX=enforcing 修改為 SELINUX=disabled 狀態Nginx啟動用戶和工作用戶不一致
查看啟動nginx 用戶 ps aux | grep "nginx: worker process" | awk '{print $1}' nobody root修改nginx 配置文件 vim /etc/nginx/nginx.conf將 user nobody; 修改為 user root; 重啟Nginx 注意:Nginx的啟動用戶和工作用戶可以不一致,但是要配好網頁目錄的權限,讓工作用戶有訪問網頁目錄的權限網頁所在的目錄權限不對
3.1 精細控制:網頁根目錄要用x權限(也就是可以cd進去),網頁所在的父級目錄要有r(可讀權限)
3.2 簡單粗暴(不推薦,不安全,但是效果明顯):
缺少默認的首頁
權限配完了,訪問首頁還顯示403 Forbidden?
網頁根目錄提供一個默認的首頁: index.html
訪問報錯:No input file specified
根本原因,是nginx配置不正確,導致CGI獲取參數錯誤。簡單來說,是因為配置文件中fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 的 $document_root 這個變量未定義。
分析:
Nginx的配置文件中,有三級關系,http > server > location。
如果要在location中使用document_root,需要在上層server塊或http塊中定義了root指令,這樣才能通過繼承關系,
在location中用document_root拿到root的值。而定義在別的location中的root指令值,是一個局部變量,它的值無法在匹配php的這個location中被獲取。
解決:
把“/” location中的 root 往上提到 server 塊中。
或者,
在php的location塊中重新定義 root。
recv() failed (104: Connection reset by peer) while reading response header from upstream
- 修改配置文件 /etc/php-fpm.d/www.conf
- listen = 127.0.0.1:9000 改成 listen = 9000
- listen.allowed_clients = 127.0.0.1 注釋掉或刪掉
MYSQL
yum源的安裝
rpm -ivh mysql57-community-release-el7-9.noarch.rpm
安裝完成后,就可以使用yum命令安裝mysql了:
yum -y install mysql-server
擴展
修改密碼的強度:
查看密碼的規則:
SHOW VARIABLES LIKE 'validate_password%';
關注兩個信息即可:
- validate_password_length=8,表示長度最少為8位
- validate_password_policy=MEDIUM,表示密碼的安全等級為中
設置密碼強度
- set global validate_password_policy=0;–表示將密碼安全等級設置為low
- set global validate_password_length=6;–表示將密碼長度設置為最小6位
PHP7.3
安裝源
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm安裝PHP 以及 擴展
yum install -y php73-php-fpm php73-php-cli php73-php-bcmath php73-php-gd php73-php-json php73-php-mbstring php73-php-mcrypt php73-php-mysqlnd php73-php-opcache php73-php-pdo php73-php-pecl-crypto php73-php-pecl-mcrypt php73-php-pecl-geoip php73-php-pecl-swoole php73-php-recode php73-php-snmp php73-php-soap php73-php-xml php73-php-zipphp73 -v #查看版本systemctl enable php73-php-fpm #開啟開機自啟systemctl restart php73-php-fpm #重啟systemctl start php73-php-fpm #啟動systemctl stop php73-php-fpm #關閉systemctl status php73-php-fpm #檢查狀態設置
# 將php73鏈接到系統環境變量中,就可以使用 php -vln -s /opt/remi/php73/root/usr/bin/php /usr/bin/php# 將 cgi.fix_pathinfo 設置為 0sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/' /etc/opt/remi/php73/php.ini關于 cgi.fix_pathinfo 選項請查看(https://taobig.org/?p=650)潛在的漏洞風險,關于安全隱患的問題可查看(http://www.laruence.com/2010/05/20/1495.html)安裝更多擴展:
目前只安裝了部分 PHP 拓展,更多擴展可見: $ yum search php73$ 更新 PHP: yum update #更新可更新的所有軟件,包括PHPComposer
curl -sS https://getcomposer.org/installer -o composer-setup.phpsudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer# 更新 composer sudo composer self-update總結
以上是生活随笔為你收集整理的【NGINX+PHP7.3+MYSQL】安装指南的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Linux】 iptables vs
- 下一篇: MySQL的版本以及版本号