Categories: ubuntu

Настройка 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 site@mail.ru
        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 site@mail.ru
        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>

Ну все.

admin

Share
Published by
admin

Recent Posts

How to back up and restore the ESXi host configuration

Original https://kb.vmware.com/s/article/2042141 Backing up ESXi host configuration data To synchronize the configuration changed with persistent…

11 месяцев ago

vCenter Converter Standalone download

vCenter Converter Standalone 6.6.0 download (далее…)

12 месяцев ago

VMware remote console (VMRC) 12 download

VMware remote console (VMRC) 12.0.5 download Last version: VMware Remote Console 12.0.5  28 NOV 2023…

2 года ago

Mysql calculate row size for all tables

SELECT col_sizes.TABLE_SCHEMA, col_sizes.TABLE_NAME, SUM(col_sizes.col_size) AS EST_MAX_ROW_SIZE FROM ( SELECT cols.TABLE_SCHEMA, cols.TABLE_NAME, cols.COLUMN_NAME, CASE cols.DATA_TYPE WHEN…

2 года ago

Mysql change date format in database

UPDATE DB SET column = DATE(STR_TO_DATE(column, '%Y-%d-%m')) WHERE DATE(STR_TO_DATE(column, '%d-%m-%Y')) <> '0000-00-00'

2 года ago

esxi debian lvm extend partition

echo 1 > /sys/class/block/sda/device/rescan #maybe run under root> sudo fdisk /dev/sda2 > d > 2…

2 года ago