在樹莓派4B上搭建Web服務器環境:PHP7.3 + Nginx + Mariadb。數據庫Mariadb是MySQL的一個分支,API和命令行兼容MySQL。
安裝PHP7.3
目前官方源已經有PHP7.3的版本,不用添加其它下載源就能安裝。首先更新軟件列表:
|
安裝PHP7.3:
|
通過命令php -v
能夠看到PHP版本號7.3,說明安裝完成:
|
查看php.ini配置文件位置:
|
輸出顯示配置文件在/etc/php/7.3/cli/php.ini
。注意,實際上配置文件有兩個,另外一個在/etc/php/7.3/fpm/php.ini
。通過命令行調用php時,會使用第一個配置文件;通過fpm調用php(例如nginx)會使用第二個配置文件。
php-fpm常用管理命令:
開啟php-fpm: sudo systemctl start php7.3-fpm
關閉php-fpm: sudo systemctl stop php7.3-fpm
重啟php-fpm: sudo systemctl restart php7.3-fpm
編輯php-fpm配置文件: vi /etc/php/7.3/fpm/php-fpm.ini
安裝Nginx
安裝nginx:sudo apt-get install nginx
安裝完成后,會自動開啟nginx。在瀏覽器輸入樹莓派的IP地址,可以看到“Welcome to nginx!”。
或者使用命令行:
|
能夠輸出html說明nginx安裝成功。
默認的網站根目錄:/var/www/html
nginx配置文件目錄:/etc/nginx/
nginx主配置文件位置:/etc/nginx/nginx.conf
nginx常用管理命令:
啟動nginx: sudo systemctl start nginx
關閉nginx:sudo systemctl stop nginx
設置nginx開機啟動:sudo systemctl enable nginx
配置nginx解析php
編輯配置nginx文件:sudo vi /etc/nginx/sites-enabled/default #此文件為ln的鏈接文件,也可直接編輯原始文件。
找到index
指令,添加index.php
。修改后:
|
找到# pass PHP scripts to FastCGI server
后面的location,刪除注釋。修改后如下:
|
保存后重啟nginx:
|
在網站根目錄創建一個php文件:
|
寫入以下php代碼並保存:
|
在瀏覽器中輸入樹莓派的IP地址即可看到phpinfo。
啟動nginx服務時如果遇到這個錯誤 Job for nginx.service failed because the control process exited with error code. See “systemctl stat 可能原因如下:
1.nginx配置文件有錯誤
運行下面命令查看修改
nginx -t
之前配置解析php時始終不能成功,只因為default
文件最后一行缺少一個“}”
2.已經啟動nginx或者配置文件中的端口號被占用
檢查端口是否被占用
netstat -tnlp
如果端口已經被占用,自己權衡一下是換個端口還是把占用端口的進程殺掉
檢查nginx是否已經啟動
ps -aux | grep nginx
如果已經啟動使用下面命令干掉即可
pkill -9 nginx
安裝Mairadb數據庫
使用以下命令安裝mariadb:
|
執行數據庫初始化安裝:
|
根據提示設置數據庫root用戶密碼、是否允許外網訪問等。
嘗試登錄數據庫:
|
輸入上一步設置的密碼,發現無法登錄,錯誤提示如下:
ERROR 1698 (28000): Access denied for user ‘root’@’localhost’
原因: 數據庫默認使用系統用戶登錄,需要修改為使用密碼登錄。
解決方案: sudo mysql -u root
,登入數據庫后,依次執行以下SQL:
use mysql #切換到mysql數據庫
update user set plugin='mysql_native_password'; #修改plugin字段
flush privileges; #刷新權限
exit; #退出數據庫
再次使用mysql -u root -p
即可通過密碼登錄數據庫,無需root權限執行。
mariadb配置文件保存在多個位置:/etc/mysql/mariadb.cnf
/etc/mysql/mariadb.conf.d/
/etc/mysql/conf.d/
mariadb常用命令:
啟動mariadb: sudo systemctl start mariadb
關閉mariadb:systemctl stop mariadb
設置mariadb開機啟動:sudo systemctl enable mariadb