You are on page 1of 3

Part A 安裝 Debian 11

a.1 Install Debian 11

Part B 安装 PHP 8.0


su root
apt install sudo #有機會沒有有 SUDO
apt update
apt upgrade -y
apt install curl vim wget gnupg apt-transport-https lsb-release ca-certificates
增加 php 源
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

apt update
apt upgrade -y
安装 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
如果希望安装其他组件,可以通过搜索看看有没有对应的包
apt-cache search php8.0* | grep php
修改 php.ini 防止跨目录攻击
sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/' /etc/php/8.0/fpm/php.ini
修改 php.ini 增加上传大小限制
sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 10M/' /etc/php/8.0/fpm/php.ini
sed -i 's/post_max_size = 8M/post_max_size = 10M/' /etc/php/8.0/fpm/php.ini

Part C 安装 Apache 2

增加 Apache 源
curl -sSL https://packages.sury.org/apache2/README.txt | sudo bash -x
更新及安裝
sudo apt update
sudo apt install apache2 -y
sudo apache2 -v
systemctl status apache2

增加查找工具
apt-get install mlocate
updatedb
locate a2enmod # sample
nano /etc/profile
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/sbin"
. /etc/profile
a2enconf php8.0-fpm
a2enmod proxy_fcgi
a2enmod headers
a2enmod http2
a2enmod remoteip
a2enmod ssl
a2enmod rewrite
a2enmod expires
a2enmod deflate
a2enmod mime
a2enmod setenvif

systemctl restart php8.0-fpm


配置/etc/apache2/sites-available/mcs.mo.conf
nano /etc/apache2/sites-available/mcs.mo.conf

<VirtualHost *:80>
ServerName mcs.mo
DocumentRoot /var/www/mcs.mo
DirectoryIndex index.php index.html index.htm

ErrorLog ${APACHE_LOG_DIR}/mcs.mo.error.log
CustomLog ${APACHE_LOG_DIR}/mcs.mo.access.log combined

<Directory /var/www/mcs.mo >


Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

使用 a2ensite 命令使其生效
a2ensite mcs.mo.conf #使用 a2dissite example.org.conf 命令移除
检测是否已经软链接到 /etc/apache2/sites-enabled 目录
ls /etc/apache2/sites-enabled
执行 apache2ctl configtest 命令检查配置文件是否出错
apache2ctl configtest
systemctl restart apache2
mkdir -p /var/www/mcs.mo
nano /var/www/mcs.mo/phpinfo.php
<?php phpinfo(); ?>

Part D 安装 MariaDB

下载 GPG Key:
wget -O /usr/share/keyrings/mariadb.asc https://mariadb.org/mariadb_release_signing_key.asc
添加 MariaDB 的源
echo "deb [signed-by=/usr/share/keyrings/mariadb.asc] https://mirror-cdn.xtom.com/mariadb/repo/10.6/debian $(lsb_release -sc)
main" > /etc/apt/sources.list.d/mariadb.list
安装最新稳定版 MariaDB
apt update
apt install mariadb-server

mysql -u root
CREATE DATABASE mcs DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL ON mcs.* TO mcs@'localhost' IDENTIFIED BY 'Pass123456';
FLUSH PRIVILEGES;
EXIT;
建立一个 /var/www/example.org/mysql-test.php 文件并测试
nano /var/www/example.org/mysql-test.php

<?php
$dbname = 'mcs'; //MySQL 数据库名
$dbuser = 'mcs'; //MySQL 用户名
$dbpass = 'Pass123456';
$dbhost = 'localhost'; //安装在本地就用 localhost
$link = mysqli_connect($dbhost, $dbuser, $dbpass) or die("Unable to Connect to >
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.";
}
?>
Part E 安装 Composer
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
sudo chmod +x /usr/local/bin/composer
composer --version
Part F 安装 Laravel
cd /var/www/html
composer create-project --prefer-dist laravel/laravel Laravel
chown -R www-data:www-data /var/www/html/laravel
chmod -R 775 /var/www/html/laravel

nano /etc/apache2/sites-available/laravel.conf

<VirtualHost *:80>
ServerName example.org
ServerAdmin admin@ example.org
DocumentRoot /var/www/html/laravel/public
<Directory /var/www/html/laravel>
Options Indexes MultiViews
AllowOverride None
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

檢查 system services
systemctl --type=service --state=running

You might also like