3 月 212024
 

Source: Debian 12 / Ubuntu 22.04 使用源安装 LAMP 教程

本文將介紹使用官方來源和第三方來源在Debian 12 和Ubuntu 22.04 安裝最新版Apache 2 + PHP + MySQL 的教學課程,並且可以自行選擇PHP 版本。

PS:本文同時適用於Debian 11 Bullseye,Debian 10 Buster,Ubuntu 20.04 Focal 以及Ubuntu 22.04 Jammy

以下操作需要在root 使用者下完成,請使用sudo -isu root切換到root 使用者進行操作。

1、更新系統並安裝部分必要軟體

apt update
apt upgrade -y
apt dist-upgrade -y
apt install curl vim wget gnupg dpkg apt-transport-https lsb-release ca-certificates

如果您透過iso 方式安裝Debian 11 並且設定了root 密碼,則預設不含sudo套件,使用apt install sudo安裝即可

2、增加Ondřej Surý 大神打包的PHP 來源並安裝PHP 8.x

LEMP安裝方法一樣,我們還是使用Ondřej Surý大佬打包的PHP 來源。

至於為啥先裝PHP 再裝Apache 2,因為裝了PHP 以後Apache 2 會辨識你PHP 版本然後產生對應的設定檔?

2.1 Debian 和Ubuntu 安裝LAMP 區別

唯一的差別就是PHP 和Apache 2 的安裝添加源方法不一樣,其他步驟都一毛一樣。

2.2 加入大神做好的來源

Debian:

