Home > linux > Скрипт установки типового веб-сервера на Linux (CentOS)

Скрипт установки типового веб-сервера на Linux (CentOS)

Задача: в автоматическом режиме установить основное ПО необходимое для работы веб-сервер: nginx/Apache/PHP/MySQL/vsftpd.
Скачать скрипт целиком

#!/bin/bash

### ver. 0.98 from 11.10.2010

os=`cat /etc/issue |grep -c CentOS`
if [ $os = "0" ]; then
    echo "This script work only on CentOS. Exit."
    exit
fi

echo "Enter username to create (default, admin):"
read USER
echo "This host is VPS? (yes/no. Default, no):"
read thisvps
echo "Use Remi repos? (yes/no. Default, yes):"
read useremi

if [ -z $USER ]; then
    USER=admin
fi
if [ -z $thisvps ]; then
    thisvps=no
fi
if [ -z $useremi ]; then
    useremi=yes
fi

confighost=unix-notes.ru
USERPASS=`< /dev/urandom tr -dc A-Za-z0-9 | head -c15`
SQLPASS=`< /dev/urandom tr -dc A-Za-z0-9 | head -c15`
thiswebazilla=`uname -a | grep -c "webazilla"`

sestat=`sestatus|grep -c enabled`
if [ $sestat = "1" ]; then
    sed -i 's/enforcing/disabled/gi' /etc/selinux/config
    sed -i 's/permissive/disabled/gi' /etc/selinux/config
    chkconfig sshd on
    echo "Need reboot to SELinux disable ... After reboot run script again"
    exit
fi

checkarch=`uname -a | grep -c "i386"`
if [ $checkarch = "1" ]; then
    PL=i386
    else
    PL=x86_64
fi

# check to exist homedir
if [ ! -d /home ];  then
   echo "/home is no exist! setup canceled."
   exit
fi

iptables -F
iptables -X
/etc/init.d/iptables save

# add additional dns servers, OpenDNS
echo "nameserver 8.8.8.8" >> /etc/resolv.conf


mkdir /root/.ssh
cd /root/.ssh
chown -R root /root
chmod -R 400 /root

if [ $thisvps = "no" ]; then
    cd /etc
    rm -f /etc/sysctl.conf
    wget http://$confighost/config/linux/sysctl.conf
    sysctl -p

    ln -fs /usr/share/zoneinfo/Europe/Moscow /etc/localtime
    yum --noplugins -y install ntp
    ntpdate pool.ntp.org
    echo "1 1 * * * root ntpdate pool.ntp.org" >> /etc/crontab
fi

if [ $thisvps = "yes" ]; then
    ln -fs /usr/share/zoneinfo/Europe/Moscow /etc/localtime
fi

if [ $PL = x86_64 ]; then
        cd /root
        rpm -ihv http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
        wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
        rpm -ihv /root/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm

        if [ $useremi = yes ]; then
            rpm -ihv http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
        fi
fi

if [ $PL = i386 ]; then
        cd /root
        rpm -ihv http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
        wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
        rpm -ihv /root/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

        if [ $useremi = yes ]; then
            rpm -ihv http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
        fi
fi

if [ $useremi = yes ]; then
    yum --noplugins --enablerepo=remi install mc.$PL vsftpd.$PL httpd.$PL httpd-devel.$PL php.$PL mysql-server.$PL php-mysql.$PL nginx.$PL mod_geoip.$PL php-mbstring.$PL php-gd.$PL php-mcrypt.$PL make.$PL which.$PL
    else yum --noplugins install mc.$PL vsftpd.$PL httpd.$PL httpd-devel.$PL php.$PL mysql-server.$PL php-mysql.$PL nginx.$PL mod_geoip.$PL php-mbstring.$PL php-gd.$PL php-mcrypt.$PL make.$PL which.$PL
fi

chkconfig --level 2345 mysqld on
chkconfig --level 2345 httpd on
chkconfig --level 2345 vsftpd on
chkconfig --level 2345 nginx on
chkconfig --level 2345 cups off
chkconfig --level 2345 sendmail on
chkconfig --level 2345 sshd on

cd /etc/vsftpd
rm -f /etc/vsftpd/vsftpd.conf
wget http://$confighost/config/linux/vsftpd.conf
chmod 400 /etc/vsftpd/vsftpd.conf

cd /usr/local/src
wget http://$confighost/config/mod_rpaf-0.6.tar.gz
tar xzf mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6
ln -s /usr/sbin/apxs /usr/sbin/apxs2
make rpaf-2.0
make install-2.0

cd /etc/httpd/conf.d
wget http://$confighost/config/linux/mod_rpaf.conf
iplist=`ifconfig | grep inet | awk '{print $2}' | awk -F: '{print $2}' | grep -v '^$' | tr "\n" " "`
sed -i "s/127.0.0.1/$iplist/g" /etc/httpd/conf.d/mod_rpaf.conf

# Create user and setup user folders
adduser -d /home/$USER -m -s /sbin/nologin $USER
echo "$USER:$USERPASS" |chpasswd
mkdir /home/$USER/domains
chmod -R 755 /home/$USER

cd /home/$USER
wget http://$confighost/config/linux/create_domain.sh
sed -i "s/testuser/$USER/g" /home/$USER/create_domain.sh
chmod +x /home/$USER/create_domain.sh
mkdir /etc/httpd/vhosts
cd /etc/httpd/vhosts
wget http://$confighost/config/linux/sample

