LAMP
1.安裝Mariadb
在Raspberry Pi中,MySQL無法安裝,會自動建議安裝Mariadb,它和MySQL同源,具體介紹大家可自行搜索。
$ sudo apt-get install mariadb-server mariadb-client
2. 安裝PHP和apache
phpmyadmin會自動把其他相關依賴(包括apapche2)都裝好,安裝過程要選擇和apache協同,還可設置phpmyadmin用戶密碼,注意要先裝前面的數據庫,這樣設置過程才不會出現數據庫連接錯誤。
$ sudo apt-get install phpmyadmin
$ sudo apt-get install apache2 #實際不需要執行命令,phpmyadmin會附帶把apache2裝好
$ sudo apt-get install libapache2-mod-php #這個沒安裝apache可能解析不了php代碼,導致頁面上直接顯示php代碼
$ sudo ln -s /usr/share/phpmyadmin/ /var/www/html/ #在apache默認web目錄下添加phpmyadmin的軟鏈接,否則后者無法打開
3. 測試php和apache的協同
-
測試apache
-
測試php頁面
在默認的網站根目錄/var/www/html/下新增php程序phpinfo.php,並添加內容:
<?php phpinfo(); ?>
4. 修改MariaDB數據庫配置
$ sudo mysql_secure_installation #設置root密碼,是否刪除匿名用戶,是否只允許localhost連接,是否刪除test庫,最后更新權限。
之后在終端用root登錄數據庫
# mysql -u root -p
發現會報錯“ERROR 1698 (28000): Access denied for user 'root'@'localhost'”,樹莓派4B安裝PHP7.3 + Nginx + MySQL 教程給出了解決辦法
$ sudo mysql -u root
MariaDB [(none)]> use mysql;
MariaDB [mysql]> update user set plugin='mysql_native_password';
MariaDB [mysql]> flush privileges;
之后重新使用root密碼登錄,成功。
5.測試數據庫連接
- 編寫php連接數據庫的腳本testdblink.php(我習慣用PDO連接,測試賬號root)
<?php
$servername = "localhost";
$dbName = "mysql";
$username = "root";
$password = "此處輸入root密碼";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbName", $username, $password);
echo "連接成功";
}
catch(PDOException $e)
{
echo $e->getMessage();
}
?>
保存為testdblink.php放在apache的/var/www/html默認目錄下測試。
由於安裝了phpmyadmin,就可以直接通過web管理數據庫了。
登錄地址:http://服務器ip地址/phpmyadmin/index.php
6. 修改apache2監聽端口
apache2默認監聽80端口,如果不希望這個端口被使用,可以嘗試修改。
$ cd /etc/apache2/
$ sudo nano ports.conf
$ cd /etc/apache2/sites-enabled/
$ sudo nano 000-default.conf
$ sudo service apache2 restart
LNMP
1. 安裝Mariadb
同lamp
2. 安裝和配置nginx
$ sudo apt-get install nginx
先前apache已將監聽端口修改至8080,將80端口騰出
修改nginx配置文件
$ sudo nano /etc/nginx/sites-available/default
保持80端口監聽
手工追加index.php。注意到“root /var/www/html;”,說明nginx的默認根目錄是/var/www/html,Web頁面文件要放在這個目錄下
將
修改為如下:
重啟
$ sudo systemctl restart nginx
3. 安裝php-fpm
在安裝phpmyadmin時,有一步驟是選擇配合的web服務器,由於要用nginx,所以此時都不選放空。php很多組件在安裝phpmyadmin時組件都裝了,nginx需要另外裝php-fpm。
$ sudo apt-get install php-fpm
4. 測試
測試php,可以發現Server API和apache的php頁面不同
數據庫已經安裝,直接測試也ok。
有個bug:nginx監聽端口是80,apache2的監聽端口已經改成了8080,但是直接在瀏覽器那里輸入ip,仍舊是apache的頁面,而輸入“ip地址/phpinfo.php”時,卻能定位到fpm,而不是apache。用命令/etc/init.d/apache2 stop 停止apache2服務,80端口正常8080端口無法打開,說明nginx正常,但是默認頁面還是apapche2的。
解決:我同時保留了apache和nginx,經查看/var/www/html/目錄發現:目錄中有index.html和另一個index.nginx-debian.html,前者是安裝apache時默認添加的。直接在瀏覽器那里輸入ip實際默認訪問的是ip/index.html。因此要測試nginx的基本頁面,應該訪問ip/index.nginx-debian.html。