一、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配置语法(避免重启失败):
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';)。