laravel项目部署centos需要注意什么
导读:1. 系统与软件版本要求 CentOS版本:需使用CentOS 7及以上(确保系统内核及软件包支持Laravel的现代依赖); PHP版本:Laravel 10及以上要求PHP 8.1+,Laravel 9及以下需PHP 7.3+(需安装...
1. 系统与软件版本要求
- CentOS版本:需使用CentOS 7及以上(确保系统内核及软件包支持Laravel的现代依赖);
- PHP版本:Laravel 10及以上要求PHP 8.1+,Laravel 9及以下需PHP 7.3+(需安装BCMath、Ctype、Fileinfo、JSON、Mbstring、OpenSSL、PDO、Tokenizer、XML等核心扩展,可通过
yum
或Remi仓库安装); - Web服务器:推荐**Nginx(性能更优)**或Apache(兼容性更好),需配置正确指向Laravel的
public
目录; - 数据库:支持MySQL(5.7+)/MariaDB(10.2+)/PostgreSQL(10+),需提前创建数据库及用户并授权;
- 其他工具:需安装Composer(PHP依赖管理)、Git(版本控制,可选)、Node.js+NPM(若项目使用前端构建工具如Webpack,可选)。
2. 文件与目录权限设置
- 所有者调整:将Laravel项目目录所有者设为Web服务器用户(Nginx默认为
nginx
,Apache默认为apache
),命令示例:sudo chown -R nginx:nginx /path/to/your/laravel-project # 替换为实际项目路径
- 权限配置:
- 普通文件:设置为
644
(所有者可读写,组及其他用户只读); - 目录:设置为
755
(所有者可读写执行,组及其他用户可读执行); - 特殊目录(
storage
、bootstrap/cache
):需赋予Web服务器写权限,设置为775
(避免权限过高导致安全风险),命令示例:sudo find /path/to/your/laravel-project -type d -exec chmod 755 { } \; # 所有目录设为755 sudo find /path/to/your/laravel-project -type f -exec chmod 644 { } \; # 所有文件设为644 sudo chmod -R 775 /path/to/your/laravel-project/storage # 存储目录设为775 sudo chmod -R 775 /path/to/your/laravel-project/bootstrap/cache # 缓存目录设为775
- 普通文件:设置为
- SELinux处理:若系统启用SELinux(默认开启),需调整文件上下文或临时禁用:
- 临时禁用:
sudo setenforce 0
(重启后恢复); - 永久禁用:编辑
/etc/selinux/config
,将SELINUX=enforcing
改为SELINUX=disabled
; - 或保留SELinux并设置正确上下文:
sudo chcon -R -t httpd_sys_content_t /path/to/your/laravel-project
。
- 临时禁用:
3. Web服务器配置要点
-
Nginx配置示例:
server { listen 80; server_name yourdomain.com; # 替换为实际域名/IP root /path/to/your/laravel-project/public; # 必须指向public目录 index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$query_string; # 路由转发到index.php } location ~ \.php$ { fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; # 与PHP-FPM通信 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.(?!well-known).* { deny all; # 禁止访问隐藏文件(如.git) } add_header X-Frame-Options "SAMEORIGIN"; # 安全头设置 add_header X-Content-Type-Options "nosniff"; }
重启Nginx:
sudo systemctl restart nginx
。 -
Apache配置示例:
< VirtualHost *:80> ServerName yourdomain.com; DocumentRoot /path/to/your/laravel-project/public; < Directory /path/to/your/laravel-project/public> AllowOverride All; # 允许.htaccess覆盖 Require all granted; < /Directory> < /VirtualHost>
重启Apache:
sudo systemctl restart httpd
。
4. PHP环境配置细节
- 扩展安装:通过
yum
安装必要扩展(以Remi仓库为例):sudo yum install php php-cli php-fpm php-json php-common php-mysqlnd php-zip php-gd php-mbstring php-curl php-xml php-bcmath
- PHP配置调整:编辑
/etc/php.ini
,优化以下参数(根据服务器资源调整):
重启PHP-FPM:memory_limit = 256M # 内存限制(避免上传大文件时报错) upload_max_filesize = 100M # 上传文件大小限制 post_max_size = 100M # POST数据大小限制 max_execution_time = 300 # 脚本最大执行时间(秒) date.timezone = Asia/Shanghai # 时区设置(避免时间相关错误)
sudo systemctl restart php-fpm
。
5. Laravel项目部署步骤
- 上传项目:通过SCP/SFTP将本地Laravel项目上传至服务器指定目录(如
/var/www/html/your-laravel-project
); - 安装依赖:进入项目目录,运行
composer install --no-dev --optimize-autoloader
(生产环境禁用开发依赖并优化自动加载); - 配置环境:复制
.env.example
为.env
,修改以下关键配置:APP_ENV=production # 生产环境 APP_DEBUG=false # 关闭调试模式 APP_KEY=base64:xxxxxx # 生成密钥(若未生成,运行php artisan key:generate) DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=your_database # 数据库名 DB_USERNAME=your_username # 数据库用户 DB_PASSWORD=your_password # 数据库密码
- 生成密钥与迁移:
php artisan key:generate # 生成APP_KEY php artisan migrate --force # 执行数据库迁移(--force强制在生产环境运行)
- 前端资源编译(若有):若项目使用Vue/React等前端框架,运行:
npm install # 安装前端依赖 npm run production # 编译前端资源(压缩JS/CSS)
6. 安全加固措施
- 禁用目录列表:确保Web服务器配置中
autoindex off
(Nginx/Apache默认关闭),防止暴露目录结构; - 限制隐藏文件访问:Nginx中添加
location ~ /\.(?!well-known).* { deny all; }
,Apache中添加< FilesMatch "^\."> Deny from all< /FilesMatch>
,禁止访问.git
、.env
等隐藏文件; - 配置HTTPS:使用Let’s Encrypt免费证书,通过Certbot配置HTTPS(命令示例):
sudo yum install certbot python3-certbot-nginx # Nginx sudo certbot --nginx -d yourdomain.com # 自动配置HTTPS
- 定期更新:保持系统、PHP、Web服务器及Laravel框架更新,修复安全漏洞。
7. 日志与故障排查
- Laravel日志:查看
storage/logs/laravel.log
(需设置APP_DEBUG=true
临时开启调试),定位应用层错误; - Web服务器日志:Nginx错误日志位于
/var/log/nginx/error.log
,Apache错误日志位于/var/log/httpd/error_log
,排查服务器配置问题; - PHP错误日志:检查
/var/log/php-fpm.log
(PHP-FPM日志)或php.ini
中error_log
设置的路径,查看PHP运行时错误。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: laravel项目部署centos需要注意什么
本文地址: https://pptw.com/jishu/718523.html