首先更新系统包并安装必要软件(PHP、Composer、Nginx、MySQL):
# 更新系统
sudo yum update -y
# 安装EPEL仓库(提供额外软件包)
sudo yum install -y epel-release
# 安装PHP及常用扩展(需满足Laravel要求:PHP≥7.3)
sudo yum install -y php php-cli php-fpm php-mysqlnd php-zip php-gd php-mbstring php-curl php-xml php-bcmath
# 安装Composer(PHP依赖管理工具)
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
# 安装Nginx(Web服务器)
sudo yum install -y nginx
sudo systemctl start nginx
sudo systemctl enable nginx
# 安装MySQL(数据库)
sudo yum install -y mysql-server
sudo systemctl start mysqld
sudo systemctl enable mysqld
sudo mysql_secure_installation # 执行安全配置(设置root密码、移除匿名用户等)
编辑PHP-FPM配置文件,确保其与Nginx用户(通常为nginx)兼容:
sudo vi /etc/php-fpm.d/www.conf
找到并修改以下参数(取消注释或调整值):
listen = /run/php-fpm/www.sock
listen.owner = nginx
listen.group = nginx
user = nginx
group = nginx
保存后重启PHP-FPM:
sudo systemctl restart php-fpm
# 进入Web服务器根目录(如/var/www/html)
cd /var/www/html
# 创建Laravel项目(替换your-project-name为项目名)
composer create-project --prefer-dist laravel/laravel your-project-name
将本地项目文件上传至服务器目标目录(如/var/www/html/your-project-name),可通过SCP、SFTP或Git完成。
进入项目目录,复制.env.example为.env并编辑:
cd /var/www/html/your-project-name
cp .env.example .env
nano .env
修改以下关键配置(根据实际情况调整):
APP_ENV=production # 生产环境
APP_KEY= # 留空(后续生成)
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_db # 数据库名(需提前创建)
DB_USERNAME=laravel_user # 数据库用户(需创建)
DB_PASSWORD=your_password # 数据库密码
登录MySQL并创建数据库及用户:
sudo mysql -u root -p
在MySQL shell中执行:
-- 创建数据库
CREATE DATABASE laravel_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 创建用户并授权
CREATE USER 'laravel_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON laravel_db.* TO 'laravel_user'@'localhost';
FLUSH PRIVILEGES;
-- 退出
EXIT;
# 安装项目依赖(--no-dev排除开发依赖,--optimize-autoloader优化自动加载)
composer install --no-dev --optimize-autoloader
# 生成应用密钥(写入.env文件)
php artisan key:generate
# 运行数据库迁移(创建表结构)
php artisan migrate --force # --force强制在生产环境执行
# 可选:优化性能(缓存配置、路由、视图)
php artisan config:cache
php artisan route:cache
php artisan view:cache
创建Nginx配置文件(以项目域名为例):
sudo vi /etc/nginx/conf.d/your-domain.conf
添加以下内容(替换your-domain.com为域名/IP,/var/www/html/your-project-name为项目路径):
server {
listen 80;
server_name your-domain.com; # 替换为实际域名或IP
root /var/www/html/your-project-name/public;
index index.php index.html index.htm;
# 处理前端路由(避免404)
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# PHP处理
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 禁止访问隐藏文件(如.htaccess)
location ~ /\.ht {
deny all;
}
# 日志记录
access_log /var/log/nginx/your-domain.access.log;
error_log /var/log/nginx/your-domain.error.log;
}
保存后重启Nginx:
sudo systemctl restart nginx
确保Laravel关键目录可写:
sudo chown -R nginx:nginx /var/www/html/your-project-name # 更改所有者(Nginx用户)
sudo chmod -R 755 /var/www/html/your-project-name/storage # 存储目录权限
sudo chmod -R 755 /var/www/html/your-project-name/bootstrap/cache # 缓存目录权限
现在可通过浏览器访问http://your-domain.com查看Laravel项目。若需启用HTTPS,可使用Let’s Encrypt免费证书:
sudo yum install -y certbot python2-certbot-nginx
sudo certbot --nginx -d your-domain.com # 按提示完成配置
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
sudo chcon -R -t httpd_sys_rw_content_t /var/www/html/your-project-name/storage
sudo chcon -R -t httpd_sys_rw_content_t /var/www/html/your-project-name/bootstrap/cache
/var/log/nginx/error.log)和Laravel(storage/logs/laravel.log)日志定位错误。