This article is the first in a series that will provide step-by-step instructions to help an ASP.NET developer set up a machine for testing and potentially also developing ASP.NET applications on Suse Linux 10. This article assumes you are not already a Linux expert and will be tailored to help you get set up and running so you can learn about Linux and mono, apache web server configuration, and the open-source databases PostgreSQL and MySQL.
My reasons for picking Suse Linux are that Suse Linux and mono are both products sponsored by Novell and though there are a number of great distributions of Linux out there, I have found Suse to be one of the easiest to install and setup for ASP.NET using mono/apache.
Suse has definitely become my favorite but once you get a little experience you should try out a few Linux distributions and make your own choice.
If you are not sure you want to commit one of your machines to install Linux, you can also try the bootable Mono-Live CD created by Joseph Hill and based on Ubuntu Linux. It’s a great way to get your first exposure to Linux and Mono without dedicating any hardware.
You can also install Suse easily to dual boot with Windows XP. If you have a decent amount of free space, the Suse installer will resize the Windows partition to make room for itself and after installation, you will be able to choose Suse or Windows during bootup though Suse will be the default.
Another option is to use a virtual machine under Virtual PC 2004 or under Virtual Server 2005, though this requires that you have one of those 2 programs and a beefy box to run it on since you will be sharing hardware between the host operating system and the guest virtual machine.
In fact, I will be using Virtual Server 2005 to install Suse 10 for the purposes of this article. This will make it easier for me to get screenshots of the installation process and in the end, I can back up this new Suse 10 Virtual machine on a dual-layer DVD.
If you want to know what works and what doesn’t in a Virtual PC or Virtual Server, see http://vpc.visualwin.com/ a rule of thumb I have seen for Linux is don’t configure the virtual machine with more than 500 MB of RAM.
Download and burn the iso images for the 5 CDs from here
Boot from the cd and you will be greeted with this screen. Choose Installation.
Be patient while it begins this took a long time on a virtual machine depending on your hardware your mileage may vary.
If you want to know what it’s doing press the escape key.
- Choose your language
- Accept the license agreement.
- Choose your time zone.
- Choose your default desktop.
We are going to install both Gnome and KDE so you will be able to use either one whenever you want but I recommend you choose KDE as the default if you are new to Linux. One feature it has that is very valuable to someone coming from a Windows background is the File Manager – Super User mode.
You will want to use this for editing configuration files so that you will have permission to open them by right-clicking and using a graphical text editor. Maybe the Gnome experts out there can tell me how this is done in Gnome but I haven’t found it yet.
I can browse OK on Gnome but when I try to edit it won’t let me so I have to go to the shell and use the sudo gedit filename to open it with permission. Easy when you know how but for a Windows guy it’s nice to be able to open and edit easily from the file manager.
Now we are going to click the Software link to choose some things we want to install including Gnome.
Check the box next to Gnome System then highlight the web server section and choose the things you see checked here like Apache web server.
This view is scrolled down so you can see a few more things to check like MySQL. Unfortunately, all the things you need for PostgreSQL do not seem to be available during installation but I’ll tell you how to get them later.
Now highlight the C Compiler section and check the boxes you see here. We will need these things later when we want to build mono from source code.
This view is scrolled so you can see a few more things to check like Subversion, the source control tool par excellent.
Not shown is the Mono/CLR section, scroll down the section list and check the box to get everything for that one, then click the Accept button and you will see a dialog informing you of some additional things that will be installed to satisfy dependencies.
Now you are ready to let the installation begin. Click Accept.
You will see this screen next. If you want to know what it’s doing click the Details tab. The segmented bar on the right indicates progress, each segment corresponds to a CD.
After a good while you choose a root password. You should choose a strong one and write it down until you have it memorized. root is the admin user and you will need this password for all administration tasks.
See some of our other Coding guides:
Next, it is time to configure network settings. If you have a DHCP server available you can skip this part and it will get an IP address automatically. I don’t use one at home so I will set a fixed ip address. We are going to use this as a web server after all so a fixed address seems appropriate. Click the Network Interfaces link to proceed.
Hopefully, your network hardware was detected, click Edit to configure it.
Enter an appropriate address for your local network.
Click the Host Name button shown above and you will see the screen below where you can enter a name for this machine, a domain name, and the IP address of a DNS server. Enter appropriate settings and click OK. I put isengard for the hostname and middleearth.home for the domain. The name server IP address is likely the IP address of your router in a typical home network.
Next, click the Routing button and enter your default gateway, usually the IP address of your router.
- Click OK.
- Click Next here.
- Click Next here as well.
- Skip the internet test for now.
- Accept the default here and click Next.
Now create a normal user account. You will use this account for normal use and only elevate to root as needed.
You can accept the defaults here or click the monitor and graphic settings if you want to tweak them before proceeding.
That’s it, you now have Suse 10 installed and can log in as a normal user.
Now try the web browser (Firefox) and see if you can get to the internet. If not and you are pretty sure that your network configuration is correct then most likely you have the ipv6 problem that I always have with every Linux distro because they usually come configured to use the new ipv6 internet addresses in addition to the normal ipv4.
This totally freaks out my router so I always have to disable it. To do so, browse the menu and go to System > File Manager > File Manager – Super User Mode. You will be prompted for the root password.
Now browse to the /etc folder and look for the file modprobe.conf, right-click the file, and open it in a text editor. You should see options for at least Kwrite and Kate, if not Text Editor (Gnome editor). Any of these will do. Now scroll the file and look for:
alias netpf10 ipv6
and change it to
alias netpf10 off
Save and reboot and hopefully now you can access the internet.
To get PostgreSQL and a few other features not included on the CDs, follow the instructions in this article.
Some additional tips for enhancing Suse 10 are suggested by Robert Love. These are optional so if they look too complicated no worry, visit them later after you get more familiar with Linux.
Now you have a nice new playground, poke around, and have fun. You are currently using the KDE desktop but at the login screen, you can choose a Gnome session from the menu and log in using the Gnome desktop.
Try them both and see the cool things already on there like the MonoDevelop IDE and MonoDoc documentation. One thing you will notice is when using the KDE desktop a single click does what a double click would do using Windows. The Gnome desktop is a little more similar to Windows in this regard.
What you don’t currently have installed is mod_mono which is needed for running ASP.NET under Apache, oddly it didn’t come with the CDs or at least I couldn’t find it. One option is to go to the mono site and get the latest packages of mono and upgrade as well as get mod_mono if you want to work with the release code.
Download the .rpm files then go to File Manager – Super User mode and browse to wherever you saved the .rpm files. You can install them by right-clicking and choosing Actions > Install With YaST
You may have to install them in the correct order, if you get a dependency error just install the one it complains about and try again.
To be honest, I haven’t tested the latest releases yet, though I have installed them on a machine, I usually compile it from source code, it’s easy when you know how, and watching all the code go by while it compiles will hypnotize you and make you want to learn more about Linux.
If you are serious about working with mono and perhaps needing to port your application or I should say bring it into mono compatibility you will be better off working in development with the latest mono code from the Subversion source code repository. That way if you encounter a bug in mono you will be in a better position to report it and get the fix as soon as it is available as well as get new features and enhancements as they become available.
I will say for 1.1 framework web applications everything is pretty much there and working well and while the 2.0 implementation is not quite ready for prime time there is substantial progress.
That’s it for this part of the series. Stay tuned for the next parts where we will build mono from the source code and setup mojoPortal using apache2 and mod_mono.