wget -O /usr/share/keyrings/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb [signed-by=/usr/share/keyrings/php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list

Ubuntu:

add-apt-repository ppa:ondrej/php

2.3 更新系統來源

apt update
apt upgrade -y

2.4 安裝自己需要的PHP 版本

這個來源目前預設的PHP 是8.3.x,如果您需要其他版本,那麼請修改對應的PHP 版本號碼(注意設定檔哦)。

這裡舉例WordPress 需要的部分PHP 包

安裝PHP 8.3.x:

apt install php8.3-{fpm,cli,mysql,curl,gd,mbstring,xml,zip,imap,opcache,soap,gmp,bcmath} -y

安裝PHP 8.2.x:

apt install php8.2-fpm php8.2-cli php8.2-mysql php8.2-curl php8.2-gd php8.2-mbstring php8.2-xml php8.2-zip php8.2-imap php8.2-opcache php8.2-soap php8.2-gmp php8.2-bcmath -y

安裝PHP 8.1.x

apt install php8.1-fpm php8.1-cli php8.1-mysql php8.1-curl php8.1-gd php8.1-mbstring php8.1-xml php8.1-zip php8.1-imap php8.1-opcache php8.1-soap php8.1-gmp php8.1-bcmath -y

以下版本PHP 已經EOL,PHP 官方不再提供支持,請盡快更新您的程式相容最新的PHP,如果您的程式還未相容,建議鞭策開發者

安裝PHP 8.0.x

apt install php8.0-fpm php8.0-cli php8.0-mysql php8.0-curl php8.0-gd php8.0-mbstring php8.0-xml php8.0-zip php8.0-imap php8.0-opcache php8.0-soap php8.0-gmp php8.0-bcmath -y

安裝PHP 7.4.x

apt install php7.4-fpm php7.4-cli php7.4-mysql php7.4-curl php7.4-gd php7.4-mbstring php7.4-xml php7.4-xmlrpc php7.4-zip php7.4-json php7.4-imap php7.4-opcache php7.4-soap php7.4-gmp php7.4-bcmath -y

安裝PHP 7.3.x

apt install php7.3-fpm php7.3-mysql php7.3-curl php7.3-gd php7.3-mbstring php7.3-xml php7.3-xmlrpc php7.3-zip php7.3-opcache

安裝PHP 7.2.x (PHP 7.2 開始已經不支援mcrypt 組件)

apt install php7.2-fpm php7.2-mysql php7.2-curl php7.2-gd php7.2-mbstring php7.2-xml php7.2-xmlrpc php7.2-zip php7.2-opcache

安裝PHP 7.1.x

apt install php7.1-fpm php7.1-mysql php7.1-curl php7.1-gd php7.1-mbstring php7.1-mcrypt php7.1-xml php7.1-xmlrpc php7.1-zip php7.1-opcache

安裝PHP 7.0.x

apt php7.0-fpm php7.0-mysql php7.0-curl php7.0-gd php7.0-mbstring php7.0-mcrypt php7.0-xml php7.0-xmlrpc php7.0-zip php7.0-opcache

安裝PHP 5.6.x

apt install php5.6-fpm php5.6-mysql php5.6-curl php5.6-gd php5.6-mbstring php5.6-mcrypt php5.6-xml php5.6-xmlrpc php5.6-zip php5.6-opcache

如果希望安裝其他元件,可以透過搜尋看看有沒有對應的套件

apt-cache search php8.3* | grep php

修改php.ini防止跨目錄攻擊,如果安裝的PHP 8.2.x 請相應修改/etc/php/8.3/fpm/php.iniPHP 7.4.x 請相應修改/etc/php/7.4/fpm/php.ini

sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/' /etc/php/8.3/fpm/php.ini 

修改php.ini增加上傳大小限制

sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 10M/' /etc/php/8.3/fpm/php.ini
sed -i 's/post_max_size = 8M/post_max_size = 10M/' /etc/php/8.3/fpm/php.ini

您也可以同時安裝多個PHP 版本,然後使用下列指令選擇系統預設的PHP 版本:

update-alternatives --config php

3、增加Ondřej Surý 大神打包的Apache 2 來源並安裝

這裡我們推薦Ondřej Surý打包的Apache 2 來源。

3.1 Debian 和Ubuntu 安裝LAMP 區別

唯一的差別就是Apache 2 和PHP 的安裝添加源方法不一樣,其他步驟都一毛一樣。

3.2 先增加Apache 來源

Debian:

wget -O /usr/share/keyrings/apache2.gpg https://packages.sury.org/apache2/apt.gpg
echo "deb [signed-by=/usr/share/keyrings/apache2.gpg] https://packages.sury.org/apache2/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/apache2.list

Ubuntu:

add-apt-repository ppa:ondrej/apache2

3.3 接著更新並接安裝Apache 2.4

apt update
apt upgrade -y
apt install apache2 -y

安裝完畢後,我們可以使用apache2 -v指令看到Apache 2 已經是最新的2.4 版本了

root@debian ~ # apache2 -v
Server version: Apache/2.4.54 (Debian)
Server built:   2022-06-08T16:00:36

3.4 Apache 2 開啟PHP-FPM 支持

首先,需要開啟Apache 2 的PHP-FPM 支持,我們以PHP 8.3 為例,依照自己的需求,可以開啟如下模組

a2enconf php8.3-fpm
a2enmod proxy_fcgi
a2enmod headers
a2enmod http2
a2enmod remoteip
a2enmod ssl
a2enmod rewrite
a2enmod expires
a2enmod deflate
a2enmod mime
a2enmod setenvif

然後我們重新啟動PHP-FPM 服務

systemctl restart php8.3-fpm

對應PHP 7.4.x 指令如下

systemctl restart php7.4-fpm

Apache 2 參考設定檔如下,因為預設Debian 的Apache 2 預設設定已經使用了example.com這個域名,所以我們以example.org為例,新建立個/etc/apache2/sites-available/example.org.conf

cat >> /etc/apache2/sites-available/example.org.conf << EOF
<VirtualHost *:80>
	ServerName example.org
	DocumentRoot /var/www/example.org
	DirectoryIndex index.php index.html index.htm
	
	ErrorLog ${APACHE_LOG_DIR}/example.org.error.log
	CustomLog ${APACHE_LOG_DIR}/example.org.access.log combined

	<Directory /var/www/example.org>
		Options FollowSymLinks
		AllowOverride All
		Require all granted
	</Directory>
</VirtualHost>
EOF

然後使用a2ensite命令使其生效

a2ensite example.org.conf

如果不需要這個vhost 的時候可以使用a2dissite example.org.conf指令移除

偵測是否已經軟連結到/etc/apache2/sites-enabled目錄

root@debian ~ # ls /etc/apache2/sites-enabled
000-default.conf  example.org.conf

到這裡基本上沒有問題,我們可以執行apache2ctl configtest命令檢查設定檔是否出錯

root@debian ~ # apache2ctl configtest 
Syntax OK

顯示Syntax OK則說明所有設定檔均無問題,可以重新啟動Apache 2 使我們的設定生效

systemctl restart apache2

我們的目錄在/var/www/example.org,我們先建立這個目錄

mkdir -p /var/www/example.org

然後建立一個phpinfo.php並輸入phpinfo()函數

cat >> /var/www/example.org/phpinfo.php << EOF
<?php phpinfo(); ?>
EOF

好了,此時在瀏覽器輸入http://example.org/phpinfo.php,如果看到經典的phpinfo頁面則說明安裝成功,如果不成功,請仔細對比步驟查找哪裡出錯或在燒餅博客下方留言。

4.安裝MariaDB

這裡我們使用MariaDB 作為MySQL 的代替

4.1 首先,新增並導入Mariadb 的官方來源

按照官方的教學導入GPG

下載GPG Key:

curl -sSL https://mariadb.org/mariadb_release_signing_key.asc | gpg --dearmor > /usr/share/keyrings/mariadb.gpg

然後加入MariaDB 的來源

Debian:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/mariadb.gpg] https://mirror-cdn.xtom.com/mariadb/repo/10.11/debian $(lsb_release -sc) main" > /etc/apt/sources.list.d/mariadb.list

