温馨提示×

ubuntu lamp远程访问怎样设置

小樊
41
2025-10-01 11:54:03
栏目: 智能运维

Ubuntu LAMP远程访问设置指南
LAMP(Linux + Apache + MySQL + PHP)是常见的Web开发环境,实现远程访问需分别配置Web服务、数据库及网络安全。以下是详细步骤:

1. 安装LAMP环境

首先通过包管理器安装Apache、MySQL、PHP及必要扩展:

sudo apt update && sudo apt upgrade -y  # 更新系统
sudo apt install apache2 mysql-server php libapache2-mod-php php-mysql -y  # 安装LAMP组件

安装完成后,Apache会自动启动,可通过sudo systemctl status apache2验证状态。

2. 配置Apache允许远程访问

默认情况下,Apache监听所有网络接口(0.0.0.0),但需确保配置文件未限制IP访问:

  • 编辑默认站点配置文件:
    sudo nano /etc/apache2/sites-available/000-default.conf
    
  • 确认<VirtualHost *:80>部分未添加Require local指令(若有则删除),并添加Require all granted允许所有IP访问:
    <Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted  # 允许所有IP访问
    </Directory>
    
  • 保存后重启Apache:
    sudo systemctl restart apache2
    
  • 测试远程访问:在浏览器输入服务器公网IP,若看到Apache默认页面则表示成功。

3. 配置MySQL允许远程访问

MySQL默认仅允许localhost连接,需修改配置并授权用户:

  • 编辑MySQL配置文件:
    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
    
  • 找到bind-address = 127.0.0.1,将其注释掉(#bind-address = 127.0.0.1)或改为0.0.0.0(允许所有IP连接)。
  • 重启MySQL服务:
    sudo systemctl restart mysql
    
  • 登录MySQL并授予权限(不建议使用root用户远程访问,建议创建专用用户):
    sudo mysql -u root -p
    
    • 创建用户并授权(将your_useryour_password替换为实际值,%表示允许所有IP):
      CREATE USER 'your_user'@'%' IDENTIFIED BY 'your_password';
      GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'%' WITH GRANT OPTION;
      FLUSH PRIVILEGES;
      
    • 若需限制特定IP(如192.168.1.100),将%改为对应IP:
      GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'192.168.1.100' IDENTIFIED BY 'your_password';
      FLUSH PRIVILEGES;
      
    • 退出MySQL:exit

4. 配置防火墙允许流量

Ubuntu默认使用ufw(Uncomplicated Firewall)管理防火墙,需开放HTTP(80)、HTTPS(443)及SSH(22)端口:

  • 允许Apache Full(包含HTTP/HTTPS):
    sudo ufw allow 'Apache Full'
    
  • 允许SSH(用于远程管理服务器):
    sudo ufw allow ssh
    
  • 启用防火墙:
    sudo ufw enable
    
  • 检查规则:
    sudo ufw status  # 应显示“Apache Full”和“SSH”为ALLOW
    
    若需允许MySQL远程连接(端口3306),可添加sudo ufw allow mysql,但建议通过SSH隧道访问以提高安全性。

5. 增强安全性:使用SSH隧道

为避免直接暴露MySQL到公网,建议通过SSH隧道加密数据库连接:

  • 在本地机器执行以下命令(将your_useryour_server_ip替换为实际值):
    ssh -L 8080:localhost:80 -L 3307:localhost:3306 your_user@your_server_ip -N
    
    此命令将:
    • 将本地的8080端口映射到服务器的80端口(Web访问);
    • 将本地的3307端口映射到服务器的3306端口(MySQL访问)。
  • 远程访问时:
    • Web访问:http://localhost:8080
    • MySQL访问:使用localhost:3307作为主机地址,your_useryour_password作为凭据。

注意事项

  • 避免使用root用户远程访问:创建专用数据库用户并限制其权限;
  • 定期更新系统sudo apt update && sudo apt upgrade -y保持软件最新;
  • 备份配置文件:修改配置前备份原文件(如sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf ~/mysqld.cnf.bak);
  • 禁用不必要的服务:如无需FTP,关闭vsftpd等服务以减少攻击面。

0