Skip to main content

Server configuration

If you are installing Mixpost manually or integrating it in an existing Laravel application, additional setup is required. Ensure you install and configure the necessary software and properly set up your server for optimal performance.

info

If you are installing Mixpost with Docker, the instructions on this page are not necessary.

Requirements

Softwares

  • PHP >= 8.2.0
  • MySQL Database
  • Redis 6.2 or higher
  • Web Server (eg: Apache, Nginx)
  • URL Rewrite (eg: mod_rewrite for Apache)
  • Supervisor
  • FFmpeg
  • Composer
  • Curl
  • Zip
  • Unzip
  • Cron

PHP extensions

  • php-curl
  • php-mysql
  • php-bcmath
  • php-gd
  • php-mbstring
  • php-redis
  • php-xml
  • php-zip
  • php-intl

These extensions are version-specific for PHP, so if you have PHP 8.2.x installed you would run:

sudo apt install php8.2-curl php8.2-mysql php8.2-bcmath php8.2-gd php8.2-mbstring php8.2-redis php8.2-xml php8.2-zip php8.2-intl

In Plesk, you can install or upgrade PHP via "Tools & Settings -> Plesk -> Updates"

Enabling Specific PHP Functions

In PHP, certain functions are disabled by default for security reasons. To utilize these functions, you need to modify the disable_functions directive in the php.ini file. This guide will walk you through enabling the pcntl_signal and pcntl_alarm functions, which are commonly disabled.

Example before editing:

disable_functions = pcntl_alarm, pcntl_signal, exec, shell_exec

Example after editing:

disable_functions = exec, shell_exec

Installing Redis

If you have already installed Redis, you can skip this.

The following example is for Ubuntu:

sudo apt update
sudo apt install redis-server

Installing Supervisor

If you have already installed Supervisor, you can skip this.

The following example is for Ubuntu:

sudo apt update
sudo apt install supervisor

Installing FFmpeg

Mixpost has the ability to generate images from video while uploading a video file. This would not be possible without FFmpeg installed on your server.

The following example is for Ubuntu:

sudo apt update
sudo apt install ffmpeg

Configure Web Server Document Root

Configure the web server's document root to point directly to the public directory within your Mixpost installation folder.

Mixpost must be installed directly on a primary domain or a subdomain. Installation in a subdirectory is not supported and will result in operational issues. For clarity, here are some examples of correct and incorrect setups:

  • example.com/mixpost (Invalid)
  • localhost/mixpost (Invalid)
  • example.com (Valid)
  • mixpost.example.com (Valid)
  • mixpost.test (Valid)

Below are the configurations for Nginx and Apache web servers to set the document root correctly:

Nginx Configuration

server {
listen 80;
root /var/www/path-to-your-project/public;
index index.php index.html;
client_max_body_size 220M;

# Additional Nginx configuration goes here
}

Apache Configuration

<VirtualHost *:80>
ServerAdmin webmaster@yourdomain.com
DocumentRoot "/var/www/path-to-your-project/public"
ServerName yourdomain.com
ServerAlias www.yourdomain.com

<Directory "/var/www/path-to-your-project/public">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

# Additional Apache configuration goes here
</VirtualHost>

Plesk

Access your Plesk panel, navigate to Hosting settings and update the Document Root to point to the public folder.

Plesk Document root

Upload Maximum File Size Configuration

To accommodate large file uploads, such as videos up to 200 MB, you need to adjust your web server's configuration. Most servers have a lower default limit.

PHP Configuration

1. Edit php.ini

For Apache:
/etc/php/VERSION/apache2/php.ini

For PHP-FPM

/etc/php/VERSION/fpm/php.ini

Replace VERSION with your PHP version (e.g., 8.2, 8.3). Update the following settings:

post_max_size = 220M
upload_max_filesize = 200M

2. Restart PHP to apply changes

For PHP-FPM

sudo systemctl restart phpVERSION-fpm.service
sudo systemctl reload phpVERSION-fpm.service

For Apache

sudo systemctl restart apache2

Nginx Configuration

1. Edit nginx.conf Add the following inside the http block:

client_max_body_size 220M;

2. Restart Nginx

sudo systemctl restart nginx

Apache Configuration

1. Edit Apache configuration:

/etc/httpd/conf/httpd.conf

2. Add or modify the following line:

LimitRequestBody 209715200

3. Restart Apache

sudo systemctl restart httpd