虛擬機裡是ubuntu24.04
安裝 nginx
sudo apt install nginx
安裝 mariadb
sudo apt install mariadb-server mariadb-client
安全性設定,包括root密碼 sudo mysql_secure_installation
除了輸入root密碼其他我都是一路Y
建立mysql使用者和密碼
sudo mysql 就直接進入 mariadb 不需要輸入密碼
建立user1使用者
CREATE USER 'user1'@'localhost' IDENTIFIED BY 'password1';讓使用者擁有全部權限
GRANT ALL PRIVILEGES ON *.* TO 'user1'@'localhost';
更新權限
FLUSH PRIVILEGES;
如果只讓使用者有 db1的權限用
GRANT ALL PRIVILEGES ON 'db1'.* TO 'user1'@'localhost';
quit 離開mariadb
安裝php8.4
新增 PPA 儲存庫並安裝 PHP 8.4
sudo apt update
sudo apt install -y software-properties-common
sudo add-apt-repository -y ppa:ondrej/php
sudo apt update
先裝基礎
sudo apt install php8.4 php8.4-fpm
後裝模組
sudo apt install php8.4-common php8.4-mysql php8.4-xml php8.4-curl php8.4-gd php8.4-cli php8.4-mbstring php8.4-opcache php8.4-zip php8.4-tokenizer
注意 php8.4-mysql會同時安裝 mysqli 和 pdo
調整 php.ini
sudo vi /etc/php/8.4/fpm/php.ini
修改項目參考如下:
upload_max_filesize = 32M
post_max_size = 48M
memory_limit = 256M
調整 nginx default 檔
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html;
server_name _;
# 隱藏 nginx 版本
server_tokens off;
client_max_body_size 100m;
fastcgi_buffers 16 32k;
fastcgi_buffer_size 64k;
# 全站基本安全標頭
add_header X-Content-Type-Options nosniff always;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
# pass PHP scripts to FastCGI server
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
#
# # With php-fpm (or other unix sockets):
fastcgi_pass unix:/run/php/php8.4-fpm.sock;
# # With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
安裝 phpmyadmin
sudo apt install phpmyadmin 就會安裝適合的版本到 /usr/share/phpmyadmin
sudo ln -s /usr/share/phpmyadmin /var/www/html/newlinkname
這樣 http://網站ip/newlinkname就可以到 phpmyadmin
保護措施可以參考 /2019/06/108-ubuntunginxphpmariadb.html
也可用修改檔案的方式
cd /usr/share/phpmyadmin
sudo vi index.php
在版本檢查後加上
$allowed = ["163.30.142.1", "163.30.200.2"];
if (!in_array($_SERVER["REMOTE_ADDR"], $allowed, true)) {
die("DENY");
}
把IP白名單放在 $allowed變數裡
sudo cp config.sample.inc.php config.inc.php
sudo vi config.inc.php
修改$cfg['blowfish_secret']為隨機字串
$cfg['blowfish_secret'] = 'HJK7r7h3p0fa6BLAg4eOLASDF0kmnlofKL72ESWER';
nginx 的其他安全設定
改成 https
沒有留言:
張貼留言