Ubuntu安装常见问题如何解决?

在Linux服务器上搭建PHP环境是部署动态网站的基础步骤,以下以Ubuntu 22.04CentOS 7为例,提供两种主流方案的详细流程(LAMP:Linux + Apache + MySQL + PHP),所有操作需通过SSH连接服务器执行。


准备工作

  1. 更新系统

    # Ubuntu
    sudo apt update && sudo apt upgrade -y
    # CentOS
    sudo yum update -y
  2. 安装必要工具

    # Ubuntu
    sudo apt install -y curl wget
    # CentOS
    sudo yum install -y curl wget

方案1:LAMP环境(Apache)

步骤1:安装Apache

sudo systemctl enable --now apache2
# CentOS
sudo yum install -y httpd
sudo systemctl enable --now httpd
  • 验证:浏览器访问 http://服务器IP,出现Apache欢迎页即成功。

步骤2:安装MySQL/MariaDB

sudo mysql_secure_installation  # 按提示设置root密码
# CentOS
sudo yum install -y mariadb-server
sudo systemctl enable --now mariadb
sudo mysql_secure_installation

步骤3:安装PHP及扩展

# Ubuntu(PHP 8.1)
sudo apt install -y php libapache2-mod-php php-mysql php-curl php-gd php-mbstring php-xml
# CentOS(需先启用EPEL和Remi仓库)
sudo yum install -y epel-release
sudo yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum-config-manager --enable remi-php81
sudo yum install -y php php-mysqlnd php-gd php-xml php-mbstring

步骤4:配置Apache支持PHP

  1. 修改配置文件:

    # Ubuntu
    sudo nano /etc/apache2/mods-enabled/dir.conf
    # 将 `index.php` 移到文件列表首位:  
    # DirectoryIndex index.php index.html ...
    # CentOS
    sudo nano /etc/httpd/conf/httpd.conf
    # 在 `<Directory /var/www/html>` 段内添加:  
    # DirectoryIndex index.php index.html
  2. 重启Apache:

    # Ubuntu
    sudo systemctl restart apache2
    # CentOS
    sudo systemctl restart httpd

方案2:LEMP环境(Nginx)

步骤1:安装Nginx

sudo systemctl enable --now nginx
# CentOS
sudo yum install -y nginx
sudo systemctl enable --now nginx

步骤2:安装PHP-FPM

# CentOS(使用Remi仓库)
sudo yum install -y php-fpm php-mysqlnd

步骤3:配置Nginx支持PHP

  1. 编辑Nginx默认站点配置:

    sudo nano /etc/nginx/sites-available/default  # Ubuntu
    sudo nano /etc/nginx/conf.d/default.conf      # CentOS
  2. server 块内添加:

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;  # Ubuntu
        # include fastcgi_params;           # CentOS
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;  # 版本路径需匹配实际
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
  3. 重启Nginx:

    sudo systemctl restart nginx
    sudo systemctl restart php-fpm  # 重启PHP-FPM服务

测试PHP环境

  1. 创建测试文件:
    echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
  2. 浏览器访问 http://服务器IP/info.php,显示PHP配置信息即成功。
    安全提示:测试后务必删除此文件:

    sudo rm /var/www/html/info.php

安全加固建议

  1. 防火墙设置

    # Ubuntu(允许HTTP/HTTPS)
    sudo ufw allow 'Apache Full'
    # CentOS(放行80/443端口)
    sudo firewall-cmd --permanent --add-service=http --add-service=https
    sudo firewall-cmd --reload
  2. PHP安全配置

    • 编辑 /etc/php/8.1/apache2/php.ini(路径因版本而异):
      expose_php = Off          # 隐藏PHP版本
      disable_functions = exec,system,passthru # 禁用危险函数
      cgi.fix_pathinfo=0        # 防止路径遍历攻击
  3. 定期更新

    # Ubuntu
    sudo apt update && sudo apt upgrade
    # CentOS
    sudo yum update

常见问题解决

  1. PHP文件被直接下载

    • 原因:Web服务器未关联PHP处理器。
    • 解决:检查Apache的 dir.conf 或Nginx的PHP配置块是否正确。
  2. 数据库连接失败

    • 检查MySQL用户权限:
      CREATE USER '用户名'@'localhost' IDENTIFIED BY '密码';
      GRANT ALL PRIVILEGES ON 数据库名.* TO '用户名'@'localhost';
      FLUSH PRIVILEGES;
  3. 502 Bad Gateway(Nginx)

    • 确认PHP-FPM服务运行:systemctl status php-fpm
    • 检查Nginx配置中 fastcgi_pass 的sock路径是否匹配。

引用说明

本文参考官方文档:

  • Apache HTTP Server
  • Nginx官方文档
  • PHP手册
  • MariaDB知识库

重要提示:生产环境务必遵循最小权限原则,定期备份数据,并使用HTTPS加密传输。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/4803.html

(0)
酷番叔酷番叔
上一篇 2025年6月17日 19:00
下一篇 2025年6月17日 19:22

相关推荐

  • Linux系统时间如何更改?操作步骤与方法有哪些?

    在Linux系统中,时间管理涉及“系统时间”(由内核维护,软件运行使用)和“硬件时间”(由主板BIOS/UEFI保存,关机后仍保留)两个概念,两者可能不同步,需根据需求调整,以下是更改Linux系统时间的详细方法,涵盖命令行和图形界面操作,并包含时区设置及常见注意事项,使用timedatectl命令(推荐,适用……

    2025年8月30日
    5500
  • ip命令为何更受推荐?

    在Linux系统中,网桥(Bridge)是一种虚拟网络设备,用于连接多个网络接口,实现二层数据包转发(类似物理交换机),获取网桥地址(通常指MAC地址或关联的IP地址)是网络配置、故障排查或容器/虚拟化管理的常见需求,以下是几种专业可靠的方法:ip 是现代Linux网络配置的标准工具,支持网桥的详细查询:ip……

    2025年7月27日
    6700
  • Linux系统挂载代理服务器的详细步骤和方法是什么?

    在Linux系统中配置代理服务器是日常开发、运维或科学研究中常见的需求,尤其是在需要访问外部网络资源或绕过网络限制时,代理配置方式多样,可根据使用场景(全局代理、特定工具代理、容器代理等)选择合适的方法,以下从环境变量配置、系统级代理、工具型代理及容器代理四个维度详细说明操作步骤,环境变量代理(适用于命令行工具……

    2025年10月4日
    2800
  • 文件权限设置错误有多危险?

    在Linux系统中,文件权限是安全管理的核心机制,通过命令行(模式)更改权限可精确控制用户对文件/目录的访问,以下是详细操作指南:权限基础概念Linux为每个文件分配三类用户的权限:所有者(Owner):文件创建者所属组(Group):共享权限的用户组其他用户(Others):系统所有其他用户权限类型:读(r……

    2025年7月15日
    6100
  • Linux如何识别网卡设备的顺序?

    在Linux系统中,网卡的识别顺序直接影响网络配置的稳定性和可维护性,早期的Linux发行版多采用传统的eth0、eth1等命名方式,其顺序取决于内核加载网卡的驱动顺序,存在不确定性——例如更换硬件或重启后,网卡顺序可能发生变化,导致网络配置失效,为了解决这一问题,现代Linux系统引入了“可预测网络接口名称……

    2025年10月8日
    3700

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信