WHAT'S NEW?
Loading...

Установка apache, php, mysql в Ubuntu 10.10

В связи с установкой себе новой версии убунты 10.10 решил написать новое руководство по установке и настройки веб-сервера.
Мы будем использовать такие программы:

  • Apache
  • Php
  • MySql
  • PhpMyAdmin
  • Mod_rewrite


Установка Apache + Php + MySql:
 
Открываем консоль и вствляем код, в первой строке которого мы обновляем уже установленные пакеты и их зависимости, после чего устанавливаем веб сервер Apache + интерпретатор Php + базу данных MySql

sudo apt-get update
sudo apt-get install apache2 php5 mysql-server php5-mysql 
php5-curl

Установка PhpMyAdmin:

sudo apt-get install phpmyadmin

В ходе инсталляции выбираем сервер по умолчанию для phpmyadmin – apache, на вопрос автоматической настройки отвечаем утвердительно, вводим пароль рута mysql. Теперь phpmyadmin живет по адресу http://localhost/phpmyadmin/

Если сервер не нашёл phpmyadmin, значит нужно добавить в конфигурационный файл apache2.conf следующие строки, открываем консоль и пишем:

sudo echo "Alias /phpmyadmin /usr/share/phpmyadmin" >> 
/etc/apache2/apache2.conf

Подключаем модуль mod_rewrite, сервера Apache:

sudo a2enmod rewrite


Перезагружаем сервер Apache командой:

sudo /etc/init.d/apache2 restart


Создаем файл create_site.sh помещаем в него наш скрипт на bash, который будет создавать новый хост на нашем сервере и даем ему права на исполнения. При написании скрипта подразумевается, что все локальные сайты(виртульные хосты) будут размещены в каталоге «www» расположенному по адресу: /www.
При этом каждый виртуальный хост при создании содержит такие папки:

  1. cgi-bin
  2. logs
  3. public

Код скрипта(скачать):

#!/bin/bash
#************************************************#
#                create_site.sh                  #
#                автор: korbax                   #
#                Май 30, 2010                    #
#                                                #
# Создаем новый проект, каталоги и базу данных.  #
#************************************************#

echo -e "\033[1mВведите название проекта:\033[0m";
read NAME_OF_PROJECT

#создаем папки проекта
sudo mkdir /www/$NAME_OF_PROJECT
sudo mkdir /www/$NAME_OF_PROJECT/public/
sudo mkdir /www/$NAME_OF_PROJECT/cgi-bin/
sudo mkdir /www/$NAME_OF_PROJECT/logs/

#указываем владельца и права на папку "public"
sudo chown -R korbax:korbax /www/$NAME_OF_PROJECT/
sudo chmod -R 755 /www/$NAME_OF_PROJECT/
sudo chown -R korbax:korbax /www/$NAME_OF_PROJECT/public/
sudo chmod -R 755 /www/$NAME_OF_PROJECT/public/

#добавляем правила в конфигурационый файл апача
add_to_apache_conf="<virtualhost *:80> 
ServerName ${NAME_OF_PROJECT}
        ServerAlias www.${NAME_OF_PROJECT}
        ServerAdmin webmaster@${NAME_OF_PROJECT}
        DocumentRoot /www/${NAME_OF_PROJECT}/public
        <Directory /www/${NAME_OF_PROJECT}/ >
             Options Indexes FollowSymLinks MultiViews
             AllowOverride All
             Order allow,deny
             allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /www/${NAME_OF_PROJECT}/cgi-bin/
        <Directory "www/${NAME_OF_PROJECT}/cgi-bin" >
             AllowOverride All
             Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
             Order allow,deny
             Allow from all
        </Directory>

        ErrorLog /www/${NAME_OF_PROJECT}/logs/error.log
        LogLevel warn
        CustomLog /www/${NAME_OF_PROJECT}/logs/access.log combined
"
add_to_hosts_conf="127.0.0.2 ${NAME_OF_PROJECT}"

#добовляем новый хост
echo "$add_to_hosts_conf" >> /etc/hosts 
echo "$add_to_apache_conf" >> 
/etc/apache2/sites-available/${NAME_OF_PROJECT}


