Skip to content

Latest commit

 

History

History
374 lines (294 loc) · 11.1 KB

lamp.md

File metadata and controls

374 lines (294 loc) · 11.1 KB

Установка LAMP на ubuntu 12.10|13.04

Что в итоге получится:

php-fpm + apache2(mod_fastcgi + mod_suexec) + mysql, либо
php-fpm + nginx proxy + apache2, либо
php-fpm + nginx

Полезные ссылки на эту тему

Перед началом работы

sudo su

в случае каких-то изменений в конфигах

service php5-fpm restart && service apache2 restart

Установка php и apache2

Репозиторий в котором есть последняя версия php5.4

add-apt-repository ppa:ondrej/php5-oldstable
apt-get update
apt-get upgrade

Установка пакетов

apt-get install apache2-mpm-worker
apt-get install libapache2-mod-fastcgi php5-fpm php5 apache2-suexec-custom
a2enmod actions fastcgi alias suexec rewrite

Возможно придется раскоментировать строку в файле /etc/apache2/mods-available/fastcgi.conf

FastCgiWrapper /usr/lib/apache2/suexec

Конфигурация модуля FPM. Делается для каждого пользователя, можно определять дополнительные настройки php.ini

nano /etc/php5/fpm/pool.d/alex.conf 

пример файла

; pool name
[alex]

; system user
user = alex
group = alex

; listen socket
listen = /var/run/php5-fpm-alex.sock

;process manager
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

; chroot 
chdir = /

; PHP ini settings
; php_flag[display_errors] = on
; php_flag[display_startup_errors] = on
; php_admin_value[memory_limit] = 256M

В папке /etc/php5 лежат ini, отвечающие за настройки php в определенном режиме работы (apache2/php.ini, cli/php.ini, fpm/php.ini). Чтобы применить настройки сразу везде, удобно положить настройки в файл /etc/php5/conf.d/30-alex.ini. Пример такого файла

; configuration for php dbase module
extension=dbase.so

[PHP]
display_errors = On

memory_limit = 256M
upload_max_filesize = 32M
post_max_size = 32M

;Removing X-Powered-By
expose_php = off

cgi.fix_pathinfo = 0

; XDEBUG
xdebug.remote_enable = 1
xdebug.remote_host = localhost
xdebug.remote_port = 9000
xdebug.max_nesting_level = 300
; http://www.xdebug.org/docs/profiler(enabled by ?XDEBUG_PROFILE)
xdebug.profiler_enable = 0
xdebug.profiler_enable_trigger = 1
xdebug.profiler_output_dir = /home/alex/xdebug_profiler
xdebug.profiler_output_name = cachegrind.%H

; увеличения времени жизни cookie
session.gc_maxlifetime = 2592000

Чтобы убрать назойливое предупреждение апача при запуске добавим файл /etc/apache2/conf.d/default.conf с таким содержимым

ServerName localhost

Пример конфигурации Apache 2.2 для сайта. Создается в папке /etc/apache2/sites-available, далее делается symlink в папку /etc/apache2/sites-enabled.

<VirtualHost *:80>
	ServerAdmin webmaster@localhost
	ServerName weburg-parser.local
	SuexecUserGroup alex alex
	DocumentRoot /home/alex/public_html/weburg-parser.local/www
	DirectoryIndex index.php index.html
	
	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>
	
	<Directory /home/alex/public_html/weburg-parser.local/www/>
		Options ExecCGI FollowSymLinks
		AllowOverride all
		Order allow,deny
		Allow from all
	</Directory>
	
	<IfModule mod_fastcgi.c>  
		AddHandler php5-fcgi .php  
		
		Action php5-fcgi /php5-fcgi
		Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
		
		FastCGIExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm-alex.sock -user alex -group alex
		
		<Directory /usr/lib/cgi-bin/php5-fcgi>  
			Options ExecCGI FollowSymLinks  
			SetHandler fastcgi-script  
			Order allow,deny  
			Allow from all  
		</Directory>  
	</IfModule>
	
	ErrorLog ${APACHE_LOG_DIR}/error.log
	
	# Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
	LogLevel warn
	
	CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Необходимо не забыть добавить алиас в /etc/hosts

echo "127.0.0.1 weburg-parser.local" >> /etc/hosts

Установка PHP

Посмотреть список модулей с кратким описанием можно командой apt-cache search php5

Большинство необходимых модулей устанавливается командой

apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcached php5-xdebug php5-sqlite
service php5-fpm restart

Phpunit

apt-get install phpunit

Для проверки phpunit --version. В случае ошибки

