Настройка apache php mysql под Ubuntu 12.04

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

1
2
3
4
5
6
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

APACHE

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

1
root@pc:~# apt-get install apache2

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
root@pc:~#  cat /etc/apache2/sites-available/site.org
        ServerName site.org
        ServerAdmin [email protected]
        ServerAlias www.site.org
        DocumentRoot /var/www/site.org
                Options FollowSymLinks
                AllowOverride All
                Options FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        Alias /uploads "/var/www/site.org/uploads/"
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
                AllowOverride All
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        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/"
        Options Indexes MultiViews FollowSymLinks
        AllowOverride All
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
        ServerName site.org
        ServerAdmin [email protected]
        ServerAlias www.site.org
        DocumentRoot /var/www/site.org
                Options FollowSymLinks
                AllowOverride All
                Options FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        Alias /uploads "/var/www/site.org/uploads/"
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
                AllowOverride All
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        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/"
        Options MultiViews FollowSymLinks
        AllowOverride All
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
        SSLEngine on
        SSLCertificateFile /etc/apache2/ssl/apache.crt
        SSLCertificateKeyFile /etc/apache2/ssl/apache.key
        BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

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

1
2
3
4
5
6
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 не имея реальных сертификатов, то просто создаем свои.

1
2
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 должен быть следующего вида.

1
2
3
4
5
6
7
8
9
root@pc# cat /etc/apache2/ports.conf
NameVirtualHost *:80
Listen 80
    NameVirtualHost *:443
    Listen 443
    NameVirtualHost *:443
    Listen 443

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

1
root@pc:~#  a2enmod rewrite

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

1
2
3
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

MYSQL

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

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

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

1
root@pc:~# mysql_install_db

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

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

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

1
2
3
4
5
6
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 нужно перейти в браузере по ссылке:

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

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

1
2
3
4
root@pc:~# vim /etc/php5/apache2/php.ini
upload_max_filesize = 30M

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

PHP

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

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

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

1
2
3
4
5
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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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 моей виртуальной машине, где мы все развернули).

1
2
3
4
5
C:\Windows\System32\drivers\etc\hosts
192.168.2.103 site.org
192.168.2.103 www.site.org

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

1
2
3
4
5
6
7
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>

Ну все.

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.