一、LNMP環境搭建(開發基礎)
LNMP(Linux+Nginx+MySQL+PHP)是動態網站開發的主流環境,搭建步驟如下:
選擇穩定的Linux發行版(如Ubuntu 22.04 LTS、CentOS Stream 9),確保服務器具備公網IP或本地可訪問。安裝前更新系統軟件包以修復漏洞:
sudo apt update && sudo apt upgrade -y # Ubuntu/Debian
# 或
sudo yum update -y # CentOS/RHEL
關閉防火墻(測試階段可選,生產環境需配置放行規則):
sudo ufw disable # Ubuntu(UFW)
# 或
sudo systemctl stop firewalld # CentOS(Firewalld)
禁用SELinux(若啟用,需修改/etc/selinux/config
中的SELINUX=disabled
并重啟)。
使用包管理器快速安裝Nginx,啟動服務并設置開機自啟:
sudo apt install nginx -y # Ubuntu/Debian
sudo systemctl start nginx
sudo systemctl enable nginx
驗證安裝:瀏覽器訪問服務器IP,若看到Nginx歡迎頁面則說明成功。
安裝MySQL服務器,運行安全腳本強化配置(設置root密碼、移除匿名用戶、禁止root遠程登錄):
sudo apt install mysql-server -y # Ubuntu/Debian
sudo systemctl start mysql
sudo mysql_secure_installation # 按提示操作
登錄MySQL驗證:
sudo mysql -u root -p # 輸入設置的root密碼
創建數據庫和用戶(用于網站數據存儲):
CREATE DATABASE your_database; -- 創建數據庫
CREATE USER 'your_user'@'localhost' IDENTIFIED BY 'your_password'; -- 創建用戶
GRANT ALL PRIVILEGES ON your_database.* TO 'your_user'@'localhost'; -- 授權
FLUSH PRIVILEGES; -- 刷新權限
EXIT; -- 退出
```。
### 4. 安裝PHP及擴展(腳本語言)
安裝PHP核心、MySQL擴展和PHP-FPM(FastCGI進程管理器),確保PHP能與Nginx通信:
```bash
sudo apt install php-fpm php-mysql php-gd php-mbstring -y # Ubuntu/Debian(常用擴展)
sudo systemctl start php7.4-fpm # 啟動PHP-FPM(版本根據實際調整)
sudo systemctl enable php7.4-fpm
配置PHP-FPM監聽方式(修改/etc/php/7.4/fpm/pool.d/www.conf
,取消listen
行的注釋,默認使用Unix socket):
listen = /var/run/php/php7.4-fpm.sock
重啟PHP-FPM使配置生效:
sudo systemctl restart php7.4-fpm
```。
### 5. 配置Nginx支持PHP
編輯Nginx默認站點配置文件(`/etc/nginx/sites-available/default`),添加PHP處理邏輯:
```nginx
server {
listen 80;
server_name your_domain_or_IP; # 替換為域名或IP
root /var/www/html; # 網站根目錄
index index.php index.html index.htm; # 默認索引文件
location / {
try_files $uri $uri/ =404; # 嘗試訪問文件,不存在則返回404
}
location ~ \.php$ { # 處理PHP文件
include snippets/fastcgi-php.conf; # 包含FastCGI配置
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # 傳遞給PHP-FPM
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # 腳本路徑
include fastcgi_params; # 包含通用FastCGI參數
}
location ~ /\.ht { # 禁止訪問.htaccess文件
deny all;
}
}
測試Nginx配置語法(避免重啟失?。?/p>
sudo nginx -t
重啟Nginx應用配置:
sudo systemctl restart nginx
```。
### 6. 驗證LNMP環境
在網站根目錄創建`info.php`測試文件,查看PHP信息:
```bash
sudo nano /var/www/html/info.php
輸入以下內容并保存:
<?php phpinfo(); ?>
瀏覽器訪問http://your_domain_or_IP/info.php
,若顯示PHP信息頁面(包含版本、模塊等),則LNMP環境搭建成功。
二、網站開發流程
環境搭建完成后,可開始網站開發,以下是具體步驟:
將本地開發的網站文件(如WordPress、自定義項目)上傳至Nginx根目錄(默認/var/www/html
),可使用FTP工具(如FileZilla)、SCP命令或Git:
scp -r /local/website/path/* user@your_server_ip:/var/www/html/ # SCP上傳
修改目錄權限,確保Nginx用戶(通常為www-data
)有讀寫權限:
sudo chown -R www-data:www-data /var/www/html # 遞歸修改所有者
sudo chmod -R 755 /var/www/html # 設置目錄權限
```。
### 2. 創建數據庫與配置
登錄MySQL,創建網站專用數據庫和用戶(避免使用root賬戶):
```bash
mysql -u root -p
執行SQL語句:
CREATE DATABASE your_website_db; -- 創建數據庫
CREATE USER 'your_website_user'@'localhost' IDENTIFIED BY 'StrongPassword123'; -- 創建用戶
GRANT ALL PRIVILEGES ON your_website_db.* TO 'your_website_user'@'localhost'; -- 授權
FLUSH PRIVILEGES; -- 刷新權限
EXIT;
修改網站配置文件(如WordPress的wp-config.php
),填入數據庫信息:
define('DB_NAME', 'your_website_db'); // 數據庫名
define('DB_USER', 'your_website_user'); // 數據庫用戶
define('DB_PASSWORD', 'StrongPassword123'); // 數據庫密碼
define('DB_HOST', 'localhost'); // 數據庫主機
```。
### 3. 開發與調試
- **動態功能實現**:使用PHP連接MySQL,編寫業務邏輯(如用戶注冊、商品展示)。示例代碼(連接數據庫并查詢產品表):
```php
<?php
$servername = "localhost";
$username = "your_website_user";
$password = "StrongPassword123";
$dbname = "your_website_db";
// 創建連接
$conn = new mysqli($servername, $username, $password, $dbname);
// 檢查連接
if ($conn->connect_error) {
die("連接失敗: " . $conn->connect_error);
}
// 查詢數據
$sql = "SELECT id, name, price FROM products";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "ID: " . $row["id"]. " - 名稱: " . $row["name"]. " - 價格: $" . $row["price"]. "<br>";
}
} else {
echo "暫無產品";
}
$conn->close();
?>
php.ini
:display_errors = On
error_reporting = E_ALL
或在PHP文件頂部添加:ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
```。
server_name
為域名。sudo apt install certbot python3-certbot-nginx -y # Ubuntu/Debian
sudo certbot --nginx -d your_domain.com -d www.your_domain.com # 自動配置SSL
三、常見問題排查
sudo netstat -tuln | grep 80
),或配置文件語法錯誤(sudo nginx -t
)。sudo systemctl status php7.4-fpm
),檢查Nginx配置中的fastcgi_pass
路徑是否與PHP-FPM的listen
路徑一致。sudo systemctl status mysql
),檢查用戶權限(mysql -u root -p
中執行SHOW GRANTS FOR 'your_user'@'localhost';
)。