pear upgrade pear
pear channel-discover pear.phpunit.de
pear install --alldeps phpunit/PHPUnit

Установка MySQL

apt-get install mysql-server mysql-client

проверка

mysql -uroot -p

mysql> SHOW DATABASES;
mysql> exit;

phpmyadmin

Будет предложена установка настроек по умолчанию для pma. Если вы хотите настройть pma вручную, смотрите доки /usr/share/doc/phpmyadmin. Для корректной работы PMA трeбуется отдельный пользователь и дополнительная база данных(phpmyadmin по-умолчанию). Для настройки можно использовать скрипт настройки.

add-apt-repository ppa:nijel/phpmyadmin
apt-get update
apt-get install phpmyadmin

PMA требует доступ к файлам в папке для подключения своих конфигов ls -l /etc/phpmyadmin/(такое поведение определено в файле /etc/phpmyadmin/config.inc.php), поэтому

usermod -a -G www-data alex

Не все сборки подключают конфиг к апачу сами, поэтому

cd /etc/apache2/conf.d/
ln -s /etc/phpmyadmin/apache.conf phpmyadmin.conf

Возможно вы захотите увеличить время жизни cookie в /etc/phpmyadmin/config.inc.php

$cfg['Servers'][$i]['LoginCookieValidity'] = 2592000; # 1 month

Для проверки можно пройти по адресу http://localhost/phpmyadmin

Скачать послежнюю версию можно тут. Распаковать в /usr/share/phpmyadmin

Если не работает вкладка настройки - https://bugs.launchpad.net/ubuntu/+source/phpmyadmin/+bug/1175142

Сниппеты

Для проверки работоспособости php, и, в особенности, SuExec можно сделать такой index.php

<?php echo system('whoami'); ?>
<?php phpinfo(); ?>

Memcached

apt-get install memcached

Установка nginx

add-apt-repository ppa:nginx/stable
apt-get update
apt-get install nginx
service nginx start

Повесим apache на 8080 порт

perl -e "s/:80/:8080/g;" -pi $(find /etc/apache2/sites-available -type f)
perl -e "s/80/8080/g;" -pi $(find /etc/apache2/ports.conf -type f)

Пример конфигурации для сайта

server {
    listen 80;

    server_name megavika.local megavika.work;
    root /home/alex/PhpstormProjects/megavika/web;

    location / {
        # try to serve file directly, fallback to rewrite
        try_files $uri @rewriteapp;
    }

    location @rewriteapp {
        # rewrite all to app.php
        rewrite ^(.*)$ /app_dev.php/$1 last;
    }

    location ~ ^/(app|app_dev|config)\.php(/|$) {
        fastcgi_pass unix:/var/run/php5-fpm-alex.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param HTTPS off;
    }

    # Logging
    error_log /var/log/nginx/megavika.local-error.log;
    access_log /var/log/nginx/megavika.local-access.log;
}

Пример конфигурации для сайта с переадресацией на apache

upstream apache {
    server localhost:8080;
}

server {
    listen 80;

    server_name qsb.local qsb.work;
    root /home/alex/PhpstormProjects/quicksilver-boats/web;

    # Перенаправление на back-end
    location / {
        proxy_pass http://apache;
        include /etc/nginx/proxy_params;
    }

    # Статическиое наполнение отдает сам nginx
    # back-end этим заниматься не должен
    location ~* \.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|mov)$ {
        root /home/alex/PhpstormProjects/quicksilver-boats/web/;
    }

    # Logging
    error_log /var/log/nginx/qsb.local-error.log;
    access_log /var/log/nginx/qsb.local-access.log;
}

Конфиг PMA для nginx можно добавить в gedit /etc/nginx/sites-available/default

location /phpmyadmin/ {
	root /usr/share/;
	index index.php index.html index.htm;
	location ~ ^/phpmyadmin/(.+\.php)$ {
		root /usr/share/;
		fastcgi_pass unix:/var/run/php5-fpm-alex.sock;
		fastcgi_split_path_info ^(.+\.php)(/.*)$;
		include fastcgi_params;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		fastcgi_param HTTPS off;
		fastcgi_index index.php;
	}
	location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
	    root /usr/share/;
	}
}
location /phpMyAdmin {
	rewrite ^/* /phpmyadmin last;
}
location /mysql {
	rewrite ^/* /phpmyadmin last;
}

Что дальше!?

Ubuntu 13.10

Для новой версии Ubuntu ставится apache >= 2.4, в котором по другому задаются доступы в .htaccess, а именно

2.2 configuration:

Order allow,deny
Allow from all

2.4 configuration:

Require all granted

Полный список изменений 2.2 -> 2.4