温馨提示×

centos lamp如何自定义配置

小樊
35
2025-11-29 23:49:43
栏目: 智能运维

CentOS LAMP 自定义配置实操指南

一 环境准备与组件安装

  • 更新系统并安装组件(以 CentOS 7 为例,使用 yumMariaDB):
    • 安装与启动 Apache:sudo yum install -y httpd && sudo systemctl start httpd && sudo systemctl enable httpd
    • 安装与启动数据库:sudo yum install -y mariadb-server mariadb && sudo systemctl start mariadb && sudo systemctl enable mariadb
    • 安装 PHP 与常用扩展:sudo yum install -y php php-mysqlnd php-gd
    • 运行安全初始化:sudo mysql_secure_installation
  • 防火墙放行:sudo firewall-cmd --permanent --add-service=http --add-service=https && sudo firewall-cmd --reload
  • 快速验证:在 /var/www/html/info.php 写入 ,访问 http://服务器IP/info.php 应看到 PHP 信息页。

二 Apache 自定义配置

  • 主配置要点(/etc/httpd/conf/httpd.conf 或 /etc/httpd/conf.d/*.conf):
    • 监听与主机名:Listen 80;ServerName your_domain_or_ip:80
    • 文档根与目录权限:DocumentRoot /var/www/your_app;<Directory “/var/www/your_app”> 中设置 Options Indexes FollowSymLinksAllowOverride AllRequire all granted
    • 默认首页:DirectoryIndex index.php index.html
  • 多站点与虚拟主机(推荐在 /etc/httpd/conf.d/vhosts.conf 中配置):
    • 示例:
      <VirtualHost *:80>
          ServerName blog.example.com
          DocumentRoot /var/www/blog
          <Directory /var/www/blog>
              Options Indexes FollowSymLinks
              AllowOverride All
              Require all granted
          </Directory>
          ErrorLog  /var/log/httpd/blog_error.log
          CustomLog /var/log/httpd/blog_access.log combined
      </VirtualHost>
      
  • 变更生效:sudo systemctl reload httpd;语法检查:sudo httpd -t。

三 PHP 与 PHP-FPM 自定义配置

  • 模块方式(适合一体化 Apache + PHP):
    • 确认已安装 PHP 模块并启用;在 httpd.conf 中确保有处理 PHP 的指令(如 AddType/LoadModule 等),并重启 Apache。
  • FPM 方式(推荐解耦,便于伸缩与性能调优):
    • 安装与启用:sudo yum install -y php-fpm && sudo systemctl enable --now php-fpm
    • Apache 以代理方式将 PHP 交给 FPM(在虚拟主机或 httpd.conf 的 内):
      ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/your_app/$1
      DirectoryIndex index.php
      
    • FPM 池配置(/etc/php-fpm.d/www.conf)常用项:
      • pm = dynamic
      • pm.max_children = 50;pm.start_servers = 5;pm.min_spare_servers = 5;pm.max_spare_servers = 35
      • request_terminate_timeout = 120
      • php_admin_value[error_log] = /var/log/php-fpm/www-error.log;php_admin_flag[log_errors] = on
    • 重启:sudo systemctl reload httpd && sudo systemctl reload php-fpm
  • 常用 php.ini 调优(按应用需求调整):
    • 性能:启用并配置 OPcache(zend_extension=opcache.so;opcache.enable=1;opcache.memory_consumption=64;opcache.max_accelerated_files=10000;opcache.revalidate_freq=60
    • 资源与上传:memory_limit=128M;upload_max_filesize=50M;post_max_size=50M
    • 安全:disable_functions = phpinfo,passthru,exec,system,popen,chroot,escapeshellcmd,escapeshellarg,shell_exec,proc_open,proc_get_status
    • 变更生效:sudo systemctl reload php-fpm。

四 MariaDB MySQL 自定义配置

  • 配置文件与目录:主配置文件 /etc/my.cnf(或 /etc/my.cnf.d/*.cnf);常见参数([mysqld] 段)如 port=3306datadir=…、字符集等按需设置。
  • 安全与权限:
    • 运行安全脚本:sudo mysql_secure_installation(设置 root 强密码、移除匿名用户、禁止远程 root 登录等)
    • 创建业务用户与库(示例):
      CREATE DATABASE app_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
      CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'StrongPass!';
      GRANT ALL PRIVILEGES ON app_db.* TO 'app_user'@'localhost';
      FLUSH PRIVILEGES;
      
  • 远程访问(如确需):在数据库中授权并放行防火墙端口 3306,例如:
    • 数据库侧:CREATE USER ‘app_user’@‘%’ IDENTIFIED BY ‘StrongPass!’; GRANT ALL ON app_db.* TO ‘app_user’@‘%’; FLUSH PRIVILEGES;
    • 防火墙:sudo firewall-cmd --permanent --add-port=3306/tcp && sudo firewall-cmd --reload
    • 注意:生产环境建议仅限内网或跳板机访问,并启用 TLS/SSL

五 安全加固与验证

  • 网络与访问控制:
    • 仅开放必要端口:80/443/22;数据库端口 3306 默认仅内网开放;云上需同步配置 安全组 规则
    • 禁用不必要的 Apache 模块与默认站点,使用 虚拟主机 隔离应用
  • 系统与 PHP 安全:
    • 保持系统与软件包更新;遵循最小权限原则
    • 生产环境建议开启 SELinux 并配置正确的策略(不要直接永久禁用),或确保应用目录上下文正确
    • PHP:display_errors Off;log_errors On;设置 error_log;禁用危险函数(见上)
  • HTTPS 与证书:
    • 使用 Let’s Encrypt 部署免费证书,启用 HTTP→HTTPS 跳转,保护数据传输
  • 验证清单:
    • 访问站点与 info.php 页面正常;检查虚拟主机路由、.htaccess 生效
    • 验证数据库可本地/远程(按需)连接;查看 /var/log/httpd//var/log/php-fpm//var/log/messages 无异常
    • 进行基线加固与备份策略演练(配置与数据定期备份)。

0