腾讯云CVM手动搭建LNMP环境全指南

发布时间:2026/8/1 7:28:56

腾讯云CVM手动搭建LNMP环境全指南 1. 腾讯云CVM手动搭建LNMP环境全指南在云服务器上搭建LNMPLinuxNginxMySQLPHP环境是Web开发者的基础技能。作为腾讯云渠道商的技术支持人员我经常需要为客户部署这套环境。相比使用现成的镜像手动搭建能让你更清楚每个组件的配置细节也便于后续的定制化调整。LNMP环境在腾讯云CVM上的部署有几个关键优势首先是性能可控你可以根据业务需求灵活调整每个组件的参数其次是安全性更高手动安装可以避免预装镜像中可能存在的冗余服务最后是兼容性好能够完美适配腾讯云的对象存储COS、CDN等周边服务。下面我就以CentOS 7.6为例详细演示整个搭建过程。2. 环境准备与基础配置2.1 腾讯云CVM实例选购建议在腾讯云控制台购买CVM时建议选择CentOS 7.6或Ubuntu 18.04这些主流Linux发行版。对于个人博客或小型网站1核2G配置就足够运行LNMP环境如果是企业级应用建议至少选择2核4G配置。存储方面系统盘选择50GB SSD即可数据盘可根据实际需求添加。购买完成后通过SSH连接到实例。首次登录建议先执行以下基础操作# 更新系统软件包 sudo yum update -y # 安装常用工具 sudo yum install -y wget vim net-tools # 关闭SELinux生产环境需谨慎 sudo setenforce 0 sudo sed -i s/SELINUXenforcing/SELINUXdisabled/ /etc/selinux/config # 设置时区 sudo timedatectl set-timezone Asia/Shanghai2.2 防火墙配置腾讯云CVM默认有安全组防护但系统防火墙也需要适当配置。Nginx需要开放80和443端口MySQL默认使用3306端口生产环境建议修改# 防火墙放行常用端口 sudo firewall-cmd --permanent --add-port80/tcp sudo firewall-cmd --permanent --add-port443/tcp sudo firewall-cmd --reload3. Nginx安装与配置3.1 编译安装Nginx最新版虽然yum源中有Nginx但版本往往较旧。我推荐手动编译安装最新稳定版# 安装依赖 sudo yum install -y gcc pcre-devel zlib-devel openssl-devel # 下载源码包 wget http://nginx.org/download/nginx-1.25.3.tar.gz tar zxvf nginx-1.25.3.tar.gz cd nginx-1.25.3 # 编译安装 ./configure --prefix/usr/local/nginx \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_realip_module \ --with-http_stub_status_module make sudo make install编译参数说明--with-http_ssl_module启用HTTPS支持--with-http_v2_module支持HTTP/2协议--with-http_realip_module获取客户端真实IP--with-http_stub_status_module启用状态监控3.2 Nginx服务管理创建systemd服务文件便于管理sudo vim /etc/systemd/system/nginx.service写入以下内容[Unit] Descriptionnginx service Afternetwork.target [Service] Typeforking ExecStart/usr/local/nginx/sbin/nginx ExecReload/usr/local/nginx/sbin/nginx -s reload ExecStop/usr/local/nginx/sbin/nginx -s quit PrivateTmptrue [Install] WantedBymulti-user.target然后启用服务sudo systemctl daemon-reload sudo systemctl start nginx sudo systemctl enable nginx3.3 基础配置优化编辑主配置文件sudo vim /usr/local/nginx/conf/nginx.conf几个关键优化点worker_processes设置为CPU核心数调整keepalive_timeout为65秒开启gzip压缩配置日志轮转4. MySQL安装与安全加固4.1 安装MySQL 8.0推荐使用MySQL官方Yum源安装最新版# 添加MySQL Yum源 sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm # 安装MySQL服务器 sudo yum install -y mysql-community-server # 启动服务 sudo systemctl start mysqld sudo systemctl enable mysqld4.2 初始安全配置MySQL首次安装后会生成临时密码需要立即修改# 获取临时密码 sudo grep temporary password /var/log/mysqld.log # 运行安全脚本 sudo mysql_secure_installation安全配置建议设置强密码策略移除匿名用户禁止root远程登录移除测试数据库4.3 性能调优编辑MySQL配置文件sudo vim /etc/my.cnf基础优化参数2GB内存服务器示例[mysqld] innodb_buffer_pool_size 1G innodb_log_file_size 256M max_connections 200 query_cache_size 64M5. PHP安装与Nginx整合5.1 安装PHP 8.2使用Remi源安装最新PHP版本# 安装Remi源 sudo yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm # 启用PHP 8.2 sudo yum-config-manager --enable remi-php82 # 安装PHP及常用扩展 sudo yum install -y php php-fpm php-mysqlnd php-opcache php-gd php-mbstring php-curl5.2 配置PHP-FPM编辑PHP-FPM配置文件sudo vim /etc/php-fpm.d/www.conf关键修改项user nginx group nginx listen /var/run/php-fpm/php-fpm.sock listen.owner nginx listen.group nginx pm dynamic pm.max_children 50 pm.start_servers 5 pm.min_spare_servers 5 pm.max_spare_servers 35启动PHP-FPM服务sudo systemctl start php-fpm sudo systemctl enable php-fpm5.3 Nginx与PHP整合在Nginx配置中添加PHP支持location ~ \.php$ { fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }6. 环境验证与常见问题排查6.1 基础功能测试创建测试PHP文件echo ?php phpinfo(); ? /usr/local/nginx/html/info.php访问http://服务器IP/info.php应该显示PHP信息页面。检查以下几点PHP版本是否正确MySQL扩展是否加载必要的PHP功能是否启用6.2 常见问题解决方案问题1502 Bad Gateway错误检查PHP-FPM是否运行systemctl status php-fpm确认Nginx配置中的fastcgi_pass路径正确检查/var/run/php-fpm目录权限问题2MySQL连接失败确认MySQL服务运行状态检查用户权限SELECT host,user FROM mysql.user;确认防火墙放行了3306端口问题3Nginx静态文件403错误检查文件权限chown -R nginx:nginx /usr/local/nginx/html确认SELinux状态getenforce6.3 性能优化建议Nginx启用OPcacheopcache.enable1 opcache.memory_consumption128 opcache.interned_strings_buffer8 opcache.max_accelerated_files4000 opcache.revalidate_freq60MySQL查询优化添加合适的索引定期优化表OPTIMIZE TABLE table_name启用慢查询日志Nginx静态资源缓存location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 30d; add_header Cache-Control public, no-transform; }7. 腾讯云特色功能集成7.1 对象存储COS集成安装腾讯云COSFS工具挂载存储桶# 安装依赖 sudo yum install -y automake gcc-c git libcurl-devel libxml2-devel openssl-devel # 编译安装 git clone https://github.com/tencentyun/cosfs.git cd cosfs ./autogen.sh ./configure make sudo make install挂载COS存储桶echo BucketName-APPID:SecretId:SecretKey /etc/passwd-cosfs chmod 640 /etc/passwd-cosfs cosfs BucketName-APPID MountPoint -ourlhttps://cos.Region.myqcloud.com7.2 CDN加速配置在Nginx中设置CDN回源set_real_ip_from 0.0.0.0/0; real_ip_header X-Forwarded-For;7.3 监控与告警利用腾讯云云监控配置LNMP监控安装云监控Agent配置Nginx、MySQL、PHP-FPM监控项设置性能阈值告警8. 安全加固措施8.1 Nginx安全配置隐藏版本信息server_tokens off;防止常见攻击# 禁止非法HTTP方法 if ($request_method !~ ^(GET|HEAD|POST)$ ) { return 444; } # 防止图片盗链 location ~* \.(jpg|jpeg|png|gif|ico)$ { valid_referers none blocked server_names; if ($invalid_referer) { return 403; } }8.2 MySQL安全建议定期备份数据库为每个应用创建独立用户启用查询日志审计8.3 PHP安全设置修改php.ini关键参数expose_php Off display_errors Off log_errors On allow_url_fopen Off disable_functions exec,system,passthru,shell_exec9. 维护与自动化9.1 日志管理配置日志轮转sudo vim /etc/logrotate.d/nginx内容示例/usr/local/nginx/logs/*.log { daily missingok rotate 30 compress delaycompress notifempty create 640 nginx nginx sharedscripts postrotate /bin/kill -USR1 cat /usr/local/nginx/logs/nginx.pid 2/dev/null 2/dev/null || true endscript }9.2 备份策略数据库自动备份# 每日全量备份 mysqldump -u root -p --all-databases | gzip /backup/mysql/all_$(date %Y%m%d).sql.gz # 保留最近7天 find /backup/mysql/ -type f -mtime 7 -delete网站文件备份tar czf /backup/web/www_$(date %Y%m%d).tar.gz /usr/local/nginx/html9.3 自动化部署使用Shell脚本自动化安装过程#!/bin/bash # LNMP自动安装脚本 # 检查系统版本 # 安装依赖 # 编译安装Nginx # 配置MySQL # 安装PHP # 整合配置在实际运维中我建议将这套LNMP环境制作成自定义镜像方便后续快速部署。腾讯云CVM支持将配置好的系统制作为镜像在控制台的镜像页面即可操作。对于需要频繁部署相同环境的场景可以考虑使用Terraform等IaC工具实现自动化。

相关新闻