Support #860
Install Lychee on FreeBSD
Description
This is a guide on setting up Lychee with Nginx on FreeBSD 10.
Prepare the Environment¶
- Before installation of the components, make sure everything is up to date using the following command:pkg update -f && pkg upgrade 
- Install a couple dependencies:pkg install git ImageMagick-nox11 
- Create the lychee user:pw user add -n lychee -s /sbin/nologin -c "Lychee" 
Install Nginx¶
- Install Nginxpkg install nginx 
- Start and enable nginx at boot:echo 'nginx_enable="YES"' >> /etc/rc.conf service nginx start 
- Create a configuration directory to make managing individual server blocks easiermkdir /usr/local/etc/nginx/conf.d 
- Edit the main nginx config file:vi /usr/local/etc/nginx/nginx.conf - And strip down the config file and add the include statement at the end to make it easier to handle various server blocks:load_module /usr/local/libexec/nginx/ngx_mail_module.so; load_module /usr/local/libexec/nginx/ngx_stream_module.so; worker_processes 1; error_log /var/log/nginx-error.log; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; # Load config files from the /etc/nginx/conf.d directory include /usr/local/etc/nginx/conf.d/*.conf; }
 
- And strip down the config file and add the include statement at the end to make it easier to handle various server blocks:
Install MySQL Server¶
- Start by installing the mariadb100-server and mariadb100-client packages:pkg install mariadb100-{server,client}
- Copy a base MySQL configuration to use:cp /usr/local/share/mysql/my-small.cnf /var/db/mysql/my.cnf 
- Enable and start mysql at boot:echo 'mysql_enable="YES"' >> /etc/rc.conf service mysql-server start 
- Prepare the database for use by running the secure installation:mysql_secure_installation - NOTE: Choose a strong root password and answer yes to all questions.
 
Create Databases and Users¶
- Login to MySQL and create appropriate databases and users.mysql -u root -p - and run the following SQL queries to create the lycheedb database and lycheeuser user:CREATE DATABASE lycheedb CHARACTER SET utf8; CREATE USER 'lycheeuser'@'localhost' IDENTIFIED BY 'SuperSecretPassword'; GRANT ALL PRIVILEGES ON lycheedb.* TO 'lycheeuser'@'localhost'; FLUSH PRIVILEGES; quit 
 
- and run the following SQL queries to create the lycheedb database and lycheeuser user:
Install PHP¶
- Install PHP 5.6 and a few extensions:pkg install php56 php56-{mbstring,session,exif,gd,mysqli,json,zip}
- Configure the default PHP settingscp /usr/local/etc/php.ini-production /usr/local/etc/php.ini 
- Edit the php config file:vi /usr/local/etc/php.ini - And make sure the following values are set:max_execution_time = 200 post_max_size = 100M upload_max_filesize = 100M memory_limit = 256M 
 
- And make sure the following values are set:
- Create a directory for the php-fpm configs:mkdir /usr/local/etc/php-fpm.d 
- Edit the php-fpm config file:vi /usr/local/etc/php-fpm.conf - Make the following changes:include=/usr/local/etc/php-fpm.d/*.conf 
 
- Make the following changes:
- Enable PHP-FPM at boot:echo 'php_fpm_enable="YES"' >> /etc/rc.conf 
- Restart nginx:service nginx restart 
Install Lychee¶
- Download Lychee from GitHub:cd /usr/local/www git clone https://github.com/electerious/Lychee.git 
- Create an lychee.example.com server block config file:vi /usr/local/etc/nginx/conf.d/lychee.example.com.conf - Add the following:upstream lychee-handler { server unix:/var/run/lychee.example.com-php-fpm.sock; } server { listen 80; server_name lychee.example.com; root /usr/local/www/Lychee/; index index.html index.php; # Set size for max uploaded content client_max_body_size 0; client_header_timeout 30m; client_body_timeout 30m; location = /robots.txt { allow all; log_not_found off; access_log off; } location ~ ^/(?:CHANGELOG\.md|config|README.md|.git){ deny all; } location / { try_files $uri $uri/ =404; } location ~ \.php(?:$|/) { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_pass lychee-handler; fastcgi_intercept_errors on; } }
 
- Add the following:
- Create the lychee php-fpm pool config file:vi /usr/local/etc/php-fpm.d/lychee.example.com.conf - And add the following:[lychee.example.com] user = lychee group = www listen = /var/run/lychee.example.com-php-fpm.sock listen.owner = lychee listen.group = www pm = dynamic pm.max_children = 5 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3 
 
- And add the following:
- Change the ownership of the lychee directory:chown -R lychee:www /usr/local/www/Lychee 
- Restart nginx and start php-fpm:service nginx restart service php-fpm start 
- Now open up a web browser and go to http://lychee.example.com to finish the setup process.