首先更新系統包并安裝必要軟件(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
)日志定位錯誤。