在云服务器上部署LNMP环境(Linux + Nginx + MySQL + PHP),可以按照以下步骤进行操作。这里以Ubuntu 20.04为例。
1. 更新系统
首先,更新系统并安装必要的工具:
sudo apt-get update sudo apt-get upgrade -y sudo apt-get install -y curl wget vim
2. 安装Nginx
安装Nginx作为Web服务器:
sudo apt-get install -y nginx
启动Nginx并设置开机自启:
sudo systemctl start nginx sudo systemctl enable nginx
验证Nginx是否安装成功:
curl http://localhost
如果看到Nginx的欢迎页面,说明安装成功。
3. 安装MySQL
安装MySQL作为数据库服务器:
sudo apt-get install -y mysql-server
启动MySQL并设置开机自启:
sudo systemctl start mysql sudo systemctl enable mysql
运行安全脚本,设置MySQL root密码和其他安全选项:
sudo mysql_secure_installation
登录MySQL验证安装:
sudo mysql -u root -p
4. 安装PHP
安装PHP及其常用扩展:
sudo apt-get install -y php-fpm php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip
验证PHP是否安装成功:
php -v
5. 配置Nginx支持PHP
编辑Nginx的默认配置文件:
sudo vim /etc/nginx/sites-available/default
找到以下部分并修改为:
server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html; index index.php index.html index.htm; server_name _; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php-fpm.sock; } location ~ /\.ht { deny all; } }
保存并退出,然后测试Nginx配置是否正确:
sudo nginx -t
重启Nginx以应用更改:
sudo systemctl restart nginx
6. 测试PHP
在Web根目录下创建一个PHP测试文件:
sudo vim /var/www/html/index.php
添加以下内容:
<?php
phpinfo();
?>
保存并退出,然后在浏览器中访问:
http://<你的服务器IP>/index.php
如果看到PHP信息页面,说明PHP配置成功。
7. 配置MySQL远程访问(可选)
如果需要远程访问MySQL,可以修改MySQL配置文件:
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
找到bind-address
并将其改为:
bind-address = 0.0.0.0
保存并退出,然后重启MySQL:
sudo systemctl restart mysql
登录MySQL,为远程用户授权:
sudo mysql -u root -p
执行以下SQL语句(将username
和password
替换为实际的用户名和密码):
CREATE USER 'username'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
8. 防火墙配置(可选)
如果启用了防火墙(如ufw
),需要允许HTTP、HTTPS和MySQL端口:
sudo ufw allow 'Nginx Full' sudo ufw allow 3306/tcp sudo ufw reload
9. 完成
至此,LNMP环境已成功部署。您可以将Web应用部署到/var/www/html
目录,并通过浏览器访问。
10. 常见问题排查
- Nginx无法启动:检查配置文件语法是否正确:
sudo nginx -t
。 - PHP页面无法解析:确保Nginx配置中
fastcgi_pass
指向正确的PHP-FPM socket路径。 - MySQL无法连接:检查MySQL是否监听正确端口,并确保防火墙允许访问。
通过以上步骤,您可以在云服务器上成功部署LNMP环境。