【NGINX+PHP7.3+MYSQL】安装指南
文章目錄
- NGINX
- 添加源 --> 查看
- 安裝
- 配置
- 設(shè)置開(kāi)機(jī)啟動(dòng)
- 啟動(dòng)服務(wù)
- 停止服務(wù)
- 重新加載
- 防火墻
- 效果圖
- 可能出現(xiàn)的問(wèn)題
- 報(bào) [emerg] bind() to 0.0.0.0:XXXX failed (13: Permission denied)錯(cuò)誤的處理方式
- 端口小于1024
- 端口大于1024
- 403 Forbidden
- SELinux沒(méi)有關(guān)閉
- Nginx啟動(dòng)用戶和工作用戶不一致
- 網(wǎng)頁(yè)所在的目錄權(quán)限不對(duì)
- 缺少默認(rèn)的首頁(yè)
- 訪問(wèn)報(bào)錯(cuò):No input file specified
- recv() failed (104: Connection reset by peer) while reading response header from upstream
- MYSQL
- yum源的安裝
- 擴(kuò)展
- 修改密碼的強(qiáng)度:
- PHP7.3
- 安裝源
- 安裝PHP 以及 擴(kuò)展
- 設(shè)置
- 安裝更多擴(kuò)展:
- Composer
NGINX
Nginx (engine x) 是一個(gè)高性能的 HTTP 和反向代理服務(wù)器,也是一個(gè) IMAP/POP3/SMTP 服務(wù)器。。 本例演示 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配置
設(shè)置開(kāi)機(jī)啟動(dòng)
$ sudo systemctl enable nginx啟動(dòng)服務(wù)
$ sudo systemctl start nginx停止服務(wù)
$ sudo systemctl restart nginx重新加載
一般重新配置之后,不希望重啟服務(wù),這時(shí)可以使用重新加載。
$ sudo systemctl reload nginx防火墻
默認(rèn) CentOS7 使用的防火墻 firewalld 是關(guān)閉 http 服務(wù)的(打開(kāi) 80 端口)。
$ sudo firewall-cmd --zone=public --permanent --add-service=http success $ sudo firewall-cmd --reload success打開(kāi)之后,可以查看一下防火墻打開(kāi)的所有的服務(wù)
$ sudo firewall-cmd --list-service ssh dhcpv6-client http可以看到,系統(tǒng)已經(jīng)打開(kāi)了 http 服務(wù)。
效果圖
可能出現(xiàn)的問(wèn)題
報(bào) [emerg] bind() to 0.0.0.0:XXXX failed (13: Permission denied)錯(cuò)誤的處理方式
端口小于1024
原因是1024以下端口啟動(dòng)時(shí)需要root權(quán)限,所以sudo nginx即可。
端口大于1024
查看http允許訪問(wèn)的端口
$ semanage port -l | grep http_port_t將要啟動(dòng)的端口加入到如上端口列表中
$ semanage port -a -t http_port_t -p tcp 8090403 Forbidden
一般是四種原因:
- SELinux沒(méi)有關(guān)閉
- Nginx啟動(dòng)用戶和工作用戶不一致
- 網(wǎng)頁(yè)所在的目錄權(quán)限不對(duì)
- 缺少默認(rèn)的首頁(yè)
SELinux沒(méi)有關(guān)閉
1.1 臨時(shí)關(guān)閉SELinux,但是重啟操作系統(tǒng)還會(huì)開(kāi)啟
setenforce=01.2 永久關(guān)閉SELinux
vim /etc/selinux/config 將SELINUX=enforcing 修改為 SELINUX=disabled 狀態(tài)Nginx啟動(dòng)用戶和工作用戶不一致
查看啟動(dòng)nginx 用戶 ps aux | grep "nginx: worker process" | awk '{print $1}' nobody root修改nginx 配置文件 vim /etc/nginx/nginx.conf將 user nobody; 修改為 user root; 重啟Nginx 注意:Nginx的啟動(dòng)用戶和工作用戶可以不一致,但是要配好網(wǎng)頁(yè)目錄的權(quán)限,讓工作用戶有訪問(wèn)網(wǎng)頁(yè)目錄的權(quán)限網(wǎng)頁(yè)所在的目錄權(quán)限不對(duì)
3.1 精細(xì)控制:網(wǎng)頁(yè)根目錄要用x權(quán)限(也就是可以cd進(jìn)去),網(wǎng)頁(yè)所在的父級(jí)目錄要有r(可讀權(quán)限)
3.2 簡(jiǎn)單粗暴(不推薦,不安全,但是效果明顯):
缺少默認(rèn)的首頁(yè)
權(quán)限配完了,訪問(wèn)首頁(yè)還顯示403 Forbidden?
網(wǎng)頁(yè)根目錄提供一個(gè)默認(rèn)的首頁(yè): index.html
訪問(wèn)報(bào)錯(cuò):No input file specified
根本原因,是nginx配置不正確,導(dǎo)致CGI獲取參數(shù)錯(cuò)誤。簡(jiǎn)單來(lái)說(shuō),是因?yàn)榕渲梦募衒astcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 的 $document_root 這個(gè)變量未定義。
分析:
Nginx的配置文件中,有三級(jí)關(guān)系,http > server > location。
如果要在location中使用document_root,需要在上層server塊或http塊中定義了root指令,這樣才能通過(guò)繼承關(guān)系,
在location中用document_root拿到root的值。而定義在別的location中的root指令值,是一個(gè)局部變量,它的值無(wú)法在匹配php的這個(gè)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
擴(kuò)展
修改密碼的強(qiáng)度:
查看密碼的規(guī)則:
SHOW VARIABLES LIKE 'validate_password%';
關(guān)注兩個(gè)信息即可:
- validate_password_length=8,表示長(zhǎng)度最少為8位
- validate_password_policy=MEDIUM,表示密碼的安全等級(jí)為中
設(shè)置密碼強(qiáng)度
- set global validate_password_policy=0;–表示將密碼安全等級(jí)設(shè)置為low
- set global validate_password_length=6;–表示將密碼長(zhǎng)度設(shè)置為最小6位
PHP7.3
安裝源
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm安裝PHP 以及 擴(kuò)展
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 #開(kāi)啟開(kāi)機(jī)自啟systemctl restart php73-php-fpm #重啟systemctl start php73-php-fpm #啟動(dòng)systemctl stop php73-php-fpm #關(guān)閉systemctl status php73-php-fpm #檢查狀態(tài)設(shè)置
# 將php73鏈接到系統(tǒng)環(huán)境變量中,就可以使用 php -vln -s /opt/remi/php73/root/usr/bin/php /usr/bin/php# 將 cgi.fix_pathinfo 設(shè)置為 0sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/' /etc/opt/remi/php73/php.ini關(guān)于 cgi.fix_pathinfo 選項(xiàng)請(qǐng)查看(https://taobig.org/?p=650)潛在的漏洞風(fēng)險(xiǎn),關(guān)于安全隱患的問(wèn)題可查看(http://www.laruence.com/2010/05/20/1495.html)安裝更多擴(kuò)展:
目前只安裝了部分 PHP 拓展,更多擴(kuò)展可見(jiàn): $ 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總結(jié)
以上是生活随笔為你收集整理的【NGINX+PHP7.3+MYSQL】安装指南的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【Linux】 iptables vs
- 下一篇: MySQL的版本以及版本号