================
civicrm.libre.is
================
CiviCRM deployment.
``_
Under consideration:
``_
CiviCRM
=======
CiviCRM is a "constituent relationship management software" for
especially designed for non-profits.
``_
Drupal
======
CiviCRM works with various backends such as Drupal, Joomla, and Wordpress.
Drupal is the most powerful.
``_
Drupal needs to be installed before CiviCRM.
Install Debian stable (bookworm/12) with Apache and set up Certbot.
Wordpress
=========
The test install will have a CiviCRM with Wordpress install.
``_
``_
Download latest release:
``_
.. code-block:: sh
sudo apt install unzip python3-certbot-apache php mariadb-server php-mysql
Set up the database.
.. code-block:: sh
sudo mariadb-admin password
mariadb -uroot -p
Then in the database:
.. code-block:: sql
CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'password';
CREATE DATABASE IF NOT EXISTS wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT ALL PRIVILEGES on wordpress.* to 'wordpress'@'localhost';
FLUSH PRIVILEGES;
EXIT
Import timezone data into the database:
.. code-block:: sh
mariadb-tzinfo-to-sql /usr/share/zoneinfo | mariadb -u root -p mysql
Perhaps change the ownership to your user (in this case jebba)
to install wordpress files. Then unzip wordpress and move to
the best location:
.. code-block:: sh
sudo chown -R jebba:jebba /var/www
cd /var/www/
unzip ~/devel/wordpress/latest.zip
sudo chown -R www-data /var/www/wordpress
Set up apache, perhaps thusly:
.. code-block:: sh
rm /etc/apache2/sites-enabled/000-default*
Edit /etc/apache2/sites-available/wordpress.conf
.. code-block:: apache
ServerName civicrm.libre.is
ServerAdmin webmaster@localhost
DocumentRoot /var/www/wordpress
ErrorLog ${APACHE_LOG_DIR}/error-civicrm-libre-is.log
CustomLog ${APACHE_LOG_DIR}/access-civicrm-libre-is.log combined
RewriteEngine on
ReWriteCond %{HTTPS} off
RewriteRule ^ https://civicrm.libre.is%{REQUEST_URI} [END,NE,R=permanent]
ReWriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{SERVER_NAME} =civicrm.libre.is
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
ServerName civicrm.libre.is
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/civicrm-libre-is
ErrorLog ${APACHE_LOG_DIR}/error-civicrm-libre-is.log
CustomLog ${APACHE_LOG_DIR}/access-civicrm-libre-is.log combined
RewriteEngine on
ReWriteCond %{HTTPS} off [OR]
ReWriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
ReWriteRule ^(.*)$ https://%1$1 [L,R=301]
ErrorDocument 404 /en/404.html
Include /etc/letsencrypt/options-ssl-apache.conf
ServerAlias doc.libre.is
SSLCertificateFile /etc/letsencrypt/live/civicrm.libre.is/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/civicrm.libre.is/privkey.pem
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
.. code-block:: sh
sudo ln -s /etc/apache2/sites-available/wordpress.conf \
/etc/apache2/sites-enabled/
sudo systemctl restart apache2
CiviCRM Install
===============
Once Wordpress is running, install CiviCRM plugins.
Download the Wordpress CiviCRM plugin from here:
``_
Also install more PHP deps.
.. code-block:: sh
sudo chown -R jebba:jebba /var/www/wordpress/wp-content/plugins/
cd /var/www/wordpress/wp-content/plugins/
unzip ~/devel/civicrm/wordpress/civicrm-5.77.0-wordpress.zip
sudo apt install php-bcmath php-curl php-xml php-zip php-intl \
php-soap php-mbstring php-common php-imagick php-gd
Edit /etc/php/8.2/apache2/php.ini with these values:
.. code-block:: sh
memory_limit = 256M
max_execution_time = 240
max_input_time = 120
post_max_size = 50M
upload_max_filesize = 50M
Then restart apache:
.. code-block:: sh
sudo systemctl restart apache2
Activate the plugin, logging in as Wordpress admin user:
``_
Database Backup
===============
HOWTO backup the database. Do this regularly and before major
operations, such as importing contact lists.
Scriptlet to back up all databases on system:
.. code-block:: sh
#!/bin/bash
BACKUPDIR=/var/lib/dbbackup
NOW=`date +%Y%m%d%H%M`
sudo mkdir -p $BACKUPDIR
sudo chown root:root $BACKUPDIR
sudo chmod og-rwx $BACKUPDIR
sudo touch $BACKUPDIR/db-dump-$NOW.sql
sudo chmod 400 $BACKUPDIR/db-dump-$NOW.sql
# Backup full DB
sudo nice mariadb-dump -p --all-databases -uroot --result-file=$BACKUPDIR/db-dump-$NOW.sql
# Compress it
sudo nice xz -9 -T4 -z $BACKUPDIR/db-dump-$NOW.sql
Sciptlet to backup wordpress database, which includes CiviCRM:
.. code-block:: sh
#!/bin/bash
BACKUPDIR=/var/lib/dbbackup
NOW=`date +%Y%m%d%H%M`
sudo mkdir -p $BACKUPDIR
sudo chown root:root $BACKUPDIR
sudo chmod og-rwx $BACKUPDIR
sudo touch $BACKUPDIR/db-wordpress-$NOW.sql
sudo chmod 400 $BACKUPDIR/db-wordpress-$NOW.sql
# Backup full DB
sudo nice mariadb-dump -p -uroot --result-file=$BACKUPDIR/db-wordpress-$NOW.sql wordpress
# Compress it
sudo nice xz -9 -T4 -z $BACKUPDIR/db-wordpress-$NOW.sql
To decompress the file, run a command like this, with "-k", if you
want to keep the compressed version:
.. code-block:: sh
xz -d -k db-wordpress-202409190643.sql.xz
Hubspot Export
==============
Documentation on migrating from Hubspot to CiviCRM.
Data to migrate:
* Contacts.
Contacts Export
---------------
Hubspot can export contacts in these formats, all of which should
export identical data.
* CSV.
* XLS.
* XLSX.
Go to CRM --> Contacts and click the "Export" button on the right side.
For "Customize" export, it has options:
* Include all email addresses.
* Properties options.
* Associations.
Use these options for the most complete export:
* Include all email addresses: Checked.
* All properties and all associations on records: Selected.
* Include all associated record in each association column: Selected.
Click "Export" and it will present a link to an "Import and Export" page,
where it will show the progress of the export.
It will take approximately 1 minute per 1,000 records to export.
The unzipped export will be approximately 2.5 megs per 1,000 records.
The export will have over 500 columns.
Companies Export
----------------
Companies can be exported.
Go to CRM --> Companies and click the "Export" button on the right side.
Use these options for the most complete export:
* File format: CSV
* Include all company domains: Checked.
* All properties and associations on records: Selected.
* Include all association records in each association column.
Calls Export
------------
Go to CRM --> Calls and click the "Export" button on the right side.
Activities Export
-----------------
Activities appear to be emails and such sent to contacts.
These are not in the contacts export.
Lists Export
------------
Various mailing lists.
CiviCRM Import
==============
Importing records, such as from Hubspot.
Contacts Import
---------------
HOWTO import the Hubspot contact export into CiviCRM.
``_
Before doing an export, definitely make a backup of the database,
in case it doesn't work. Best to do on a test database first,
definitely not in production. :)
Perhaps:
* increase the memory_limit and max_execution_time values in php.ini.