在服务器环境中,CentOS因其稳定性和安全性被广泛采用,而LNMP(Linux、Nginx、MySQL、PHP)作为主流的Web服务组合,为ThinkPHP等PHP框架提供了高效运行基础,本文将详细介绍在CentOS系统下搭建LNMP环境并部署ThinkPHP项目的完整流程,包括环境准备、软件安装、配置优化及常见问题处理。

系统环境准备
在开始搭建LNMP环境前,需确保CentOS系统已更新至最新状态,并安装必要的开发工具,执行以下命令更新系统并安装编译依赖:
sudo yum update -y sudo yum groupinstall "Development Tools" -y sudo yum install wget vim -y
关闭防火墙和SELinux,避免因权限问题导致服务异常:
sudo systemctl stop firewalld sudo systemctl disable firewalld sudo setenforce 0 sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
安装与配置Nginx
Nginx作为高性能的Web服务器和反向代理,是LNMP的核心组件,首先添加EPEL源并安装Nginx:
sudo yum install epel-release -y sudo yum install nginx -y
安装完成后,启动Nginx并设置开机自启:
sudo systemctl start nginx sudo systemctl enable nginx
默认情况下,Nginx的网站根目录位于/usr/share/nginx/html,为适配ThinkPHP的URL重写规则,需修改Nginx配置文件,编辑/etc/nginx/nginx.conf,在http块中添加以下内容:
server {
listen 80;
server_name your_domain.com;
root /var/www/thinkphp;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
} 保存配置后,创建网站目录并赋予Nginx用户权限:
sudo mkdir -p /var/www/thinkphp sudo chown -R nginx:nginx /var/www/thinkphp sudo systemctl reload nginx
安装与配置MySQL
MySQL作为关系型数据库,为ThinkPHP提供数据存储支持,使用Yum仓库安装MySQL 8.0:
sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm -y sudo yum install mysql-community-server -y
启动MySQL服务并设置开机自启:

sudo systemctl start mysqld sudo systemctl enable mysqld
首次启动后,需获取临时密码并完成安全配置:
sudo grep 'temporary password' /var/log/mysqld.log sudo mysql_secure_installation
按照提示设置root密码、移除匿名用户、禁止root远程登录等操作,创建ThinkPHP专用的数据库和用户:
mysql -u root -p CREATE DATABASE thinkphp_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'thinkphp_user'@'localhost' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON thinkphp_db.* TO 'thinkphp_user'@'localhost'; FLUSH PRIVILEGES; EXIT;
安装与配置PHP
PHP是ThinkPHP运行的基础环境,首先添加Remi源以获取最新版本的PHP:
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y sudo yum install yum-utils -y sudo yum-config-manager --enable remi-php74 sudo yum install php php-fpm php-mysqlnd php-mbstring php-xml php-json php-zip -y
安装完成后,启动PHP-FPM并设置开机自启:
sudo systemctl start php-fpm sudo systemctl enable php-fpm
检查PHP-FPM配置文件/etc/php-fpm.d/www.conf,确保用户和组为nginx,监听地址为0.0.1:9000:
user = nginx group = nginx listen = 127.0.0.1:9000
重启PHP-FPM使配置生效:
sudo systemctl restart php-fpm
部署ThinkPHP项目
下载ThinkPHP项目并上传至/var/www/thinkphp目录,假设项目已通过Composer安装依赖,需修改public/.htaccess文件(若使用Nginx,可删除此文件),并在项目根目录创建.env配置文件,设置数据库连接信息:
APP_DEBUG = false [DATABASE] TYPE = mysql HOSTNAME = localhost DATABASE = thinkphp_db USERNAME = thinkphp_user PASSWORD = your_password HOSTPORT = 3306 CHARSET = utf8mb4
设置目录权限,确保Web服务器可写入:

sudo chown -R nginx:nginx /var/www/thinkphp
sudo find /var/www/thinkphp -type d -exec chmod 755 {} ;
sudo find /var/www/thinkphp -type f -exec chmod 644 {} ;
sudo chmod -R 777 runtime/ 访问浏览器中的域名或IP地址,若显示ThinkPHP欢迎页面,则部署成功。
性能优化与安全加固
为提升LNMP环境性能,可启用Nginx的Gzip压缩和缓存功能,在nginx.conf中添加:
gzip on; gzip_types text/plain text/css application/json application/javascript text/xml;
定期更新软件包和备份数据库,确保系统安全:
sudo yum update -y sudo mysqldump -u root -p thinkphp_db > backup.sql
相关问答FAQs
Q1:ThinkPHP项目出现“No input file specified”错误,如何解决?
A:该错误通常因Nginx配置中的SCRIPT_FILENAME参数未正确指向文件路径所致,检查/etc/nginx/nginx.conf中location ~ .php$块是否包含fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;,并确保$document_root与root指令指定的路径一致。
Q2:如何优化ThinkPHP在LNMP环境下的运行速度?
A:可通过以下方式优化:
- 启用OPcache扩展,在
php.ini中添加opcache.enable=1并重启PHP-FPM; - 使用Redis或Memcached作为缓存驱动,减少数据库查询;
- 配置Nginx静态文件缓存,对图片、CSS等资源设置
expires指令; - 开启MySQL查询缓存,调整
innodb_buffer_pool_size参数提升数据库性能。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复