Ubuntu:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/mariadb.gpg] https://mirror-cdn.xtom.com/mariadb/repo/10.11/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/mariadb.list

您也可以在這裡找到更多的MariaDB 來源

4.2 接著更新一下系統

apt update

4.3 然後直接安裝最新穩定版MariaDB

apt install mariadb-server mariadb-client

安裝完畢後強烈建議使用mariadb-secure-installation指令做一次安全設置

4.4 建立資料庫並測試

在開啟資料庫之前,您可以使用pwgen這個小工具或隨機密碼產生器產生一個強大的隨機密碼,例如32 位,然後隨意挑選一個使用

apt install pwgen
pwgen 32

使用MySQL root 使用者登陸,因為預設使用Unix domain socket 模式,所以本機不需要MySQL root 密碼即可登入

mariadb -u root

建立資料庫example_database

CREATE DATABASE example_database DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

建立使用者名稱example_user並賦予權限

GRANT ALL ON example_database.* TO 'example_user'@'localhost' IDENTIFIED BY '这里改成您要设置的强大的没人能猜出来的随机的密码';

刷新MySQL 權限

FLUSH PRIVILEGES;

沒問題以後就可以退出了

EXIT;

新建一個/var/www/example.org/mysql-test.php檔案並測試

cat >> /var/www/example.org/mysql-test.php << EOF
<?php
\$dbname = 'example_database';    //MySQL 数据库名
\$dbuser = 'example_user';   //MySQL 用户名
\$dbpass = '您的强大的没人可以猜出来的密码';
\$dbhost = 'localhost';  //安装在本地就用 localhost
\$link = mysqli_connect(\$dbhost, \$dbuser, \$dbpass) or die("Unable to Connect to '\$dbhost'");
mysqli_select_db(\$link, \$dbname) or die("Could not open the db '\$dbname'");
\$test_query = "SHOW TABLES FROM \$dbname";
\$result = mysqli_query(\$link, \$test_query);
\$tblCnt = 0;
while(\$tbl = mysqli_fetch_array(\$result)) {
  \$tblCnt++;
  #echo \$tbl[0]."&lt;br /&gt;\n";
}
if (!\$tblCnt) {
  echo "MySQL is working fine. There are no tables.";
} else {
  echo "MySQL is working fine. There are \$tblCnt tables.";
}
?>
EOF

建立完畢後存取http://example.org/mysql-test.php如果出現MySQL is working fine. There are no tables.則表示MySQL 運作正常。

5、安裝MySQL 8.0 (可選)

如果您必須使用某些MySQL 8.0 才有的功能,那麼可以依照MySQL官網的教學安裝MySQL 8.0

*注意:*除非您知道您在做什麼,否則不要同時安裝MySQL 和MariaDB

5.1 新增apt 來源

wget https://repo.mysql.com/mysql-apt-config_0.8.29-1_all.deb
dpkg -i mysql-apt-config_0.8.29-1_all.deb

國內的機器可以在新增完成後修改為清華TUNA 來源,您可以修改/etc/apt/sources.list.d/mysql-community.list文件,替換成以下內容

deb https://mirrors.tuna.tsinghua.edu.cn/mysql/apt/debian $(lsb_release -sc) mysql-5.6 mysql-5.7 mysql-8.0 mysql-tools

5.2 安裝MySQL 8.0

apt update
apt install mysql-server -y

預設MySQL 會安裝最新的8.0 版本,如果您需要更低的版本,例如5.6 或5.7,可以使用以下命令:

dpkg-reconfigure mysql-apt-config

您可能需要設定一個強大的root 密碼,接下來的步驟和MariaDB 基本上相同,把mariadb指令換成mysql指令即可,本文不再贅述。

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

CAPTCHA Image
Play CAPTCHA Audio
Reload Image