196 lines
4.9 KiB
Markdown
196 lines
4.9 KiB
Markdown
# Laravel Hostinger Deploy
|
|
|
|
A Laravel package for automated deployment to Hostinger shared hosting with GitHub Actions support.
|
|
|
|
## Features
|
|
|
|
- 🚀 **One-command deployment** to Hostinger shared hosting
|
|
- 🔄 **GitHub Actions integration** for automated deployments
|
|
- 🔑 **Automatic SSH key management** for secure connections
|
|
- 📦 **Laravel-specific optimizations** (composer, migrations, storage links)
|
|
- ⚙️ **Configurable deployment options** via config file
|
|
|
|
## Installation
|
|
|
|
Install the package via Composer:
|
|
|
|
```bash
|
|
composer require zura/laravel-hostinger-deploy --dev
|
|
```
|
|
|
|
## Configuration
|
|
|
|
### 1. Environment Variables
|
|
|
|
Add the following variables to your `.env` file:
|
|
|
|
```env
|
|
# Hostinger Deployment Configuration
|
|
HOSTINGER_SSH_HOST=your-server-ip
|
|
HOSTINGER_SSH_USERNAME=your-username
|
|
HOSTINGER_SSH_PORT=22
|
|
HOSTINGER_SITE_DIR=your-website-folder
|
|
```
|
|
|
|
### 2. Publish Configuration (Optional)
|
|
|
|
Publish the configuration file to customize deployment options:
|
|
|
|
```bash
|
|
php artisan vendor:publish --tag=hostinger-deploy-config
|
|
```
|
|
|
|
This will create `config/hostinger-deploy.php` with customizable options.
|
|
|
|
## Usage
|
|
|
|
### 1. Deploy to Hostinger
|
|
|
|
Deploy your Laravel application to Hostinger shared hosting:
|
|
|
|
```bash
|
|
php artisan hostinger:deploy-shared
|
|
```
|
|
|
|
**Options:**
|
|
- `--fresh`: Delete existing files and clone fresh repository
|
|
- `--site-dir=`: Override site directory from config
|
|
|
|
### 2. Publish GitHub Actions Workflow
|
|
|
|
Create a GitHub Actions workflow file for automated deployments:
|
|
|
|
```bash
|
|
php artisan hostinger:publish-workflow
|
|
```
|
|
|
|
**Options:**
|
|
- `--branch=`: Override default branch (default: auto-detect)
|
|
- `--php-version=`: Override PHP version (default: 8.3)
|
|
|
|
### 3. Setup Automated Deployment
|
|
|
|
Configure SSH keys and display GitHub secrets for automated deployment:
|
|
|
|
```bash
|
|
php artisan hostinger:auto-deploy
|
|
```
|
|
|
|
This command will:
|
|
- Generate SSH keys on your Hostinger server
|
|
- Display all required GitHub secrets and variables
|
|
- Provide step-by-step instructions for GitHub setup
|
|
|
|
## GitHub Actions Setup
|
|
|
|
After running `php artisan hostinger:auto-deploy`, you'll need to add the following to your GitHub repository:
|
|
|
|
### Secrets (Repository Settings → Secrets and variables → Actions → Secrets)
|
|
|
|
- `SSH_HOST`: Your Hostinger server IP address
|
|
- `SSH_USERNAME`: Your Hostinger SSH username
|
|
- `SSH_PORT`: Your Hostinger SSH port (usually 22)
|
|
- `SSH_KEY`: Your private SSH key (displayed by the command)
|
|
|
|
### Variables (Repository Settings → Secrets and variables → Actions → Variables)
|
|
|
|
- `WEBSITE_FOLDER`: Your Hostinger website folder name
|
|
|
|
### Deploy Keys (Repository Settings → Deploy keys)
|
|
|
|
Add the public SSH key displayed by the `auto-deploy` command as a deploy key.
|
|
|
|
## Workflow
|
|
|
|
The generated GitHub Actions workflow will:
|
|
|
|
1. **Checkout code** from your repository
|
|
2. **Setup PHP** environment
|
|
3. **Install dependencies** via Composer
|
|
4. **Generate application key** and create storage link
|
|
5. **Run database migrations**
|
|
6. **Deploy to Hostinger** via SSH
|
|
7. **Update code** on the server and run optimizations
|
|
|
|
## Configuration Options
|
|
|
|
### SSH Settings
|
|
|
|
```php
|
|
'ssh' => [
|
|
'host' => env('HOSTINGER_SSH_HOST'),
|
|
'username' => env('HOSTINGER_SSH_USERNAME'),
|
|
'port' => env('HOSTINGER_SSH_PORT', 22),
|
|
'timeout' => 30,
|
|
],
|
|
```
|
|
|
|
### Deployment Settings
|
|
|
|
```php
|
|
'deployment' => [
|
|
'site_dir' => env('HOSTINGER_SITE_DIR'),
|
|
'composer_flags' => '--no-dev --optimize-autoloader',
|
|
'run_migrations' => true,
|
|
'run_storage_link' => true,
|
|
'run_config_cache' => false,
|
|
'run_route_cache' => false,
|
|
'run_view_cache' => false,
|
|
],
|
|
```
|
|
|
|
### GitHub Actions Settings
|
|
|
|
```php
|
|
'github' => [
|
|
'workflow_file' => '.github/workflows/hostinger-deploy.yml',
|
|
'php_version' => '8.3',
|
|
'default_branch' => 'main',
|
|
],
|
|
```
|
|
|
|
## Requirements
|
|
|
|
- PHP ^8.2
|
|
- Laravel ^11.0|^12.0
|
|
- SSH access to Hostinger server
|
|
- Git repository with GitHub integration
|
|
|
|
## Troubleshooting
|
|
|
|
### SSH Connection Issues
|
|
|
|
1. Verify your SSH credentials in `.env`
|
|
2. Test SSH connection manually: `ssh -p PORT USERNAME@HOST`
|
|
3. Ensure SSH key authentication is working
|
|
|
|
### GitHub Actions Issues
|
|
|
|
1. Verify all secrets and variables are correctly set
|
|
2. Check that the deploy key is added to your repository
|
|
3. Ensure the workflow file is committed and pushed
|
|
|
|
### Deployment Issues
|
|
|
|
1. Check that your Hostinger server has Composer installed
|
|
2. Verify the site directory exists and is writable
|
|
3. Ensure your Laravel application is properly configured
|
|
|
|
## Security Notes
|
|
|
|
- SSH keys are generated on the server and should be kept secure
|
|
- Private keys are displayed for GitHub setup - copy them carefully
|
|
- The package uses SSH key authentication for secure deployments
|
|
|
|
## License
|
|
|
|
This package is open-sourced software licensed under the [MIT license](LICENSE).
|
|
|
|
## Contributing
|
|
|
|
Contributions are welcome! Please feel free to submit a Pull Request.
|
|
|
|
## Support
|
|
|
|
If you encounter any issues or have questions, please open an issue on GitHub.
|