作为一名长期在Windows环境下开发Laravel项目的PHP开发者,我经常需要将本地开发的项目部署到线上服务器。最近在帮团队搭建一套标准化的代码托管和部署流程时,发现国内使用Gitee作为代码托管平台是个不错的选择,不仅访问速度快,而且完全符合国内开发者的使用习惯。
本文将详细介绍如何在Windows10系统下,将基于Laravel框架开发的网站推送到Gitee代码仓库,并在Ubuntu服务器上完成拉取和部署的全过程。这套方案特别适合中小型团队或个人开发者使用,能够有效管理代码版本,实现快速部署。
在开始之前,我们需要确保服务器已经配置好运行Laravel所需的环境。我推荐使用Ubuntu 24.04 LTS作为服务器操作系统,它提供了长期支持且稳定性有保障。
服务器需要安装以下组件:
安装命令如下:
bash复制sudo apt update
sudo apt install apache2 mysql-server php8.4 libapache2-mod-php8.4 php8.4-mysql php8.4-mbstring php8.4-xml php8.4-zip php8.4-curl git
注意:安装完成后,建议运行
sudo mysql_secure_installation来加强MySQL的安全性设置。
在Windows开发机上,我们需要安装Git客户端。从Git官网(https://git-scm.com/)下载最新版本的Git for Windows安装包。
安装时需要注意以下几点:
安装完成后,可以在任意文件夹右键选择"Git Bash Here"来打开Git命令行窗口。
访问Gitee官网(https://gitee.com/)注册账号并完成手机验证。创建新仓库时,务必不要勾选"初始化仓库"选项,因为我们是要上传已有的Laravel项目代码。
建议仓库命名与项目名称一致,例如如果项目名为"my-laravel-app",则仓库名也设为"my-laravel-app"。
在项目根目录右键选择"Git Bash Here"打开命令行,执行以下命令初始化Git仓库:
bash复制git init
这会在项目目录下创建隐藏的.git文件夹,用于存储版本控制信息。
设置全局Git用户信息(只需执行一次):
bash复制git config --global user.name "你的Gitee用户名"
git config --global user.email "你的Gitee注册邮箱"
如果只想为当前项目设置特定的用户信息,可以去掉--global参数:
bash复制git config user.name "项目专用用户名"
git config user.email "项目专用邮箱"
Windows和Linux使用不同的行尾符(CRLF vs LF),这可能导致Git警告。为了解决这个问题,可以执行:
bash复制git config --global core.autocrlf false
git rm -r --cached .
第一条命令禁用自动换行符转换,第二条命令清除Git缓存,确保后续操作不受之前缓存的影响。
Laravel项目通常自带.gitignore文件,它会自动忽略vendor目录、.env等不需要版本控制的文件。添加所有文件到暂存区:
bash复制git add .
然后提交到本地仓库:
bash复制git commit -m "Initial commit: Add Laravel project"
首先在Gitee仓库页面复制仓库地址(推荐使用SSH方式,更安全便捷)。然后在本地执行:
bash复制git remote add origin git@gitee.com:你的用户名/仓库名.git
git push -u origin master
第一次推送需要输入Gitee账号密码或配置SSH密钥。如果使用SSH方式,需要先在本地生成SSH密钥对:
bash复制ssh-keygen -t rsa -C "your_email@example.com"
然后将公钥(~/.ssh/id_rsa.pub内容)添加到Gitee账号的SSH密钥设置中。
登录服务器,首先确保Git已安装:
bash复制git --version
如果未安装,执行:
bash复制sudo apt update
sudo apt install git
同样需要配置Git用户信息:
bash复制git config --global user.name "服务器部署账号"
git config --global user.email "server@example.com"
进入Web服务器目录(通常是/var/www/):
bash复制cd /var/www
sudo git clone git@gitee.com:你的用户名/仓库名.git
克隆完成后,重命名目录为更简洁的名称(可选):
bash复制sudo mv 仓库名 my-laravel-app
进入项目目录并安装Composer依赖:
bash复制cd /var/www/my-laravel-app
sudo composer install --no-dev
注意:生产环境使用--no-dev参数避免安装开发依赖,减少不必要的文件和安全风险。
复制.env.example为.env并生成应用密钥:
bash复制sudo cp .env.example .env
sudo php artisan key:generate
然后编辑.env文件配置数据库连接等参数:
bash复制sudo nano .env
主要需要修改的配置包括:
Laravel需要storage和bootstrap/cache目录有写权限:
bash复制sudo chown -R www-data:www-data /var/www/my-laravel-app/storage
sudo chown -R www-data:www-data /var/www/my-laravel-app/bootstrap/cache
sudo chmod -R 775 /var/www/my-laravel-app/storage
sudo chmod -R 775 /var/www/my-laravel-app/bootstrap/cache
创建新的虚拟主机配置文件:
bash复制sudo nano /etc/apache2/sites-available/my-laravel-app.conf
添加以下内容(根据实际情况修改):
apache复制<VirtualHost *:80>
ServerName your_domain.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/my-laravel-app/public
<Directory /var/www/my-laravel-app/public>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
启用新站点和rewrite模块:
bash复制sudo a2ensite my-laravel-app.conf
sudo a2enmod rewrite
测试配置并重启Apache:
bash复制sudo apache2ctl configtest
sudo systemctl restart apache2
问题1:权限被拒绝(publickey)
问题2:Large files detected
问题1:Composer安装失败
问题2:Apache 403 Forbidden
问题3:页面显示500错误
代码更新后,服务器端可以通过以下命令拉取最新更改:
bash复制cd /var/www/my-laravel-app
sudo git pull origin master
sudo composer install --no-dev
sudo php artisan migrate --force # 如果需要数据库迁移
sudo php artisan cache:clear
sudo php artisan view:clear
建议设置自动化部署脚本或使用Webhook实现自动部署,减少手动操作。
创建deploy.sh脚本:
bash复制#!/bin/bash
cd /var/www/my-laravel-app
git pull origin master
composer install --no-dev --optimize-autoloader
php artisan migrate --force
php artisan cache:clear
php artisan view:clear
然后给执行权限:
bash复制sudo chmod +x /var/www/my-laravel-app/deploy.sh
这套部署方案经过多个项目的实际验证,能够满足大多数中小型Laravel项目的部署需求。根据项目规模的不同,可以进一步考虑使用Docker容器化部署或CI/CD流水线等更高级的方案。