此文是記錄在fedora31中配置開發(fā)環(huán)境的記錄遇到的坑和填坑的過程糕殉。
操作前提是已經(jīng)修改fedora的鏡像源,否則下載會(huì)很慢殖告。
更新你的Fedora系統(tǒng)阿蝶,運(yùn)行以下命令:
sudo dnf -y update
安裝php7.4
1、將Remi存儲(chǔ)庫添加到Fedora系統(tǒng)中:
sudo dnf install -y http://rpms.remirepo.net/fedora/remi-release-31.rpm
說明:根據(jù)你的系統(tǒng)是Fedora 29或是Fedora 28選擇相應(yīng)的Remi存儲(chǔ)庫黄绩。
2羡洁、要在Fedora下安裝PHP 7.4,請(qǐng)啟用存儲(chǔ)庫并安裝PHP 7.4軟件包:
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --set-enabled remi-php74
sudo dnf config-manager --set-enabled remi
3爽丹、可以使用remi-7.4指令來安裝PHP 7.4:
sudo dnf module install php:remi-7.4
安裝完畢查看一下:
[jerry@anonymous ~]$ php-fpm -v
PHP 7.4.2 (fpm-fcgi) (built: Jan 21 2020 11:35:20)
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
[jerry@anonymous ~]$ php -v
PHP 7.4.2 (cli) (built: Jan 21 2020 11:35:20) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
安裝nginx
sudo yum install nginx
或
sudo dnf install nginx
設(shè)置nginx隨系統(tǒng)啟動(dòng)
sudo systemctl enable nginx.service
現(xiàn)在啟動(dòng)nginx
sudo systemctl start nginx.service
默認(rèn)的PHP配置文件是etc/php.ini筑煮,對(duì)于Nginx Web服務(wù)器,使用PHP-FPM(FastCGI Process Manager)配置文件設(shè)置CGI設(shè)置/etc/php-fpm.d/www.conf
首先修改php-fpm的運(yùn)行用戶习劫,因?yàn)閱?dòng)用戶關(guān)系到系統(tǒng)安全咆瘟,默認(rèn)的用戶是apache,我們改為nginx诽里,如果你使用的用戶名是www或者是www-data袒餐,請(qǐng)修改為自己的用戶名,一定要與運(yùn)行文件同一個(gè)用戶和用戶組才能正確運(yùn)行谤狡,否則會(huì)出現(xiàn)Permission denied灸眼。
修改/etc/php-fpm.d/www.conf配置文件里的user和group為:
user = nginx
group = nginx
當(dāng)然默認(rèn)安裝好的nginx啟動(dòng)的用戶為nginx,配置文件在/etc/nginx/nginx.conf墓懂,首行就是啟動(dòng)用戶名了焰宣。
修改PHP設(shè)置后,你需要重新啟動(dòng)Web服務(wù)器:
sudo systemctl restart nginx
安裝mariadb
mysql的開源版捕仔,原mysql更改為這個(gè)匕积,是原mysql作者的開源版
sudo yum install mysql-server mysql-devel mysql
or
sudo dnf install mariadb-server
[jerry@anonymous ~]$ sudo vim /etc/my.cnf.d/mariadb-server.cnf
/etc/my.cnf.d/mariadb-server.cnf
添加:character-set-server=utf8
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mariadb/mariadb.log
pid-file=/run/mariadb/mariadb.pid
character-set-server=utf8
[jerry@anonymous ~]$ mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 16
Server version: 10.3.21-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
啟動(dòng)相應(yīng)服務(wù)的命令:
sudo systemctl start nginx.service
sudo systemctl start mariadb.service
sudo systemctl start php-fpm.service
systemctl status nginx # 查看nginx服務(wù)的運(yùn)行狀態(tài)
systemctl start nginx # 啟動(dòng)nginx服務(wù)
systemctl stop nginx # 關(guān)閉nginx服務(wù)
systemctl enable nginx # 開啟自啟nginx服務(wù)
systemctl disable nginx # 取消nginx開啟自啟
遇到的坑:
1. web目錄沒有權(quán)限盈罐,導(dǎo)致網(wǎng)站一直返回403狀態(tài),原因selinux的原因
查看當(dāng)前selinux的狀態(tài)闪唆。
/usr/sbin/sestatus
將SELINUX=enforcing 修改為 SELINUX=disabled 狀態(tài)盅粪。
vi /etc/selinux/config
#SELINUX=enforcing
SELINUX=disabled
重啟生效。reboot悄蕾。
2. php-fpm 的啟動(dòng)用戶票顾,修改為與web目錄的用戶一致的用戶運(yùn)行
修改/etc/php-fpm.d/www.conf文件里的user和group
user = nginx
group = nginx
3. php-fpm已啟動(dòng)卻沒有監(jiān)聽9000端口導(dǎo)致php的文件返回404狀態(tài),非php文件可以正常訪問
原因: nginx與php-fpm通信的兩種方式: tcp socket 和 unix socket帆调。
- unix socket 是一種終端奠骄,可以使同一臺(tái)操作系統(tǒng)上的兩個(gè)或多個(gè)進(jìn)程進(jìn)行數(shù)據(jù)通信。這種方式需要再nginx配置文件中填寫php-fpm的pid文件位置番刊,效率要比tcp socket高含鳞。
- tcp socket的優(yōu)點(diǎn)是可以跨服務(wù)器,當(dāng)nginx和php-fpm不在同一臺(tái)機(jī)器上時(shí)撵枢,只能使用這種方式民晒。
找到/etc/php-fpm.d/www.conf文件
listen = /run/php-fpm/www.sock
然后修改/etc/nginx/nginx.conf文件里面 http 下面的 server 設(shè)置,添加下面代碼:
location ~ \.php$ {
#fastcgi_pass 127.0.0.1:9000;
# here is listen from /etc/php-fpm.d/www.conf setting
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
好了锄禽,經(jīng)過上面的設(shè)置基本已經(jīng)完成了潜必。
安全設(shè)置網(wǎng)站文件:
一般是用 www 用戶來跑 lnmp 架構(gòu)
為了系統(tǒng)出現(xiàn)漏洞的時(shí)候,讓黑客也不能修改系統(tǒng)程序沃但,所以:
網(wǎng)站上的 php 文件屬主是非 www 用戶磁滚,給予644權(quán)限。
網(wǎng)站上的所有目錄是755權(quán)限
網(wǎng)站如果有應(yīng)用需要寫文件的目錄宵晚,比如上傳目錄垂攘,那么此目錄和目錄下的所有文件屬主是 www 用戶。