Setup Social Publishing CMS (Content Managemnet System) Using Pligg

Pligg is an open-source CMS social publishing software that encourages visitors to register on your website so that they can submit content and connect with other users. It is used to setup your own social publishing community in just minutes.


In this article, I use CentOS 6.4 to setup this website. My hostname and IP Address are and respectively. Change these values as per your setup.


Install the following prerequisites to install and configure Pligg:

[root@server ~]# yum install mysql mysql-server httpd php php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring wget unzip -y

Start/Restart MySQL and Apache services now:

[root@server ~]# /etc/init.d/mysqld start
[root@server ~]# /etc/init.d/httpd start
[root@server ~]# chkconfig mysqld on
[root@server ~]# chkconfig httpd on

Create MySQL Root user password:

[root@server ~]# /usr/bin/mysql_secure_installation 


In order to log into MySQL to secure it, we'll need the current
password for the root user.  If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

Set root password? [Y/n] y
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!

By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] 
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] 
 ... Success!

By default, MySQL comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] 
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] 
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL!

Create MySQL Database and user for Pligg:

Here I create a database ‘pliggdb’ and user ‘pliggadmin’ with password ‘centos’:

[root@server ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.69 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database pliggdb;
Query OK, 1 row affected (0.01 sec)

mysql> GRANT ALL PRIVILEGES ON pliggdb.* TO 'pliggadmin' IDENTIFIED BY 'centos';
Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> exit

Open the Apache default port 80 through your firewall/router:

[root@server html]# vi /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
-A INPUT -p udp -m state --state NEW --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW --dport 80 -j ACCEPT
-A INPUT -p udp -m state --state NEW --dport 53 -j ACCEPT
-A INPUT -p tcp -m state --state NEW --dport 53 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited

Restart the iptables to save the changes:

[root@server html]# /etc/init.d/iptables restart

Disable SELinux and reboot your system:

[root@server ~]# vi /etc/sysconfig/selinux 
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.

Download Pligg

Download the latest Pligg software here. Extract the downloaded file using the following command:

[root@server ~]# unzip Pligg\ CMS\

This will create a directory called pligg in your current directory. Move all the contents of this directory to your Apache html folder(/var/www/html).

Now we have to rename the following files to make it work. Change to the html directory and enter the following commands to rename the necessary files:

[root@server ~]# cd /var/www/html/
[root@server html]# mv languages/lang_english.conf.default languages/lang_english.conf
[root@server html]# mv libs/dbconnect.php.default libs/dbconnect.php
[root@server html]# mv settings.php.default settings.php

Now set required permissions to the following folders as shown below:

[root@server html]# chmod 777 admin/backup/
[root@server html]# chmod 777 avatars/groups_uploaded/
[root@server html]# chmod 777 avatars/user_uploaded/
[root@server html]# chmod 777 cache/
[root@server html]# chmod 777 cache/admin_c/
[root@server html]# chmod 777 cache/templates_c/*.*
[root@server html]# chmod 777 templates/*.*
[root@server html]# chmod 777 languages/*.*
[root@server html]# chmod 666 libs/dbconnect.php
[root@server html]# chmod 666 settings.php

Begin Installation

Navigate http://ip-address or domain-name/install/index.php and follow the on-screen instructions.

Pligg Readme - Mozilla Firefox_001


Go to Install menu and select the language.

Pligg CMS Installer - Mozilla Firefox_002

Click Next.

Pligg CMS Installer - Mozilla Firefox_003

Enter the Database name, username and password. Click Check Settings to verify.

Pligg CMS Installer - Mozilla Firefox_004

If you entered the valid database credentials, the database connection should established.

Pligg CMS Installer - Mozilla Firefox_005

Now the necessary tables will be created. Enter the administrative account details and click Create Admin Account.

Pligg CMS Installer - Mozilla Firefox_006

You’re done now. Your Pligg site is successfully installed.

Pligg CMS Installer - Mozilla Firefox_007

Post Installation

Delete the Install folder:

[root@server html]# rm -fr install/

Change the permission of “/libs/dbconnect.php” file back to 644:

[root@server html]# chmod 644 libs/dbconnect.php

Configure Pligg

Next login to admin console to start configure Pligg:

Login | My Site - Mozilla Firefox_008

This is how your admin console looks.

My Site Admin Panel - Mozilla Firefox_009

That’s it. Customize your site as per your liking by adding modules, widgets and templates etc. If getting trouble to open any modules, check the permissions.

This is how your Homepage looks.

My Site - Your Source for Social News and Networking - Mozilla Firefox_010

To know more about Pligg installation, configuration, user guides and trouble shooting, visit the official documentation forum.