Compare commits

...

11 Commits
main ... main

1 changed files with 83 additions and 167 deletions

View File

@ -1,203 +1,119 @@
# Updating UNIT3D
This guide walks you through updating UNIT3D from `v8.3.3` to `v9.0.1` and upgrading PHP from `8.3` to `8.4`.
Update UNIT3D to the latest version by reviewing the release notes and following the steps below:
## 1. Create Backup
UNIT3D offers built-in backups. Refer to the [Backups documentation](/book/src/backups.md) for usage.
> [!IMPORTANT]
> Ensure you have a complete backup before proceeding.
> Ensure there is a complete backup before proceeding.
## 1. Prerequisites
- **Backup** located in `~/tempBackup`
- **Sudo** privileges.
- **Current versions**:
- `UNIT3D`: `v8.3.3`
- `PHP`: `8.3`
- **Tools**:
```text
curl, apt, nginx, mysql/mariadb, nano
```
## 2. Create Backup
UNIT3D offers built-in backups. Refer to the Backups page in this wiki for usage.
> [!IMPORTANT]
> Verify your backups before continuing.
## 3. Enter Maintenance Mode
## 2. Enter Maintenance Mode
```bash
cd /var/www/html
php artisan down
```
## 4. Update Meilisearch
```bash
sudo apt update
sudo apt upgrade
sudo systemctl stop meilisearch
sudo curl -L https://install.meilisearch.com | sudo sh
sudo mv ./meilisearch /usr/local/bin/
sudo chmod +x /usr/local/bin/meilisearch
sudo rm -rf /var/lib/meilisearch/data
```
Proceed with the following command:
> **Note:**
> This step had to be repeated.
```bash
sudo chmod +x /usr/local/bin/meilisearch
sudo systemctl start meilisearch
```
### 2.2 Update PHP to 8.4
Add PHP Repository & Update Package Lists:
```bash
sudo add-apt-repository ppa:ondrej/php
sudo apt update
```
Backup Current PHP Packages & Install PHP 8.4:
```bash
sudo dpkg -l | grep php | tee ~/tempBackup/packages.txt
sudo apt install php8.4-common php8.4-cli php8.4-fpm php8.4-{redis,bcmath,curl,dev,gd,igbinary,intl,mbstring,mysql,opcache,readline,xml,zip}
```
### 2.3 NGINX Configuration Update
#### **Edit Nginx configuration file:**
```bash
sudo nano /etc/nginx/sites-available/default
```
#### **Update the `fastcgi_pass` directive to use the PHP 8.4 socket:**
> **Note:**
> Locate the line
> ```nginx
> fastcgi_pass unix:/var/run/php/***.sock;
> ```
> and replace `***` with your sites identifier.
For example, to point to the PHP 8.4 FPM socket:
```nginx
fastcgi_pass unix:/var/run/php/php8.4-fpm.sock;
```
Save and exit the editor.
#### **Test the Nginx configuration:**
```bash
sudo nginx -t
```
#### **Restart Nginx and PHP-FPM, and Remove PHP 8.3:**
```bash
sudo nginx -t
sudo systemctl restart nginx
sudo systemctl restart php8.4-fpm
sudo systemctl stop php8.3-fpm
sudo apt purge '^php8.3.*'
php -v
```
## 3. Update UNIT3D
```bash
cd /var/www/html
php artisan git:update
```
During the update process, UNIT3D differences all files and prompts the user to choose whether to keep the current version or update to the new one; typically, it is recommended to update all files, but before beginning the update, the most recent backup should be copied to `~/tempBackup`, and after the update, the list of file conflicts is saved as `~/tempBackup/fileConflicts.txt` so that, once the process is complete, these files can be reviewed to determine which changes should be merged or discarded.
> [!NOTE]
> Before running the update, review the new releases minimum requirements to ensure the environment meets them.
### 4. Database Migration Fix
1. **Proceed to update:**
During the update, you might encounter an error related to the tickets table
The updater will fetch the latest commits from the upstream repository and stage them for installation.
```sql
2025_02_17_074140_update_columns_to_boolean ......................................................................................... 38.50ms FAIL
```bash
cd /var/www/html
php artisan git:update
```
In Connection.php line 825:
SQLSTATE[22004]: Null value not allowed: 1138 Invalid use of NULL value (Connection: mysql, SQL: alter table `tickets` modify `staff_read` tinyint(1) not null default '0')
There will be a prompt to confirm each step; choose `yes` to overwrite with the new version.
In Connection.php line 571:
SQLSTATE[22004]: Null value not allowed: 1138 Invalid use of NULL value
```
```bash
Start the update process (yes/no) [yes]:
> yes
```
**Resolve NULL values in tickets table:**
2. **Accept upstream files:**
1. Log in to MySQL:
When prompted for each changed file, type `yes` to overwrite the local copy or press `Enter` to accept the default shown in brackets.
```bash
mysql -u your_username -p
```
```bash
Update config/unit3d.php (yes/no) [yes]:
> yes
When prompted, enter your MySQL password. Once logged in, select the appropriate database by running:
git checkout origin/master -- config/unit3d.php
[============================] (Done!)
```
```bash
USE your_database_name;
```
3. **Run new migrations:**
1. Fix the Null Values:
```bash
Run new migrations (php artisan migrate) (yes/no) [yes]:
> yes
```
Run the following SQL command to update any null entries in the `staff_read` column to 0:
4. **Install new packages:**
```sql
UPDATE tickets SET staff_read = 0 WHERE staff_read IS NULL;
```
```bash
Install new packages (composer install) (yes/no) [yes]:
> yes
```
9. Exit MySQL:
5. **Compile assets:**
```sql
exit;
```
```bash
Compile assets (bun run build) (yes/no) [yes]:
> yes
```
2. Complete migrations:
```bash
php artisan migrate
```
## Troubleshooting Clean-up
---
The following commands are **optional** and should be run only as needed to resolve specific errors:
## 5. Final Reset & Cleanup
- **Finish any migrations not completed:**
**After updating and migrating, run the following commands to clear caches, reinstall dependencies, rebuild assets, and restart services:**
```sh
sudo php artisan migrate
```
```bash
sudo -u www-data composer install --prefer-dist --no-dev -o && \
sudo php artisan cache:clear && \
sudo php artisan queue:clear && \
sudo php artisan auto:email-blacklist-update && \
sudo php artisan auto:cache_random_media && \
sudo php artisan set:all_cache && \
bun install && \
bun run build && \
sudo php artisan migrate && \
sudo systemctl restart php8.4-fpm && \
sudo php artisan queue:restart && \
sudo supervisorctl reread && \
sudo supervisorctl update && \
sudo supervisorctl reload && \
sudo php artisan scout:sync-index-settings && \
sudo php artisan auto:sync_torrents_to_meilisearch --wipe && \
sudo php artisan auto:sync_people_to_meilisearch
```
- **Reinstall dependencies:**
**Finally, finish the update and bring your site back online:**
```bash
sudo php artisan scout:sync-index-settings && \
sudo php artisan auto:sync_torrents_to_meilisearch --wipe && \
sudo php artisan auto:sync_people_to_meilisearch && \
sudo php artisan set:all_cache && \
sudo systemctl restart php8.4-fpm && \
sudo php artisan queue:restart && \
sudo php artisan up
```
```sh
composer install --prefer-dist --no-dev -o
```
- **Clear caches:**
```sh
sudo php artisan cache:clear && \
sudo php artisan queue:clear && \
sudo php artisan auto:email-blacklist-update && \
sudo php artisan auto:cache_random_media && \
sudo php artisan set:all_cache
```
- **Rebuild static assets:**
```sh
sudo bun install && sudo bun run build
```
- **Restart services:**
```sh
sudo systemctl restart php8.4-fpm && \
sudo php artisan queue:restart && \
sudo php artisan up
```
- **If running external UNIT3D-Announce, restart the supervisor services:**
```sh
sudo supervisorctl reread && \
sudo supervisorctl update && \
sudo supervisorctl reload
```