CentOS

From Server Knowledge Base
Jump to: navigation, search

/etc/httpd/conf/httpd.conf is the CentOS equivalent of sites-available/enabled.

Additional Resources/Repository

To show package versions, do yum list packagename

Repository location: /etc/yum.repos.d/

Download, enable and install Atomic repository:

cd / ; wget -q -O - http://www.atomicorp.com/installers/atomic | sh

EPEL Repository

cd /usr/src ; wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm

yum repolist
yum list | grep epel

Disable repo

vim /etc/yum.repos.d/example.repo

Set enabled to = 0

Automatic Bug Reporting Tool - abrt

If you would rather not receive these e-mails, here is a guide on how to disable them.

Clear bash history

history -c

CPU#0: NMI appears to be stuck

This link provides details on the error from Centos/Redhat:

testing NMI watchdog ... <4><br>
WARNING: CPU#0: NMI appears to be stuck (0->0)!

This issue is caused by an implementation issue with the Xen hypervisor and can be safely ignored. (BZ#500845)

General Commands

To search and install software, use:

yum search softwarename
yum install softwarename
yum grouplist

#Check installed software, press space to scroll
yum list installed | more

To check the hostname, type just hostname. To set it type hostname WhatYouWantItToBe

To forcibly remove a file and not have it prompt you type y for yes to delete a file, folder or each individual file in a folder, run:

rm FileOrFolder -rf

Increase File Handle Limit

Mitigate the BEAST attack on CentOS 6 with Apache 2.2.15

Disable SSL compression
Further details

SSLHonorCipherOrder On
SSLProtocol -all +TLSv1 -SSLv2

This may work in /etc/httpd/conf.d/ssl.conf:

SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW

These did not work for us.

vim /etc/httpd/conf/httpd.conf

#SSLCipherSuite RC4-SHA
#SSLCipherSuite RC4-SHA:HIGH:!ADH
#SSLCipherSuite RC4:HIGH:!MD5:!aNULL:!EDH
#SSLCipherSuite RC4-SHA:HIGH:!MD5:!aNULL:!EDH:!ADH
#SSLCipherSuite ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH

Below may mitigate the SSL CRIME attack:

vim /etc/sysconfig/httpd

Enter this into bottom of the file:

export OPENSSL_NO_DEFAULT_ZLIB=1
service httpd restart

https://bugzilla.redhat.com/show_bug.cgi?id=857051

Securing by disabling unneeded services

Software

mcrypt

Use one of the following:

yum search mcrypt
yum install libmcrypt-devel
yum install libmcrypt.x86_64
yum install php-mcrypt.x86_64

You may need to enable the EPEL repository first, which can be done using this.

suphp on CentOS 6

wget http://www.suphp.org/download/suphp-0.7.1.tar.gz ; tar -zxf suphp-0.7.1.tar.gz
cd suphp-0.7.1

yum install gcc gcc-c++ httpd-devel
yum install make

./configure --with-apr=/usr/bin/apr-1-config --with-apache-user=apache --prefix=/usr
make
make install

That should have installed it correctly, now you need to edit the conf files.

vim /etc/httpd/conf/httpd.conf

Add this below line into the file above:

LoadModule suphp_module modules/mod_suphp.so

In the <Directory /> section:

suPHP_Engine on
suPHP_AddHandler application/x-httpd-php .php

If single site then add this to directory also.

suPHP_UserGroup <user> <group>

vim /etc/httpd/conf.d/php.conf

AddType application/x-httpd-php .php

vim /usr/etc/suphp.conf

[global]
logfile=/var/log/httpd/suphp.log

loglevel=info
webserver_user=apache
docroot=/var/www

allow_file_group_writeable=false
allow_file_others_writeable=false
allow_directory_group_writeable=false
allow_directory_others_writeable=false

check_vhost_docroot=false
errors_to_browser=false
env_path=/bin:/usr/bin
umask=0077
min_uid=100
min_gid=100

[handlers]
x-httpd-php="php:/usr/bin/php"
application/x-httpd-php="php:/usr/bin/php-cgi"

x-suphp-cgi="execute:!self"

Further information/help and guide

MySQL Support in PHP5

To get MySQL support in PHP, install the php-mysql package. It's a good idea to install some other PHP5 modules as well as you might need them for applications. You can search for available PHP5 modules like this:

yum search php

Pick the ones you need and install them like this:

yum install php-mysql php-gd php-imap php-ldap php-mbstring php-odbc php-pear php-xml php-xmlrpc
*Then restart Apache2*
/etc/init.d/httpd restart

mysqli

Alternatively you can use:

yum install php-soap.x86_64

Install MSSQL PHP Extension on CentOS 6

phpMyAdmin

phpMyAdmin is a web interface through which you can manage your MySQL databases. First enable the RPMforge repository on your CentOS system as phpMyAdmin is not available in the official CentOS 6.1 repositories:

Import the RPMforge GPG key:

rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt

On x86_64 systems:

yum install http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

On i386 systems:

yum install http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm

phpMyAdmin can now be installed as follows:

yum install phpmyadmin

Now configure phpMyAdmin by changing the Apache configuration so that phpMyAdmin allows connections not just from localhost (by commenting out the <Directory "/usr/share/phpmyadmin"> section):

vi /etc/httpd/conf.d/phpmyadmin.conf

#
#  Web application to manage MySQL
#

#<Directory "/usr/share/phpmyadmin">
#  Order Deny,Allow
#  Deny from all
#  Allow from 127.0.0.1
#</Directory>

Alias /phpmyadmin /usr/share/phpmyadmin
Alias /phpMyAdmin /usr/share/phpmyadmin
Alias /mysqladmin /usr/share/phpmyadmin

Next we change the authentication in phpMyAdmin from cookie to http:

vi /usr/share/phpmyadmin/config.inc.php

[...]
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'http';
[...]

Restart Apache:

/etc/init.d/httpd restart

Afterwards, you can access phpMyAdmin under IPAddress/phpmyadmin/ in your browser.

OS Ticket

If you get the below error on Cent OS when going to:

  • Admin Panel
  • Emails tab
  • click the email account
  • set it to Enabled and to use IMAP
  • then click Save Changes

"IMAP doesn't exist. PHP must be compiled with IMAP enabled."

Do the following in SSH:

yum install php-imap
/etc/init.d/httpd restart

You may also need php-imap.x86_64

Logwatch

CentOS Desktop

yum groupinstall 'Desktop'

Edit /etc/inittab and change the runlevel to 5, otherwise the desktop environment will not be brought up.

cat /etc/inittab
...
id:5:initdefault:

Then reboot your centos 6 host for the settings to take effect. Before the next step ensure you have perl* taken out of /etc/yum.conf . Alternate Guide

yum install gnome-desktop.x86_64 gnome-games.x86_64 gnome-games-extra.x86_64 gnome-gmail.noarch gnome-media-apps.x86_64 gnome-desktop-devel.x86_64 gtk-recordmydesktop.noarch rdesktop.x86_64 recordmydesktop.x86_64 control-center.x86_64 control-center-extra.x86_64 desktop-effects.x86_64 mousetweaks.x86_64 yelp.x86_64 vnc-server tigervnc-server.x86_64 tigervnc-server-applet.noarch tigervnc-server-module.x86_64


Icecast with ezstream on CentOS 6

Check uname -a or uname -r first to ensure which kernel version you need to install for (i386 or .x86_64).

yum update
vim /etc/yum.conf #Remove perl* from the exclude line
yum install git-all.noarch git-cvs.noarch git-daemon.x86_64 git-email.noarch git-svn.noarch
yum groupinstall 'Development Tools'
yum install libxml2.x86_64 libxml2-devel.x86_64 speex-devel libtheora-devel
yum install libogg.x86_64 libogg-devel.x86_64 python-ogg.x86_64 python-ogg-devel.x86_64 libvorbis.x86_64 libvorbis-devel.x86_64
yum install libshout-devel.x86_64
yum install libshout.x86_64 #(or)
wget http://downloads.us.xiph.org/releases/libshout/libshout-2.2.2.tar.gz ; gunzip libshout-2.2.2.tar.gz ; tar -xvf libshout-2.2.2.tar
cd libshout-2.2.2 ; ./configure ; make ; make install ; cd /
yum install cmake.x86_64 cppunit-devel.x86_64 cppunit.x86_64
#can be skipped
#yum install taglib.x86_64 #or
#wget http://developer.kde.org/~wheeler/files/src/taglib-1.7.1.tar.gz ; gunzip taglib-1.7.1.tar.gz ; tar -xvf taglib-1.7.1.tar
#cd taglib-1.7.1 ; cat INSTALL
#run through those steps if possible
wget http://downloads.xiph.org/releases/ezstream/ezstream-0.5.6.tar.gz ; gunzip ezstream-0.5.6.tar.gz ; tar -xvf ezstream-0.5.6.tar
cd ezstream-0.5.6 ; ./configure ; make ; make install ; cd /
wget http://sourceforge.net/projects/lame/files/lame/3.99/lame-3.99.5.tar.gz ; gunzip lame-3.99.5.tar.gz ; tar -xvf lame-3.99.5.tar
cd lame-3.99.5 ; ./configure ; make ; make install ; cd /
wget http://sourceforge.net/projects/sox/files/sox/14.4.0/sox-14.4.0.tar.gz ; gunzip sox-14.4.0.tar.gz ; tar -xvf sox-14.4.0.tar
cd sox-14.4.0 ; ./configure ; make ; make install ; cd /
yum install libxslt-python.x86_64 libxslt.x86_64 libxslt-devel.x86_64
wget http://downloads.xiph.org/releases/icecast/icecast-2.3.2.tar.gz ; gunzip icecast-2.3.2.tar.gz ; tar -xvf icecast-2.3.2.tar
cd icecast-2.3.2 ; ./configure ; make ; make install ; cd /

cd /var/log
useradd icecast
mkdir icecast
chown -R icecast:icecast /var/log/icecast/ #(or chown -R nobody:nobody /var/log/icecast/ )
which icecast;
updatedb
locate icecast.xml
cd /usr/local/etc/
vim icecast.xml
<logging>
<accesslog>/var/log/icecast/access.log</accesslog>
<errorlog>/var/log/icecast/error.log</errorlog>
cp /usr/local/share/examples/ezstream/ezstream_mp3.xml /usr/local/etc
find /usr/local/etc/musicdirectory -name *mp3 -type f > /usr/local/etc/playlist-filename.txt

The filename above (/usr/local/etc/playlist-filename.txt) that you specify needs to match the file you specified in the ezstream_mp3.xml file. The find command above is an example.

I use the below syntax so I do not have a random order and sort alphabetically by Artist and order by Track Order:

find /usr/local/etc/mu -name *mp3 -type f | sort -g > /usr/local/etc/playlist-icecast.txt

vim ezstream_mp3.xml
#specify the full filepath to your playlist.txt file

Ensure you have:

- In ezstream_mp3.xml the URL in the form http://0.0.0.0:port/mountpoint and the filename as the full filepath of your playlist .txt, .m3u or .ogg

- In icecast.xml the accesslog and errorlog should just be /access.log and /error.log and the logdir should just be /var/log/icecast

su icecast
icecast -c /usr/local/etc/icecast.xml
#Close the SSH session but do not CTRL + C the operating. Open another SSH session

ezstream -c /usr/local/etc/ezstream_mp3.xml
#Close the SSH session but do not CTRL + C the operating.

Open another SSH session to do any further work on the server and the processes will continue to run in the background. Add the following command to /etc/rc.local to have it start on boot:

icecast -c /usr/local/etc/icecast.xml -b

Additional ezstream/icecast guides:

Installing Sox from yum, and compiled LAME and Ezstream manually: http://wiki.radioreference.com/index.php/Ezstream_on_linux

http://code.google.com/p/icecast-now-playing-script/wiki/How_to_use
http://jude.im/now
http://icecast.imux.net/
http://mpd.wikia.com/wiki/Icecast2
http://koorenneef.nl/content/run-your-own-online-radio-station-icecast2-and-ezstream-howto
Config
Example
Icecast and
Trunk

http://icecast.imux.net/viewtopic.php?t=6903&sid=7c4b5bf86c5597d755b1256bb4a0271a
http://www.tech-faq.com/how-to-stream-audio.html

Icegenerator

yum install id3lib.x86_64 id3lib-devel.x86_64
wget http://www.becrux.com/pages/projects/icegenerator/icegenerator-0.5.5-pre2.tar.gz ; gunzip icegenerator-0.5.5-pre2.tar.gz
tar -xvf icegenerator-0.5.5-pre2.tar ; cd icegenerator-0.5.5-pre2 ; ./configure --with-id3 --with-mysql ; make ; make install


PHP Motion + JW Player

Reset admin password

Ensure you already have PHP 4.3+ (including support of CLI), MySQL, LAME MP3 Encoder, Libogg + Libvorbis, Mencoder + Mplayer, FFMpeg-PHP, GD Library 2+ and a CGI-BIN. Mencoder comes with mplayer. Various install instructions for these above tools.

The below instructions will install ffmpeg, ffmpeg-php, mplayer + mencoder and flvtool.

CentOS 6

rpm -Uvh http://mirrors.coreix.net/fedora-epel/6/x86_64/epel-release-6-7.noarch.rpm
vim /etc/yum.repos.d/subhosting.repo

Enter the following into that file:

[SubHosting]
name=SubHosting Packages CentOS 6 - $basearch
baseurl=http://dl.subhosting.net/yumrepo/centos/6/$basearch/
enabled=1
gpgcheck=0

Then do:

yum -y install ffmpeg mplayer --exclude "*.i386"
/scripts/installruby
gem install flvtool2
yum -y install gpac gpac-libs
yum -y install ffmpeg-devel
wget http://downloads.sourceforge.net/ffmpeg-php/ffmpeg-php-0.6.0.tbz2 ; tar xjf ffmpeg-php-0.6.0.tbz2 ; cd ffmpeg-php-0.6.0
phpize ; ./configure ; make ; make install

It will then show something like Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-00000000/ . So then do:

vim /usr/local/lib/php.ini
/extension_dir

extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-00000000"
extension="ffmpeg.so"

php -i | grep ffmpeg

It should then show:

ffmpeg
ffmpeg-php version => 0.6.0-svn
ffmpeg-php built on => Jul 19 2012 15:07:59
ffmpeg-php gd support  => disabled
ffmpeg libavcodec version => Lavc52.123.0
ffmpeg libavformat version => Lavf52.111.0
ffmpeg swscaler version => SwS0.14.1
ffmpeg.allow_persistent => 0 => 0
ffmpeg.show_warnings => 0 => 0

Following are the file system paths of tools that you installed:

ffmpeg: /usr/bin/ffmpeg
mplayer: /usr/bin/mplayer
mencoder: /usr/bin/mencoder
flvtool2: /usr/bin/flvtool2
MP4Box: /usr/bin/MP4Box

Complicate ffmpeg instructions <- Not really necessary.

vim /etc/yum.conf

Take out ruby* from exclude= line and save the file

yum -y install flvtool2.noarch
vim /etc/yum.conf

Take out apache2* and httpd* from exclude= line and save the file. From this link you get:

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/mod_flvx-0-0.1.20100525git.el6.x86_64.rpm
rpm -ivh mod_flvx-0-0.1.20100525git.el6.x86_64.rpm --nodeps

Do not configure these manually, especially don't fiddle with glibc, can of worms and fail ahoy:

config(mod_flvx) = 0-0.1.20100525git.el6
httpd-mmn = 20051115
libc.so.6()(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)

rtld(GNU_HASH), part of glibc

Doing yum install mod_flvx.x86_64 will ask you to downgrade httpd/apache from 2.2.22 to 2.2.15-15 ( 2.2.15-15.el6.centos.1 ) so be careful with this or do not do this.

Alternate mod_flvx guides: 1, 2, 3 and 4

Then follow these instructions to install PHP Shield. You may need 757, 775 or 777 for the following folders: addons, classes, logs, pictures, setup, temp and uploads.

Run through the installer either via your domain name or on a cPanel server do serverip/~ftpuser . Then after it has all been completed do:

cd /documentroot
#e.g. cd /home/DomainWithoutSuffix/public_html
rm -y setup/ -R

/etc/init.d/httpd restart

CentOS 5

These instructions will install ffmpeg + ffmpeg-devel + ffmpeg-php, mplayer, mencoder, flv2tool and LAME MP3 encoder.

uname -i

rpm -Uvh http://mirrors.coreix.net/fedora-epel/5/x86_64/epel-release-5-4.noarch.rpm
yum -y install ffmpeg mplayer --exclude "*.i386"
yum -y install gpac gpac-libs
yum -y install ffmpeg-devel
wget http://downloads.sourceforge.net/ffmpeg-php/ffmpeg-php-0.6.0.tbz2 
cd to the directory, potentially /usr/src
tar xjf ffmpeg-php-0.6.0.tbz2 ; cd ffmpeg-php-0.6.0
yum -y install php-devel gcc.x86_64 ffmpeg-devel.x86_64
vim ffmpeg_frame.c

Replace all entries of PIX_FMT_RGBA32 with PIX_FMT_RGB32

cp -aP ffmpeg_frame.loT ffmpeg_frame.lo
phpize ; ./configure ; make ; make install

/extension_dir

<pre>extension_dir = "/usr/lib64/php/modules/"
extension="ffmpeg.so"
cd /usr/local/src/
wget http://www.mplayerhq.hu/MPlayer/releases/codecs/essential-20071007.tar.bz2
tar xjvf essential-20071007.tar.bz2
mv /usr/local/src/essential-20071007/ /usr/local/lib/codecs/
chmod -R 755 /usr/local/lib/codecs/

cd /usr/local/src/
wget http://www1.mplayerhq.hu/MPlayer/releases/codecs/all-20071007.tar.bz2
tar jxvf all-20071007.tar.bz2
mv /usr/local/src/all-20071007/ /usr/local/lib/codecs/
chmod -R 755 /usr/local/lib/codecs/

The above steps have now placed the file from /usr/local/src/all-20071007/ into /usr/local/lib/codecs/all-20071007

yum install git yasm.x86_64 yasm-devel.x86_64
cd ..
svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer
cd /usr/local/mplayer
svn update
./configure
make && make install

yum -y install flvtool2.noarch mod_flvx.x86_64 yamdi.x86_64
yum -y install lame.x86_64 lame-devel.x86_64
/etc/init.d/httpd restart

ffmpeg

vi /etc/yum.repos.d/dag.repo

Add the following text to the file.

[dag]
name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
gpgcheck=1
enabled=1

Then do:

rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
yum install ffmpeg ffmpeg-devel
ffmpeg -formats

Unable to find packages/software

Check /etc/yum.conf and remove the software* exclude entry. By default a cPanel CentOS server may have the following within that file:

exclude=apache* bind-chroot courier* dovecot* exim* filesystem httpd* mod_ssl* mydns* mysql* nsd* perl* php* proftpd* pure-ftpd* ruby* spamassassin* squirrelmail*

Uninstall Postfix on psa (Plesk)

You can do this either via:

  • SSH using the command /usr/local/psa/admin/bin/autoinstaller then selecting Qmail instead of Postix (normally option 13 instead of 14) or
  • via the GUI interface for the control panel:

Server Management - Tools & Utilities/Settings > Panel - Updates and Upgrades > Add Components - Untick "Show only not installed components" > Different mailservers - Qmail Mailserver

Update PHP 5.1 to PHP 5.3 on CentOS 5

Update MySQL to 5.5 with Plesk

This is really only possible on CentOS 5, as of 08/03/2013

wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
rpm -Uvh remi-release-6*.rpm
vim /etc/yum.repos.d/remi.repo

Set the top [remi] to enabled=1

yum list mysql-server

A script to get the latest MySQL 5.5 for RHEL6

Alternatively, you can use the Atomic repo, however you must disable it afterwards, otherwise it may remove Plesk when it auto-updates.

VNC

yum install vnc-server tigervnc-server.x86_64 tigervnc-server-applet.noarch tigervnc-server-module.x86_64 xterm.x86_64
su -
adduser testuser
passwd testuser #sets users password
su testuser
vncpasswd #sets VNC password and creates the directory /home/testuser/.vnc
exit
vim /etc/sysconfig/vncservers

Add in:

VNCSERVERS="1:testuser"
VNCSERVERARGS[1]="-geometry 1280x800"

/sbin/service vncserver start
#Once complete run
/sbin/service vncserver stop
su testuser
cd /home/testuser/.vnc
ls -lah
vim xstartup

#!/bin/sh
# Add the following line to ensure you always have an xterm available.
( while true ; do xterm ; done ) &

xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
twm &

Now go to http://yourIPaddress:5801 . Alternate Instructions: 1, 2, 3, 4

When searching for software or loading any program, you will get: "the permission of the setuid helper is not correct". To fix this do cd /etc/lib64/dbus-1 and run chmod 4750 dbus-daemon-launch-helper (default is 750).

When running /sbin/service vncserver start if it says:

Warning: hostname:1 is taken because of /tmp/.X1-lock
Remove this file if there is no X server hostname:1
A VNC server is already running as :1 [FAILED]

to kill the process, run vncserver -kill :X (X being the number of the one it believes is running, e.g :1). If this fails with:

Can't find file /root/.vnc/hostname:1.pid

You'll have to kill the Xvnc process manually. To do this do:

cd /tmp
rm .X1-lock
cd /tmp/.X11-unix/
rm X1
/sbin/service vncserver start

Troubleshooting Help: 1, 2, 3, 4, 5, 6

Website compatibility for blind people (In Development)

This needs work as it needs additional configuration steps.

yum install php5-dev php-pear php-pdo.x86_64 pdo_pgsql php-pgsql.x86_64 php-odbc.x86_64
pecl install pdo
service postgresql restart
service httpd restart
pecl install pdo
pecl channel-update pecl.php.net

Then see Enabling PDO and install MSSQL PHP Extension.