Support #867
Updated by Daniel Curtis about 8 years ago
{{>toc}} This is a guide on setting up SEO-Panel with Nginx on FreeBSD 10. *NOTE*: For some reason, SEO-Panel will run properly with nginx and php-fpm. h1. Prepare the Environment * Before installation of the components, make sure everything is up to date using the following command: <pre> pkg update -f && pkg upgrade </pre> * Install the dependencies: <pre> pkg install git </pre> * Create the seopanel user: <pre> pw user add -n seopanel -s /sbin/nologin -c "SEO Panel" </pre> --- h1. Install Nginx * Install Nginx <pre> pkg install nginx </pre> * Start and enable nginx at boot: <pre> echo 'nginx_enable="YES"' >> /etc/rc.conf service nginx start </pre> * Create a configuration directory to make managing individual server blocks easier <pre> mkdir /usr/local/etc/nginx/conf.d </pre> * Edit the main nginx config file: <pre> vi /usr/local/etc/nginx/nginx.conf </pre> #* And strip down the config file and add the include statement at the end to make it easier to handle various server blocks: <pre> 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; } </pre> --- h1. Install MySQL Server * Start by installing the mariadb100-server and mariadb100-client packages: <pre> pkg install mariadb100-{server,client} </pre> * Copy a base MySQL configuration to use: <pre> cp /usr/local/share/mysql/my-small.cnf /var/db/mysql/my.cnf </pre> * Enable and start mysql at boot: <pre> echo 'mysql_enable="YES"' >> /etc/rc.conf service mysql-server start </pre> * Prepare the database for use by running the secure installation: <pre> mysql_secure_installation </pre> #* *NOTE*: +Choose a strong root password+ and answer +yes+ to all questions. h2. Create Databases and Users * Login to MySQL and create appropriate databases and users. <pre> mysql -u root -p </pre> #* and run the following SQL queries to create the *seopaneldb* database and *seopaneluser* user: <pre> CREATE DATABASE seopaneldb CHARACTER SET utf8; CREATE USER 'seopaneluser'@'localhost' IDENTIFIED BY 'SuperSecretPassword'; GRANT ALL PRIVILEGES ON seopaneldb.* TO 'seopaneluser'@'localhost'; FLUSH PRIVILEGES; quit </pre> --- h1. Install Nginx * Install Nginx <pre> pkg install nginx </pre> * Start and enable nginx at boot: <pre> echo 'nginx_enable="YES"' >> /etc/rc.conf service nginx start </pre> * Create a configuration directory to make managing individual server blocks easier <pre> mkdir /usr/local/etc/nginx/conf.d </pre> * Edit the main nginx config file: <pre> vi /usr/local/etc/nginx/nginx.conf </pre> #* And strip down the config file and add the include statement at the end to make it easier to handle various server blocks: <pre> 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; } </pre> --- h1. Install PHP * Install PHP 5.6 and a few extensions: <pre> pkg install php56 php56-{curl,gd,mysqli,pdo_mysql,session} php56-{curl,gd,mysqli,pdo_mysql} </pre> * Configure the default PHP settings <pre> cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini </pre> * Edit the php config file: <pre> vi /usr/local/etc/php.ini </pre> #* And make sure the following values are set: <pre> date.timezone = "America/Los_Angeles" max_execution_time = 200 post_max_size = 100M upload_max_filesize = 100M memory_limit = 256M short_open_tag = On </pre> * Create a directory for the php-fpm configs: <pre> mkdir /usr/local/etc/php-fpm.d </pre> * Edit the php-fpm config file: <pre> vi /usr/local/etc/php-fpm.conf </pre> #* Make the following changes: <pre> include=/usr/local/etc/php-fpm.d/*.conf </pre> * Enable PHP-FPM at boot: <pre> echo 'php_fpm_enable="YES"' >> /etc/rc.conf </pre> * Restart nginx: <pre> service nginx restart </pre> --- h2. Install SEO-Panel * Download the lastest version of SEO-Panel from GitHub: <pre> cd /usr/local/www git clone https://github.com/sendtogeo/Seo-Panel.git </pre> * Create an *seopanel.example.com server block* config file: <pre> vi /usr/local/etc/nginx/conf.d/seopanel.example.com.conf </pre> #* Add the following: <pre> upstream seopanel-handler { server unix:/var/run/seopanel.example.com-php-fpm.sock; } server { listen 80; server_name seopanel.example.com; root /usr/local/www/Seo-Panel; 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 seopanel-handler; fastcgi_intercept_errors on; } } </pre> * Create the seopanel php-fpm pool config file: <pre> vi /usr/local/etc/php-fpm.d/seopanel.example.com.conf </pre> #* And add the following: <pre> [seopanel.example.com] user = seopanel group = www listen = /var/run/seopanel.example.com-php-fpm.sock listen.owner = seopanel listen.group = www pm = dynamic pm.max_children = 5 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3 </pre> * Change the ownership of the seopanel directory: <pre> chown -R seopanel:www /usr/local/www/Seo-Panel </pre> * Restart nginx and start php-fpm: <pre> service nginx restart service php-fpm start </pre> * Now open up a web browser and go to http://seopanel.example.com/install to finish the setup process. *NOTE*: Default username is *spadmin*; default password is *spadmin* * Secure the installation: <pre> rm -rf /usr/local/www/Seo-Panel/install chmod -w /usr/local/www/Seo-Panel/config/sp-config.php </pre> h2. Resources * http://www.seopanel.in/install/ * http://www.seopanel.in/install/requirements/ * https://github.com/sendtogeo/Seo-Panel