вторник, 28 июня 2011 г.

Установка и настройка Apache + PHP + MySQL на FreeBSD

 

 

Еще один вариант настройки Web-сервера теперь уже для FreeBSD.

Будем ставить из портов.

Apache:

cd /usr/ports/www/apache22
make&&make install&&make clean

PHP:

cd /usr/ports/lang/php5
make&&make install&&make clean

cd /usr/ports/lang/php5-extensions/
make&&make install&&make clean

MySQL:

cd /usr/ports/databases/mysql51-server
make&&make install&&make clean

Для запуска Apache и MySQL при старте системы добавим в файл /etc/rc.conf строки:

apache22_enable=”YES”
mysql_enable=”YES”

Запустим Apache и MySQL:

/usr/local/etc/rc.d/mysql-server start
apachectl start

Создадим пароль для пользователя root в базе данных:

mysqladmin -u root password 'мегасложныйпароль'

Перейдем к настройке.

Открываем для редактирования файл конфигурации Apache /usr/local/etc/apache22/httpd.conf, ищем строки начинающиеся с AddType и дописываем туда:

AddType application/x-httpd-php    .php
AddType application/x-httpd-php-sourse    .phps

Это нужно что бы сервер знал что делать с файлами с расширениями php и phps.

Также добавляем имя нашего хоста:

ServerName localhost

Что бы проверить работоспособность Web-сервера отрываем браузер и в адресной строке набираем localhost, если появилась надпись “It works!”, значить все нормально.

Проверим работу php. В каталоге /usr/local/www/apache22/data/ создадим файл index.php со следующим содержимым:

<?phpinfo()?>

В адресной строке браузера набираем localhost/index.php, долна отобразится страница с информацией о php.

По умолчанию на нашем сервере лежит один сайт, файлы которого находятся в папке /usr/local/www/apache22/data/.  Если же вам мало одного то придется настроить добавление виртуальных хостов.

Наши сайты будут лежать в папке /usr/local/www/, поэтому нужно сделать доступной эту папку для нашего сервера. Для этого добавим в конец файла http.conf следующие строки:

<Directory "/usr/local/www/*">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

Также добавим строку:

NameVirtualHost *:80

и

Include etc/apache22/sites-enabled/*

Последняя нужна для того что бы указать серверу папку с настройками виртуальных хостов. Естественно эту папку нужно создать:

mkdir /usr/local/etc/apache22/sites-enabled

В ней создадим дефолтный файл настроек:

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /usr/local/www/example.com
</VirtualHost>

Для добавления нового хоста теперь достаточно лишь скопировать этот файл с именем нашего добавляемого сайта, заменить example.com на новое имя и создать директорию в которой будут лежать файлы сайта, с аналогичным именем в папке /usr/local/www/.

То есть если мы добавляем сайт bestsite.com то у нас должна появиться папка /usr/local/www/bestsite.com и файл /usr/local/etc/apache22/sites-enabled/bestsite.com следующего содержания:

<VirtualHost *:80>
    ServerName bestsite.com
    DocumentRoot /usr/local/www/bestsite.com
</VirtualHost>

После этого перезапускаем Apache:

apachectl restart

и можем заходить на bestsite.com.

Процесс добавления/удаления виртуальных хостов можно автоматизировать. Следующий скрипт предназначен для этого:

#!/bin/sh

#Add function
add_site()
        {
        echo "Creating new site"
        sleep 1
        echo -n  "Please, enter the name of site:"
       
        while read SITE
        do
        if
            [ "$SITE" != "" ]
        then
            DIR="/usr/local/www/$SITE"
            FILE="/usr/local/etc/apache22/sites-enabled/$SITE"
            if
                [ -d $DIR ]
            then
                echo  "Site with that name already exists"
                echo  "Please try again with correct name"
                exit 1
            else
                touch $FILE
                echo  "Creating settings file $FILE"
                sleep 1
                echo "<VirtualHost *:80>
    ServerName $SITE
    DocumentRoot $DIR
</VirtualHost>" >>$FILE

                echo "Creating directory for site $DIR"
                sleep 1
                mkdir -p $DIR
                chmod -R 777 $DIR
                echo "127.0.0.1 $SITE" >> /etc/hosts
                echo  "Restarting Apache"
                sleep 1
                apachectl restart
                echo  "Congratulations, the site $SITE has been successfully added"
                exit 0
            fi
        fi
        echo "You have not entered a name"
        echo -n "Please, enter the name of the site or CTRL+Z to exit:"
        done
        }

#function for removing
rm_site()
        {
        echo "Removing site"
        echo -n "Please, enter the site name:"
        while read SITE
        do
        if
            [ "$SITE" != "" ]
        then
            DIR="/usr/local/www/$SITE"
            FILE="/usr/local/etc/apache22/sites-enabled/$SITE"
            if
                [ -d $DIR ]
            then
                echo "Removing site $SITE"
                sleep 1
                rm -r $DIR
                rm $FILE
                 sed -i "" '/127.0.0.1 $SITE/d' /etc/hosts
                echo  "Restarting Apache"
                sleep 1
                apachectl restart
                echo "Congratulations, the site $SITE has been successfully removed"
                exit 0
            else
                echo "Site $SITE not on the server"
            fi
        fi
        echo "You have not entered a name"
        echo -n "Please, enter the name of the site or CTRL+Z to exit:"
        done
        }

#check user rights
if
    [ $(whoami) != "root" ]
then
    echo 'You must be root.'
    exit 1
fi

#deletion-addition process
if
    [ "$1" = "" ]
then
    echo "Invalid option"
    echo  "Use 'add' or 'remove' option"
    exit 1
else
    case $1 in
        add)
        add_site
        ;;
        rm)
        rm_site
        ;;
    esac

Сохраняем его. Называем наш файл site, делаем исполняемым и помещаем в папку /usr/bin.

Запускать его нужно с параметрами:

site add – для добавления сайта;

site rm – для удаления.

Комментариев нет:

Отправить комментарий