Linux LAMP项目实战经验总结
LAMP(Linux + Apache + MySQL + PHP)作为经典的Web应用架构,以其开源、稳定、灵活的特点,至今仍被广泛应用于中小型网站、企业内部系统及创业项目。本文结合实战场景,从环境部署、性能优化、安全加固、常见问题四大维度梳理实战经验,助力开发者高效搭建和维护LAMP项目。
环境部署是LAMP项目的基础,需严格遵循组件依赖顺序(Apache→MySQL→PHP),并提前清理旧版本残留,避免冲突。
sudo yum update -y
(CentOS)或sudo apt-get update && sudo apt-get upgrade -y
(Ubuntu),确保系统包版本最新,修复已知漏洞。systemctl stop firewalld
/systemctl stop ufw
),永久禁用(修改配置文件SELINUX=disabled
);SELinux需设置为disabled
(编辑/etc/selinux/config
),避免拦截Apache、MySQL的正常通信。rpm -qa | grep httpd
(Apache)、rpm -qa | grep mysql
(MySQL)、rpm -qa | grep php
(PHP)检查旧版本,使用rpm -e
命令卸载,防止新旧版本冲突。yum install httpd -y
/apt-get install apache2 -y
),启动服务并设置开机自启(systemctl start httpd
/systemctl start apache2
;systemctl enable httpd
/systemctl enable apache2
)。rpm -Uvh https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
添加官方源,再安装mysql-community-server
;Ubuntu直接使用apt-get install mysql-server
。安装后执行mysql_secure_installation
设置root密码、移除匿名用户、禁止远程root登录。yum install php php-mysqlnd php-opcache php-xml php-gd php-curl -y
/apt-get install php libapache2-mod-php php-mysql php-gd php-curl -y
),重启Apache加载PHP模块(systemctl restart httpd
/systemctl restart apache2
)。/var/www/html
)创建demo.php
,内容为<?php phpinfo(); ?>
,通过浏览器访问http://服务器IP/demo.php
,确认PHP信息页面显示正常,证明LAMP环境搭建成功。性能优化是提升用户体验的关键,需针对Apache、MySQL、PHP三大组件分别调整。
mod_deflate
模块压缩HTML、CSS、JS等文本资源,减少传输体积。配置示例:LoadModule deflate_module modules/mod_deflate.so
;<IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript </IfModule>
。KeepAlive On
、MaxKeepAliveRequests 100
(单个连接最大请求数)、KeepAliveTimeout 5
(连接保持时间,单位秒)。mod_expires
设置静态资源过期时间,降低重复请求。配置示例:LoadModule expires_module modules/mod_expires.so
;<IfModule mod_expires.c> ExpiresActive On ExpiresByType image/jpg "access plus 1 year" ExpiresByType text/css "access plus 1 month" </IfModule>
。mpm_prefork_module
(适用于PHP模块化运行)参数,如StartServers 5
(启动时的进程数)、MinSpareServers 5
(最小空闲进程数)、MaxSpareServers 10
(最大空闲进程数)、MaxRequestWorkers 150
(最大并发进程数)、MaxConnectionsPerChild 0
(每个进程处理的最大请求数,0表示不限制)。innodb_buffer_pool_size
设置为物理内存的50%-70%(如8GB内存设置为4GB-5GB),缓存数据和索引,提升查询速度。query_cache_type=1
、query_cache_size=64M
,缓存SELECT查询结果,减少重复查询的开销(注意:MySQL 8.0及以上版本已移除查询缓存)。opcache
扩展缓存编译后的PHP脚本,减少每次请求的编译时间。配置示例:opcache.enable=1
、opcache.memory_consumption=128
(缓存大小,单位MB)、opcache.max_accelerated_files=4000
(缓存的文件数量)。php.ini
文件禁用未使用的扩展(如xdebug
、soap
),减少内存占用。安全是项目稳定运行的前提,需从网络层、应用层、数据层多维度防护。
firewall-cmd --permanent --add-service=http
、firewall-cmd --permanent --add-service=https
、firewall-cmd --reload
。SSLEngine on
、SSLCertificateFile /path/to/certificate.crt
、SSLCertificateKeyFile /path/to/private.key
。mod_rewrite
模块防止他人盗用网站图片、CSS等静态资源。配置示例:<Directory "/var/www/html/images"> RewriteEngine On RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC] RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L] </Directory>
(仅允许本站域名访问图片);或使用mod_headers
设置X-Frame-Options: SAMEORIGIN
,防止点击劫持。mysqli_real_escape_string
或预处理语句(PDO)防止SQL注入;使用htmlspecialchars
函数防止XSS攻击。GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'your_password'
);定期备份数据库(使用mysqldump
命令或第三方工具)。/var/www/html
)的所有者设为apache
(或www-data
),权限设为755
(chown -R apache:apache /var/www/html
;chmod -R 755 /var/www/html
);上传目录单独设置权限(如775
),避免全局可写。实战中常遇到各类问题,需结合日志与配置逐一排查。
mysql
或mysqli
扩展。systemctl status mysqld
检查MySQL状态,未启动则systemctl start mysqld
;确认数据库用户名、密码是否正确(可通过mysql -uroot -p
登录验证);安装扩展(yum install php-mysqlnd -y
/apt-get install php-mysql
),重启Apache。apache
/www-data
)对项目目录无写入权限。chown -R apache:apache /var/www/html
);调整权限(chmod -R 755 /var/www/html
),上传目录可设置为775
(chmod -R 775 /var/www/html/upload
)。php.ini
配置错误。/etc/httpd/conf/httpd.conf
)是否包含LoadModule php_module modules/libphp.so
(路径根据PHP版本调整);重启Apache(systemctl restart httpd
)。MaxRequestWorkers
设置过高)、未启用缓存、数据库查询慢。MaxRequestWorkers
参数(根据服务器内存计算,如8GB内存设置为150);启用mod_deflate
(压缩)、mod_expires
(缓存);优化数据库查询(添加索引、减少复杂查询)。通过以上实战经验,可快速搭建稳定、高效的LAMP项目环境,并应对常见的性能与安全问题。需注意的是,项目上线后需定期监控服务器状态(如CPU、内存、磁盘使用率),及时调整配置,确保系统长期稳定运行。