#создаем новую базу
echo -e "\033[1mХотите создать базу данных для этого проекта? 
  (Да/Нет)\033[0m";
read CREATE_BAZA

if  [ "$CREATE_BAZA" = "Да" -o "$CREATE_BAZA" = "да" ]; then
  echo -e "\033[1mВведите имя базы данных:\033[0m";
read NAME_OF_PROJECT

mysql -uroot -p --execute="create database ${NAME_OF_PROJECT}; 
  GRANT ALL PRIVILEGES ON ${NAME_OF_PROJECT}.* TO   
  ${NAME_OF_PROJECT}_user@localhost IDENTIFIED by 
  'Указываем пароль root' WITH GRANT OPTION;"

echo -e "\033[1mБаза данных создана.\033[0m";

else
     echo -e "\033[1mБаза данных не была создана.\033[0m";
fi

#включаем конфигурацию сайта
sudo a2ensite ${NAME_OF_PROJECT}
#sudo a2dissite

#перезапускаем апач
/etc/init.d/apache2 restart
echo -e "\033[1mЛокальный сайт готов к работе.\033[0m"; 

Как пользоваться:
Теперь чтобы создать новый виртуальный хост(локальный сайт) необходимо открыть консоль и запустить в ней наш файл «create_site.sh» с правими root(sudo ./create_site.sh). При загрузке скрипта буден выведен вопрос об имени создаваемого сайта

Вводить имя виртуального хоста нужно с указанием доменной зоны, хотя вы можете использовать любое имя, правильным выбором все же будет: «.local»

Далее будет выведен запрос о необходимости создавать базу данных mysql.

Последним действием, будет перезагрузка сервера Apache и вывод в консоль информации о том, что локальный сайт готов к работе.

17 комментариев: Leave Your Comments

  1. Спасибо, хорошая статья. Ушла в избранное.

    ОтветитьУдалить
  2. Анонимный17 июня, 2011 18:29

    однозначно в избранное

    ОтветитьУдалить
  3. Спасибо. Очень хорошая статья.
    Пришлось немного повозиться:

    echo "Alias /phpmyadmin /usr/share/phpmyadmin" >> /etc/apache2/apache2.conf
    сделалась только из-под root

    А сам скрипт тоже пришлось из консоли под root'ом запускать )

    Такой вопрос: А куда кидать файлы (например joomlaвские)?

    ОтветитьУдалить
  4. Если вы не изменяли путь в скрипте на свой, строка 11:
    sudo mkdir /www/$NAME_OF_PROJECT/public/
    (где $NAME_OF_PROJECT - меняется на введеное вами имя проекта, например joomla.local) то в папке public и нужно размещать свои файлы, в том числе и joomla.

    ОтветитьУдалить
  5. Так... А тогда адрес сайта в браузере будет...?
    http://joomla.local ?
    Так было в денвере. А тут тогда как?

    ОтветитьУдалить
  6. да, именно такой адрес сайта и будет- http://joomla.local

    ОтветитьУдалить
  7. Выдает такое:

    База данных создана.
    Enabling site site2.
    Run '/etc/init.d/apache2 reload' to activate new configuration!
    apache2: Syntax error on line 230 of /etc/apache2/apache2.conf: Syntax error on line 1 of /etc/apache2/sites-enabled/Site.local: /etc/apache2/sites-enabled/Site.local:25: was not closed.\n/etc/apache2/sites-enabled/Site.local:1: was not closed.
    Action 'configtest' failed.
    The Apache error log may have more information.
    ...fail!
    Локальный сайт готов к работе.

    ОтветитьУдалить
  8. А у меня EMS SQL Manager for MySQL под WINE заработал!
    Ставил не надеясь на успех, а тут вот праздник...
    Я PhpMyAdmin люблю и уважаю, но писание сложных запросов в EMS SQL Manager делается гораздо легче.
    Вот. Похвастался...

    ОтветитьУдалить
  9. Еще в репозитории убунту есть две замечательные программы для работы с mysql, это mysql workbench и mysql query browser.

    ОтветитьУдалить
  10. Да, но они (при всем уважении...) по функционалу не дотягивают до пакета EMS SQL.
    Здесь h**p://www.sqlmanager.net/ подробности, если кому интересно.
    Крупный минус EMS - нехорошая лицензия...

    ОтветитьУдалить
  11. Этот комментарий был удален автором.

    ОтветитьУдалить
  12. отличная статья, очень помогла в настройке. Спасибо.

    Только вот немного помучился со скриптом, апач все время ошибку выдавал, оказалось что в блоке " #добавляем правила в конфигурационый файл апача" в самом конце отсутствует строчка "" . Для профи это конечно не проблема, но новичкам вроде меня трудно понять почему не работает. Кстати это похоже на ошибку, которую указал Юрий в комментарии выше.

    ОтветитьУдалить
    Ответы
    1. понятно, этот тег и в комментариях не отображается почему-то. В общем это < / virtualhost > ,без пробелов.

      Удалить
  13. Спасибо за подсказку, обязательно исправлю.

    ОтветитьУдалить
  14. Анонимный02 марта, 2012 09:08

    привет всем
    что надо поменять иль добавить чтобы понел руски
    http://178.63.235.20/register.php?lang=ru&#

    ОтветитьУдалить
  15. Анонимный30 июля, 2012 11:33

    Благодарю, не раз уже пользовался этим скриптом для создания сайтов на локалке.
    Только маленькое замечание, для работы cgi там не хватает пары слешей на конце, вот так:

    ScriptAlias /cgi-bin/ /home/avil/public_html/${NAME_OF_PROJECT}/cgi-bin/

    AllowOverride All
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all

    ОтветитьУдалить