Upgrading playSMS

As of today the latest stable release is playSMS 1.4.3. This version is very important, it contains fixes to critical security vulnerability. If you have installed and currently running previous version such as playSMS 1.4.2 then you must upgrade it immediately.

Upgrading playSMS is about replacing all files and folders, and run an SQL DB upgrade. Upgrades in playSMS rarely deleting old files, more like modifying them so that you can just replace them with the new one, unless ofcourse specifically said otherwise.

This article is a guide for howto upgrade previous version of playSMS. You already have a working playSMS and its one-version behind the latest stable release, for example you have 1.4.2 installed and now released 1.4.3.

1. Installed playSMS

For example, your currently installed playSMS is playSMS 1.4.2 and running on Ubuntu Server 18.04.

For example, files and folders locations:

playSMS web path      : /var/www/html/playsms/
playSMS daemon binary : /usr/local/bin/playsmsd
playSMS daemon config : /etc/playsmsd.conf

And for example, the database detail:

MySQL username : playsmsdbuser
MySQL password : strongpasswordhere
MySQL database : playsms
MySQL hostname : localhost

You may have different locations and details. Throughout this article we will use example information details above, but in your own server you must use your own installation details.

You can get installation details by running:

playsmsd check

Or if your playsmsd and playsmsd.conf is not in the PATH, for example they are in your Home Directory, run this:

~/bin/playsmsd ~/etc/playsmsd.conf check

2. Make Backups

Before starting upgrade don’t forget to backup installed version.

Prepare backup location, backup folder can be anything but I like to give label to it, in this case playsms-1.4.2-2005062200 meaning backup for playSMS version 1.4.2 at 6 May 2020 10pm. Let’s prepare it:

mkdir -p ~/backup/playsms-1.4.2-2005062200
cd ~/backup/playsms-1.4.2-2005062200

Backup location is in ~/backup/playsms-1.4.2-2005062200

Backup playSMS files and folders:

cd ~/backup/playsms-1.4.2-2005062200
mkdir html
cp -rR /var/www/html/playsms html
ls -l html

Please note, assumed your playSMS web path is /var/www/html/playsms, see section 1 above.

Backup playsmsd:

cd ~/backup/playsms-1.4.2-2005062200
mkdir bin
cp /usr/local/bin/playsmsd bin
ls -l bin

Please note, assumed your playSMS daemon is in /usr/local/bin/playsmsd, see section 1 above.

Backup database dump:

cd ~/backup/playsms-1.4.2-2006062200
mkdir db
mysqldump -u playsmsdbuser -p playsms --add-drop-table > db/playsms.sql
ls -l db

See section 1 to get installation details (playSMS web path location etc) on our example in this article.

Inspect backup files and folders, make sure they are there in the backup folder. You may continue with upgrade only when you’re certain that old installed version has been backup properly.

3. Getting New Version

Navigate to https://playsms.org/download and click link to download Official Version in SourceForge. Save it somewhere in the server, for example in ~/src/.

mkdir -p ~/src/
cd ~/src/
wget -c "https://sourceforge.net/projects/playsms/files/playsms/Version%201.4.3/playsms-1.4.3.tar.gz/download" -O playsms-1.4.3.tar.gz
ls -l playsms-1.4.3.tar.gz

Every release has file checksum so that you can verify whether what you have downloaded is exactly the same as the one available in the server.

cd ~/src
md5sum playsms-1.4.3.tar.gz

And compare the result with MD5 checksum in SourceForge page:

If not match then re-download.

Ok, next is to extract the package:

cd ~/src
tar -zxf playsms-1.4.3.tar.gz
ls -l playsms-1.4.3

Your new playSMS source path is in ~/src/playsms-1.4.3

4. Let’s Upgrade

4.1. Update Composer

Get composer and install/update composer packages:

cd ~/src/playsms-1.4.3
./getcomposer.sh

Example screenshot of running getcomposer.sh:

If you saw any error then run ./getcomposer.sh again. Errors might happen because we are getting updates from the internet.

Your new playSMS source is ready to replace old version.

4.2. Replace Files and Folders

Go to new version’s source path, replace all files and folders with the new version:

cd ~/src/playsms-1.4.3
cp -rR web/* /var/www/html/playsms/

Please note, assumed your playSMS web path is in /var/www/html/playsms/, see section 1 above. You must copy and replace correct playSMS files and folders.

Above cp command will copy all files and folders from new version (1.4.3) source path in sub-folder web and replace all files and folders on your current playSMS web path.

Other way to do this is by using mc and copy from left tab (new source path) to the right tab (the current playSMS web path), or vice versa. Select all files and folders from source root path and hit F5, select overwrite all files when asked.

Do This Too

Set ownership to non-root user but don’t set to the web-server user. For example your normal user username is komodo (or add a new user) then set ownership of playSMS files and folders to user komodo, here is how:

chown komodo.komodo -R /var/www/html/playsms

Also set permissions to only owner can write them, here is how:

cd /var/www/html/playsms
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

4.3. Replace playSMS Daemon

Replace it:

cd ~/src/playsms-1.4.3
cp daemon/linux/bin/playsmsd.php /usr/local/bin/playsmsd
chmod +x /usr/local/bin/playsmsd

Note that in source folder playsmsd is actually a PHP file playsmsd.php

Do This Too

playsmsd is a script that is running all the time in the background, a daemon. It is important to not running this daemon as root. You must run playsmsd as non-root user.

Also check your crontab configuration if you set it up for playSMS and make sure that the cron is not running the script as root. Check crontab as root:

sudo crontab -e

4.4. Update Database

Attention

  • Files and folders can still be reinstalled when they’re gone. But data in the database may not be.
  • Make sure to have backups, see section 2 above.

Find database upgrade SQL file in new version’s source path:

cd ~/src/playsms-1.4.3
ls db | grep 1.4.3

You will found playsms-upgrade_1.4.2_to_1.4.3.sql in folder db.

Insert that SQL file to current playSMS database:

cd ~/src/playsms-1.4.3
mysql -u playsmsdbuser -p playsms < db/playsms-upgrade_1.4.2_to_1.4.3.sql

Above command will insert SQL commands inside SQL file to current playSMS database. It should be quiet, no error, but if you saw error then maybe theres customizations or you have done the upgrade, this command in particular, more than once.

Verify SQL inserts, login to MySQL console:

mysql -u playsmsdbuser -p playsms

On MySQL console, run this:

select registry_value from playsms_tblRegistry where registry_key='playsms_version'

registry_value should reveal value the new version of playSMS, in this example article it must display 1.4.3

5. Closing

playSMS upgrade is done.

Discuss this article in playSMS Forum: