LAMP (часть 1). Настройка apache-php-mysql под Ubuntu 12.04

Разворачиваем сайт написан на php с использованием БД mysql под дистрибутивом Ubuntu и под управлением веб-сервера apache. Эта заметка будет полезна как для администратора, так и для веб-программиста.
У нас имеется архив с БД и кодом. Еще сайт имеет поддержку SSL, и у нас есть нужные сертификаты.

root@pc:~# ls -l
total 2568972
-rw-rw-r-- 1 alex alex       1976 Oct  7 08:29 2013-www.site.org.crt
-rw-rw-r-- 1 alex alex       1675 Oct  7 08:29 2013-www. site.org.key
-rw-rw-r-- 1 alex alex  844527324 Oct  8 04:13 site.org.gz
-rw-rw-r-- 1 alex alex    6015814 Oct  4 09:46 site.org.sql

1. APACHE

Для начала нужно установить и настроить веб-сервер apache.

root@pc:~# apt-get install apache2

Теперь создаем виртуальный хост для нашего сайта с поддержкой SSL. Конфиг должен быть следущего вида.

root@pc:~#  cat /etc/apache2/sites-available/site.org
<VirtualHost *:80>
        ServerName site.org
        ServerAdmin site@mail.ru
        ServerAlias www.site.org
        DocumentRoot /var/www/site.org
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        </Directory>
        <Directory /var/www/site.org>
                Options FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        Alias /uploads "/var/www/site.org/uploads/"

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride All
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error_site.org.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access_site.org.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride All
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerName site.org
        ServerAdmin site@mail.ru
        ServerAlias www.site.org
        DocumentRoot /var/www/site.org
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        </Directory>
        <Directory /var/www/site.org>
                Options FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        Alias /uploads "/var/www/site.org/uploads/"

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride All
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error_site.org.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access_site.org.log combined
        Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options MultiViews FollowSymLinks
        AllowOverride All
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>
        SSLEngine on
        SSLCertificateFile /etc/apache2/ssl/apache.crt
        SSLCertificateKeyFile /etc/apache2/ssl/apache.key
        BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>
</IfModule>

Далее создаем директорию для сертификатов и переносим их (путь к ним прописан в конфиге виртуального хоста). Также добавляем модуль SSL и активируем сайт.

root@pc:~# mkdir /etc/apache2/ssl
root@pc:~# mv 2013-www.site.org.crt /etc/apache2/ssl/apache.crt
root@pc:~# mv 2013-www. site.org.key /etc/apache2/ssl/apache.key
root@pc:~# a2enmod ssl
root@pc:~# a2ensite site.org
root@pc:~# service apache2 reload

Если нужно проверить роботу SSL не имея реальных сертификатов, то просто создаем свои.

 root@pc:~# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
root@pc:~# /etc/init.d/apache2 reload

Файл настроек ports.conf должен быть следующего вида.

root@pc# cat /etc/apache2/ports.conf
NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
    NameVirtualHost *:443
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    NameVirtualHost *:443
    Listen 443
</IfModule> 

Если на сайте используются реврайты, не забываем включить модуль

root@pc:~#  a2enmod rewrite

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

root@pc:~# mkdir /var/www/site.org
root@pc:~# cd /var/www/site.org
root@pc:/var/www/site.org# tar xzvf /home/alex/site.org.gz

2. MYSQL

Ставим базу данных с нужными модулями для работы с веб-сервером и обработкой php.

root@pc:~# apt-get install mysql-server libapache2-mod-auth-mysql php5-mysql

Теперь запускаем shell скрипт для инициализации MySQL директории с базами данных и таблиц.

root@pc:~# mysql_install_db

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

root@pc:~# /usr/bin/mysql_secure_installation

Для удобной работы с mysql, нужно добавить phpmyadmin и прописать настройки в apache.

root@pc:~# apt-get install phpmyadmin
root@pc:~# vim /etc/apache2/apache2.conf
…
Include /etc/phpmyadmin/apache.conf
…
root@pc:~# /etc/init.d/apache2 reload

Чтобы залогиниться в phpmyadmin нужно перейти в браузере по ссылке:

/phpmyadmin (Например http://192.168.2.103/phpmyadmin/ )

и ввести логин и пароль, который задавали при установке mysql (Пример – root / alex9343).
Если большая база будет импортироваться в phpmyadmin, то нужно увеличить размер загружаемых файлов в php.ini.

root@pc:~# vim /etc/php5/apache2/php.ini
…
upload_max_filesize = 30M
…

Но можно и просто вручную скопировать весь sql и вставить в phpmyadmin, после создания нужной базы (туговато, но можно).
Или же импортировать с консоли.

3. PHP

Далее нужно установить поддержку php.

root@pc:~# apt-get install php5 libapache2-mod-php5 php5-mcrypt

и сразу добавляем php индексную страничку

root@pc:~# cat /etc/apache2/mods-enabled/dir.conf

          DirectoryIndex index.php index.html index.cgi index.pl index.php index.xhtml index.htm

root@pc:~# /etc/init.d/apache2 reload
 

Если нужно установить дополнительные модуль, можно посмотреть список доступных в репозиториях модулей для установленной версии php.

root@pc:~# apt-cache search php5-
php5-cgi - server-side, HTML-embedded scripting language (CGI binary)
php5-cli - command-line interpreter for the php5 scripting language
php5-common - Common files for packages built from the php5 source
php5-curl - CURL module for php5
php5-dbg - Debug symbols for PHP5
php5-dev - Files for PHP5 module development
php5-gd - GD module for php5
php5-gmp - GMP module for php5
php5-ldap - LDAP module for php5
php5-mysql - MySQL module for php5
php5-odbc - ODBC module for php5
php5-pgsql - PostgreSQL module for php5
php5-pspell - pspell module for php5
php5-recode - recode module for php5
php5-snmp - SNMP module for php5
php5-sqlite - SQLite module for php5
php5-tidy - tidy module for php5
php5-xmlrpc - XML-RPC module for php5
php5-xsl - XSL module for php5
…

После всех настроек можно проверить работоспособность сайта на разных портах (80, 443 — http, https). Поскольку я все разворачивал на виртуальной машине, а на хостовой у меня Windows – нужно прописать в C:\Windows\System32\drivers\etc\hosts ассоциацию домена и IP (т.е. дать понять браузеру, что домен site.org нужно искать по IP=192.168.2.103, по IP моей виртуальной машине, где мы все развернули).

C:\Windows\System32\drivers\etc\hosts
…
192.168.2.103 site.org
192.168.2.103 www.site.org
…

Теперь можно проверить или мы попадаем на нужный сервер при переходе по домену site.org

C:\Users\alex>ping site.org

Pinging site.org [192.168.2.103] with 32 bytes of data:
Reply from 192.168.2.103: bytes=32 time<1ms TTL=64
Reply from 192.168.2.103: bytes=32 time<1ms TTL=64
Reply from 192.168.2.103: bytes=32 time<1ms TTL=64
Reply from 192.168.2.103: bytes=32 time<1ms TTL=64 Ping statistics for 192.168.2.103:     Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds:     Minimum = 0ms, Maximum = 0ms, Average = 0ms C:\Users\alex>

Ну все. Теперь проверяем работу сайта и фиксим багги. Так же не забываем смотреть в логи.
В следующей статье пойдет речь о настройке связки nginx-mysql-php.

Автор: admin, 14 октября 2013
Рубрики: Linux
Метки: , ,

Написать комментарий

Последние статьи

Яндекс.Метрика
?>