cd /home/$USER
wget http://$confighost/config/linux/create_base.sh
sed -i "s/INSERTPASSHERE/$SQLPASS/g" /home/$USER/create_base.sh
chmod +x /home/$USER/create_base.sh

cd /home/$USER
wget http://$confighost/config/linux/create_multi_bases.sh
sed -i "s/INSERTPASSHERE/$SQLPASS/g" /home/$USER/create_multi_bases.sh
sed -i "s/username/$USER/g" /home/$USER/create_multi_bases.sh
chmod +x /home/$USER/create_multi_bases.sh


cd /etc/httpd/conf/
rm -f /etc/httpd/conf/httpd.conf
wget http://$confighost/config/linux/httpd.conf
rm -f /etc/httpd/conf.d/proxy_ajp.conf
rm -f /etc/httpd/conf.d/welcome.conf

cd /etc/nginx/
rm -f /etc/nginx/nginx.conf
wget http://$confighost/config/linux/nginx.conf
iplist2=`ifconfig | grep inet | awk '{print $2}' | awk -F: '{print $2}' | grep -v '^$'|grep -v 127.0.0.1 | sed 's/\(.*\)/listen \1;/'`
sed -i "s/user_name/$USER/gi" /etc/nginx/nginx.conf
sed -i "s/IPADDR/$iplist2/gi" /etc/nginx/nginx.conf

mkdir /home/mysql
mkdir /home/mysql/tmp
chown -R mysql /home/mysql/
chmod -R 755 /home/mysql/
cd /etc
rm -f /etc/my.cnf
if [ $thisvps = "no" ]; then
    wget http://$confighost/config/linux/my.cnf
fi
if [ $thisvps = "yes" ]; then
    wget http://$confighost/config/linux/vps/my.cnf
fi
service mysqld start
mysqladmin password $SQLPASS
echo "DELETE FROM mysql.user WHERE Password=''" | mysql --password=$SQLPASS

service vsftpd start
service httpd start
service nginx start
service cups stop

if [ $PL = x86_64 ]; then
        cd /root
        wget http://$confighost/config/linux/ZendOptimizer-3.3.3-linux-glibc23-x86_64.tar.gz
        tar zxvf /root/ZendOptimizer-3.3.3-linux-glibc23-x86_64.tar.gz
        cd /root/ZendOptimizer-3.3.3-linux-glibc23-x86_64
        ./install.sh
fi

if [ $PL = i386 ]; then
        cd /root
        wget http://$confighost/config/linux/ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz
        tar zxvf /root/ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz
        cd ZendOptimizer-3.3.3-linux-glibc23-i386
        ./install.sh
fi

echo "##############################"
echo "Setup ready!"
echo "FTP username: $USER"
echo "FTP password: $USERPASS"
echo "MySQL root password: $SQLPASS"
echo "##############################"

linux

  1. cheluskin
    March 24th, 2010 at 21:26 | #1

    Спасибо за скрипт. Очень помог.

  2. admin
    March 24th, 2010 at 23:57 | #2

    Всегда пожалуйста. Доработки и замечания приветствуются =)

  3. cheloveG
    January 10th, 2011 at 13:48 | #3

    Привет, я полный новичок в linux системах, возможно ли использовать данный скрипт для ос debian? если нет то что нужно подправить в вашем скрипте, чтобы получить работающую версию связки? заранее спасибо за ответ.

  4. admin
    January 10th, 2011 at 16:18 | #4

    Нет, к дебиану скрипт не подойдет. Там другая система установки пакетов, расположение конфигов и прочее.

  5. cheloveG
    January 10th, 2011 at 17:06 | #5

    а возможно ли написать такое для дебиана, может быть только в этом скрипте поменять пакеты для дебина и некоторые команды?

  6. admin
    January 10th, 2011 at 17:16 | #6

    Конечно можно написать. Попробуйте, это не сложно.

  7. cheloveG
    January 11th, 2011 at 13:20 | #7

    извините но так как я не силен в линуксах может быть вы попробуете сами переписать его под дебиан?, у меня что то не получилось нормально это сделать =(

  8. admin
    January 13th, 2011 at 08:45 | #8

    К сожалению, пока у меня такой возможности нет.

  9. February 3rd, 2011 at 18:37 | #10

    кто автор этого скрипта?

  10. admin
    February 3rd, 2011 at 18:52 | #11

    Если посмотрите в код скрипта выложенного на серче, то все поймете.
    Жаль, что автор топика не указал откуда скрипт.

  11. February 3rd, 2011 at 23:51 | #12

    admin
    а можете его переделать? как здесь просят – http://forum.searchengines.ru/showthread.php?t=599874
    и сколько будет стоить?
    ….
    и где (путь) создовать сайт, а то:
    Forbidden

    You don’t have permission to access / on this server.
    спасибо

  12. February 3rd, 2011 at 23:54 | #13

    в каком файле изменить путь к сайту на такой?
    /var/www/site.ru

  13. admin
    February 4th, 2011 at 06:23 | #14

    После установки вам в хоумдир скачается файл “create_domain.sh”. Вот в нем и надо исправить строчку:
    BASE=”/home/$USR/domains”

  14. admin
    February 4th, 2011 at 06:35 | #15

    К сожалению, переделать пока возможности нет.

  1. No trackbacks yet.