How to install SuiteCRM on Fedora 25 Minimal
-
The official SuiteCRM instructions are absolutely atrocious.
This guide assumes that you are starting from Fedora 25 Minimal similar to where these instructions leave you.
This guide also assumes that you are installing SuiteCRM 7.8.3. The instructions for other versions may or may not differ.
Install useful packages
dnf install -y wget nano rsync sysstat htop glances
Install required packages
dnf install -y unzip httpd mariadb mariadb-server php php-mysqli php-gd php-xml php-mbstring php-pecl-zip php-imap php-pear-Net-Curl ImageMagick policycoreutils-python-utils
Download SuiteCRM from here: https://suitecrm.com/download
You will have to register to get the download file.
Copy the downloaded ZIP file to your server with SCP/FTP/whatever
For example:scp SuiteCRM-7.8.3.zip root@10.254.0.55:/root/SuiteCRM-7.8.3.zip
Assuming you copied it to /root, extract the zip
unzip SuiteCRM-7.8.3.zip -d /var/www/html
Rename the extracted folder
mv /var/www/html/SuiteCRM-7.8.3 /var/www/html/suitecrm
Set ownership
chown -R apache:apache /var/www/html/suitecrm/
Set read/write permissions
chmod -R 755 /var/www/html/suitecrm/ chmod -R 775 /var/www/html/suitecrm/cache chmod -R 775 /var/www/html/suitecrm/custom chmod -R 775 /var/www/html/suitecrm/modules chmod -R 775 /var/www/html/suitecrm/themes chmod -R 775 /var/www/html/suitecrm/data chmod -R 775 /var/www/html/suitecrm/upload chmod 775 /var/www/html/suitecrm/config_override.php
Open the firewall for http
firewall-cmd --zone=public --add-port=http/tcp --permanent firewall-cmd --reload
Start the mariadb and set to start on boot
systemctl start mariadb systemctl enable mariadb
Create a database for SuiteCRM and a user to access it.
mysql -e "CREATE DATABASE suitecrm;" mysql -e "CREATE USER 'scrmuser'@'localhost' IDENTIFIED BY 'scrmuserpassword';" mysql -e "GRANT ALL ON suitecrm.* TO 'scrmuser'@'localhost';" mysql -e "FLUSH PRIVILEGES;"
Secure mariadb. These commands do what mysql_secure_installation does interactively
mysql -e "UPDATE mysql.user SET Password=PASSWORD('somesecurepassword') WHERE User='root';" mysql -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');" mysql -e "DELETE FROM mysql.user WHERE User='';" mysql -e "DROP DATABASE test;" mysql -e "FLUSH PRIVILEGES;"
Tell SELinux to let it send mail and talk on the network
setsebool -P httpd_can_sendmail 1 setsebool -P httpd_can_network_connect 1
Tell SELinux that these directories need to write
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/suitecrm/cache(/.*)?" restorecon -R /var/www/html/suitecrm/cache semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/suitecrm/custom(/.*)?" restorecon -R /var/www/html/suitecrm/custom semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/suitecrm/modules(/.*)?" restorecon -R /var/www/html/suitecrm/modules semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/suitecrm/themes(/.*)?" restorecon -R /var/www/html/suitecrm/themes semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/suitecrm/data(/.*)?" restorecon -R /var/www/html/suitecrm/data semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/suitecrm/upload(/.*)?" restorecon -R /var/www/html/suitecrm/upload semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/suitecrm/config_override.php" restorecon -R /var/www/html/suitecrm/config_override.php
Edit
/etc/php.ini
to have the following settings found in the upgrade section of the official guidesed -i -e 's/post_max_size = 8M/post_max_size = 60M/' /etc/php.ini sed -i -e 's/upload_max_filesize = 2M/upload_max_filesize = 60M/' /etc/php.ini sed -i -e 's/max_input_time = 60/max_input_time = 300/' /etc/php.ini sed -i -e 's/memory_limit = 128M/memory_limit = 256M/' /etc/php.ini
Create an Apache virtual host file
cat > /etc/httpd/conf.d/suitecrm.conf << EOF LoadModule rewrite_module modules/mod_rewrite.so <VirtualHost *:80> ServerAdmin webmaster@localhost <Directory /var/www/html/suitecrm> Allow From All AllowOverride All Options +Indexes </Directory> DocumentRoot /var/www/html/suitecrm ServerName crm.domain.com ErrorLog /var/log/httpd/suitecrm.error.log CustomLog /var/log/access.log combined </VirtualHost> EOF
Restart Apache and enable for reboot.
systemctl restart httpd systemctl enable httpd
Disbale SELinux temporarily.
setenforce 0
Make sure your DNS name is setup wherever your DNS is controlled.
Go to install page
http://crm.domain.com/install.phpAccept the agreement and click next.
Verify everything shows ok and click next.
Change the SuiteCRM Database user to Provide Existing User.
Populate the database appropriately.
Change the server to localhost and fill in with the database user and password previously setup.
Populate the initial admin account info
Expand each of these options and set them up appropriately.
I leave everything default, except for populating the email settings.
Click next, and you will see a progress bar while it sets everything up and then get redirected to the login page.
Go turn SELinux back to enforcing.
setenforce 1