下面给你一套在 CentOS 上部署 Laravel 项目的完整流程,适用于 CentOS 7 / 8 / Stream,涵盖环境准备、部署、权限、队列、定时任务等常见场景。
yum update -y
yum install -y epel-release
yum install -y nginx
systemctl start nginx
systemctl enable nginx
yum install -y yum-utils
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum-config-manager --enable remi-php82
yum install -y php \
php-cli \
php-fpm \
php-common \
php-mysql \
php-pdo \
php-mbstring \
php-xml \
php-curl \
php-zip \
php-gd \
php-opcache \
php-redis \
php-bcmath
systemctl start php-fpm
systemctl enable php-fpm
yum install -y mariadb mariadb-server
systemctl start mariadb
systemctl enable mariadb
mysql_secure_installation
CREATE DATABASE laravel CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'laravel'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON laravel.* TO 'laravel'@'localhost';
FLUSH PRIVILEGES;
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
cd /var/www
git clone https://github.com/yourname/laravel.git
cd laravel
composer install --no-dev --optimize-autoloader
cp .env.example .env
编辑 .env:
APP_ENV=production
APP_DEBUG=false
APP_URL=http://your_domain
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=password
php artisan key:generate
php artisan migrate --force
chown -R nginx:nginx /var/www/laravel
chmod -R 755 /var/www/laravel
chmod -R 777 /var/www/laravel/storage
chmod -R 777 /var/www/laravel/bootstrap/cache
vim /etc/nginx/conf.d/laravel.conf
server {
listen 80;
server_name your_domain.com;
root /var/www/laravel/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
nginx -t
systemctl reload nginx
编辑:
vim /etc/php-fpm.d/www.conf
确认:
user = nginx
group = nginx
重启:
systemctl restart php-fpm
php artisan queue:work --daemon
使用 Supervisor 管理(推荐):
yum install -y supervisor
配置示例:
[program:laravel-worker]
command=php /var/www/laravel/artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
user=nginx
crontab -e
* * * * * php /var/www/laravel/artisan schedule:run >> /dev/null 2>&1
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
setenforce 0
或放行 Nginx:
setsebool -P httpd_read_user_content 1
| 问题 | 解决 |
|---|---|
| 500 错误 | 查看 storage/logs/laravel.log |
| 权限问题 | chown -R nginx:nginx |
| 502 | PHP-FPM 未启动或 sock 路径错误 |
| 页面空白 | APP_DEBUG=true 调试 |
php artisan config:cache
php artisan route:cache
php artisan view:cache
如果你愿意,我可以:
直接把你的 CentOS 版本 + Laravel 版本 发我即可。