Virtualmin is among the very few hosting control panels that support Nginx. Until now I configured my client’s servers without a control panel. It’s wasn’t much of an issue, but I received mixed comments about it time to time. Specially from people who are used to shared hosting. So I went searching for a control panel that supports Nginx.
The solution is Virtualmin. Although it doesn’t support Nginx out of the box, it can be enabled with little configuration and a plugin. In this post, I’m going to walk you through the steps of configuring an unmanaged VPS with Virtualmin and Nginx. This configuration will create the platform to host websites based on WordPress and alike. I’ve tested Prosper202 on this setup and found it working without errors.
Before we start, I’m going to assume that you have an unmanaged VPS with root access ready to go. If not, you can get one from best unmanaged VPS providers. Do not try this on a server that is already setup. This tutorial is only intended for fresh servers. And also, it’s important that your VPS operating system is Ubuntu 14.04 x64 bit. Otherwise Virtualmin installation will fail. If you want to save all the trouble going through this tutorial, you can hire me to do it for you.
[product_slider category=”installations” orderby=”date” order=”desc” latest=”1″ style=”traditional”]
So let’s start by removing some packages that might have already installed on the server with OS.
apt-get purge apache2* bind9* samba*
Your server’s hostname should be a fully qualified domain name (Such as example.com or sub.example.com) for Virtualmin to work. You can check your current hostname by running following command.
hostname -f
That should output your current hostname. If it’s something other than your domain or a sub-domain, you should fix it before going any further. you can do it by following ‘Change Ubuntu 14.04 Hostname from Command-line‘ tutorial.
Installing Virtualmin
Assuming you have a proper hostname setup for your server, let’s download Virtualmin install script,
wget http://software.virtualmin.com/gpl/scripts/install.sh
Run the script you just downloaded with,
sh /root/install.sh
Installation process will take few minutes to complete. The script will install Apache2 as http server by default. Since we’re going to use Nginx, we should stop Apache2.
service apache2 stop
Now it’s safe to install Nginx,
apt-get install nginx
Following command will add two plugins to Virtualmin that enable Nginx support,
apt-get install webmin-virtualmin-nginx webmin-virtualmin-nginx-ssl
Installing PHP 5 modules
You’ll need some PHP 5 modules installed on your server to host php applications error free. So lets install the lot,
apt-get install memcached mcrypt php5-memcache php5-mysqlnd php5-xmlrpc php5-curl php5-gd php5-cli php-pear php5-dev php5-imap php5-mcrypt
And enable the php5-mcrypt module,
php5enmod mcrypt
Virtualmin Post-Installation Wizard
You can access Virtualmin on following URL with your root password. Make sure you replace example.com with your domain name. Your DNS should be propagated for this to work.
https://example.com:10000/
After successful login, you’ll be taken to the Virtualmin Post-Installation Wizard. It is pretty self-explanatory, just remember to select MySQL as database server and Only store hashed passwords as password storing method. You’ll be good with default selections for all other steps.
Configuring Virtualmin to enable Nginx
Although Virtualmin is successfully installed and Apache2 web server has been stopped, Virtualmin is still configured use to Apache2. To change that please go to System Settings -> Features and Plugins from your Virtualmin dashboard and disable (un-check) following features.
- Apache website
- SSL website
- DAV Login
- Mailman
- Protected web directories
- AWstats reporting
- Subversion repositories
And enable following,
- Nginx website
- Nginx SSL website
Save the changes and switch to Webmin from top-left corner. Then go to System -> Bootup and Shutdown. Check apache2 and click Disable On Boot. Then check nginx and click Start On Boot. That’ll make sure Nginx is started with system reboots. Your Virtualmin should be ready to host websites with Nginx as the web server at this point. More on that later.
Hi Tharindu! i almost get it! but i can´t fing “DAV Login” “Subversion repositories” any suggestion? Thanks!!
If it’s not in the list, it’s already disabled. Don’t worry about it.
Nice post but i am stuck at the following line:
sudo apt-get install webmin-virtualmin-nginx webmin-virtualmin-nginx-ssl
It gives me following error:
root@trackingstats:~# sudo apt-get install webmin-virtualmin-nginx webmin-virtualmin-nginx-ssl
Reading package lists… Done
Building dependency tree
Reading state information… Done
E: Unable to locate package webmin-virtualmin-nginx
E: Unable to locate package webmin-virtualmin-nginx-ssl
root@trackingstats:~# sudo service apache2 stop
* Stopping web server apache2 *
root@trackingstats:~# sudo apt-get install nginx
Reading package lists… Done
Building dependency tree
Reading state information… Done
nginx is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 25 not upgraded.
root@trackingstats:~# sudo apt-get install webmin-virtualmin-nginx webmin-virtualmin-nginx-ssl
Reading package lists… Done
Building dependency tree
Reading state information… Done
E: Unable to locate package webmin-virtualmin-nginx
E: Unable to locate package webmin-virtualmin-nginx-ssl
root@trackingstats:~#
Can you help??
Try running apt-get update and then running it above commands again. If it doesn’t solve the issue, follow these instructions to add Virtualmin to Sources list.
Hello Bro,
I started from a fresh droplet in Digital ocean and successfully installed Virtualmin and Ngnix.I also created a new virtual server and consequently uploaded prosper202 files in public_html folder that was created during creation of virtualserver.Also changed DNS servers with the registrar and added the domain in Digital ocean droplet.However when i type the domain name, it gives me that default message “Ngnix is working fine”.It doesn’t take me to the prosper configuration page.I input Database information manually in 202-config.php file and uploaded it back to the public_html folder,however i am not sure why it is not working.Kindly tell me what can be the issue.
Here are some screenshots.
http://i66.tinypic.com/5ttcad.png (Virtual Sever Dashboard)
http://i64.tinypic.com/9gezxz.png (FTP Client)
http://i68.tinypic.com/j0up36.png (Message Displayed on loading the website)
i have created an Nginx configuration file also.Now it shows file not found error.Could you provide configuration file for that purpose.
You don’t have to create Nginx configuration file. It’s there already. In Virtualmin, go to System Settings > Re-Check Configuration and check what’s wrong with your server.