Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Настройка сервера для OpenCart (nginx+pagespeed+mysql+php) Ubuntu LTS 12.04


Recommended Posts

Система которая использует Nginx без Apache существенно работает быстрее нежели с Apache, по этому решил поделиться собственным мануалом по настройке сервера для OpenCart и установлен модуля pagespeed, т.к. очень долго бродил по всяко разным сайтам, но того что нужно, или того что работало бы у меня увы не смог найти.

Берем голый сервер c предустановленной OS в моем случае использован Ubuntu lts 32bit 12.04 использовал DigitalOcean (расположение сервера в Амстердаме).
Устанавливаем nginx, как мне советовали я брал пакет easyengine с github, хотя он затачивался под вордпресс - не проблема, ниже напишу как сделать под OpenCart.

 

-------------------------NGINX+Mysql+PHP-------------------------

Итак шаг первый Устанавливаем easyengine, nginx, mysql, php.

wget -qO ee rt.cx/ee && sudo bash ee
ee stack install

Спросит логин и пароль пользователя во время установки не забываем то, что вводим.

Далее создаем сайт следующей командой.

ee site create sait.com --mysql

Устанавливаем zip архиватор, он нам в дальнейшем все равно понадобится.

sudo apt-get install unzip

Загружаем наш сайт на сервер по пути /var/www/sait.com/htdocs
Загрузить можно например через FileZilla предварительно выбрав в настройках протокол SFTP.

Далее Импортируем нашу MySQL Базу Дынных с помощью уже установленного PHPmyAdmin
который доступен по адресу sait.com/phpmyadmin

если не пускает - ищем пароль тут  "/etc/nginx/htpasswd-ee" пользователь root
Чтобы попасть в myAdmin вводим Пользователь\пароль который задавали при установке mysql в начале.
Доступа к нужной нам базе (база и пользователь создается при создании домена) лежит по пути /var/www/sait.com/ee-config.php

Теперь сайт должен работать, но к сожалению или к счастью в nginx нет поддержки .htaccess, соответственно SEO ЧПУ у нас не работает вообще, по этому нужно настроить собственный nginx конфиг, он у нас сформировался как и общий, так и для каждого сайта уникально.
открываем конфиг нашего сайта /etc/nginx/sites-available/sait.com
и заменяем все в нем на следующий код (спасибо pashast), ссылка на тему

server {	listen 80;	server_name www.sait.com sait.com;	root /var/www/sait.com/htdocs;	access_log   /var/log/nginx/sait.com.access.log rt_cache;	error_log    /var/log/nginx/sait.com.error.log;	index index.php;			location / { try_files $uri @opencart; }location @opencart { rewrite ^/(.+)$ /index.php?_route_=$1 last; }location ~ /\.ht { deny all; }location ~* (\.(tpl|ini))$ { deny all; }if (!-e $request_filename) { rewrite ^/(.*)$ /index.php?_route_=$1 last; }location /admin { index index.php; }location ~* .(js|css|ico|xml|swf|flv|eot|ttf|woff|pdf|xls|htc)$ {  add_header Pragma "public";  add_header Cache-Control "public, must-revalidate, proxy-revalidate";	 access_log off;	 log_not_found off;	 expires   90d;}  location ~* .(jpg|jpeg|gif|css|png)$ {access_log off;expires 10d;}location ~ .php$ {fastcgi_pass 127.0.0.1:9001;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /var/www/sait.com/htdocs$fastcgi_script_name;include fastcgi_params;fastcgi_param QUERY_STRING $query_string;fastcgi_param REQUEST_METHOD $request_method;fastcgi_param CONTENT_TYPE $content_type;fastcgi_param CONTENT_LENGTH $content_length;fastcgi_intercept_errors on;fastcgi_ignore_client_abort off;fastcgi_connect_timeout 60;fastcgi_send_timeout 180;fastcgi_read_timeout 180;fastcgi_buffer_size 128k;fastcgi_buffers 4 256k;fastcgi_busy_buffers_size 256k;fastcgi_temp_file_write_size 256k;}}

Не забываем изменять домен sait.com на свой. (Даный файл работает правильно только с движком OpenCart, если у вас на этом сервере будут сайты иных систем, то гуглим решения как сделать nginx конфиг для вашей системы)

Теперь у нас работает OpenCart на Nginx без Apache, чего собственно и добивались.
Можем проверить скорость тут, и порадоваться быстродействию.
 

-------------------------Pagespeed-------------------------


Установим теперь на наш nginx модуль google pagespeed,представляет из себя набор фильтров и позволяет значительно повысить производительность сайта. [/size]что собственно должно еще больше ускорить загрузку нашего sait.com и отклик сервера.
Ссылка на официальный мануал тут.
Некоторая информация взята с хабра, rosehosting и еще многих-многих сайтов. но зазначу, то с начала и до успешного конца ни по одному мануал пройти не удалось.

И так Приступим:

ВНИМАНИЕ РЕКОМЕНДУЮ КОМАНДЫ ВЫПОЛНЯТЬ ПО ОДНОЙ ДАБЫ ВИДЕТЬ НЕТ ЛИ ОШИБОК.
Устанавливаем необходимые пакеты:

apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev

Создаем каталог на сервере, у меня это каталог» «temp»[/size]


mkdir /temp 
cd $HOME/temp

Задаем версию в переменную, Заргужаем и распаковываем модуль я брал (1.7.30.1 версию, можете выбрать какая вам по душе):

NPS_VERSION=1.7.30.1
wget https://github.com/pagespeed/ngx_pagespeed/archive/v${NPS_VERSION}-beta.zip
unzip v${NPS_VERSION}-beta.zip
cd ngx_pagespeed-${NPS_VERSION}-beta/

Загружаем и распаковываем PSOL:

wget https://dl.google.com/dl/page-speed/psol/${NPS_VERSION}.tar.gz
tar -xzvf ${NPS_VERSION}.tar.gz

Проделываем подобное с 1.4.5 версией Nginx (можете пробовать другую версию):

cd $HOME/temp
NGINX_VERSION=1.4.5
wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz
tar -xvzf nginx-${NGINX_VERSION}.tar.gz
cd nginx-${NGINX_VERSION}/

Если у нас nginx уже установлен, а в данном случае он установлен, то нам нужно прописать пути для конфигов.
Следующая команда выполняется целиком, копируйте ее в консоль полностью и выполняйте.


./configure  --conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--sbin-path=/usr/sbin/nginx \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--http-log-path=/var/log/nginx/access.log \
--http-client-body-temp-path=/var/lib/nginx/body \
--http-proxy-temp-path=/var/lib/nginx/proxy \
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
--http-uwsgi-temp-path=/var/lib/nginx/uwsgi \
--http-scgi-temp-path=/var/lib/nginx/scgi \
--prefix=/var/lib/nginx \
--with-http_stub_status_module \
--with-http_flv_module \
--with-http_ssl_module \
--with-http_dav_module \
--with-http_sub_module \
--with-http_realip_module \
--with-http_gzip_static_module \
--with-http_secure_link_module \
--with-ipv6 \
--with-debug \
--add-module=$HOME/temp/ngx_pagespeed-${NPS_VERSION}-beta\

Если после выполнения предыдущей команды видим следующую ошибку (взято с firstwiki):

[color=#ff0000][i]./configure: error: SSL modules require the OpenSSL library.You can either do not enable the modules, or install the OpenSSL libraryinto the system, or build the OpenSSL library statically from the sourcewith nginx by using --with-openssl= option. [/i][/color]

то устанавливаем это:

aptitude install libssl-dev

И повторяем попытку прописывания путей еще раз.

Если все гуд. начинаем установку:

make
apt-get install checkinstall
sudo make install

Успешно установились :)
перезагружаемся

service nginx restart

Успешно перезагрузились :) если не успешно, смотрим сообщение ниже и повторяем попытку
Проверяем версию nginx, если не совпадает с обновленной, значит пошло что-то не так.

nginx -v

Создадим папку для кеша

mkdir /var/cache/ngx_pagespeed

Теперь нужно подправить общий конфиг "Энджинкса":
Идем по пути /etc/nginx/nginx.conf

и вставляем код в тег http {СЮДА ВСТАВЛЯЕМ}

pagespeed on;pagespeed FileCachePath "/var/cache/ngx_pagespeed/";pagespeed EnableFilters combine_css,combine_javascript,rewrite_images,rewrite_css,rewrite_javascript,inline_images,recompress_jpeg,recompress_png,resize_images;pagespeed JpegRecompressionQuality 85;pagespeed ImageRecompressionQuality 85;pagespeed ImageInlineMaxBytes 2048;pagespeed LowercaseHtmlNames on;

и еще раз перезагружаем nginx

service nginx restart

Вот такая конфигурация позволила в несколько раз уменьшить скорость загрузки страниц на сайте, и соответственно сэкономить на хостинге и повысить ранжирование в поисковых системах.
Удачи.

  • +1 2
Надіслати
Поділитися на інших сайтах

Если у вас ошибка:
 
При перезагрузке


Restarting nginx: nginx: [emerg] the "spdy" parameter requires ngx_http_spdy_module in /etc/nginx/sites-enabled/22222:4

Идем по пути /etc/nginx/sites-available/ Открываем файл 22222
и приводим 4ю строку. в следующий вид
 

#listen 22222 default_server ssl spdy;

если ошибка при перезагрузке типа 

nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

На 80 порту nginx  висит. Вы компилируете nginx при запущеной его версии. В итоге скомпилированные бинарные файлы копируются поверх предыдущих, из-за чего текущие процессы nginx, которые находятся в памяти, зависают и не могут корректно завершится. Поэтому их легко можно убить вручную постым killall nginx и все

можно убить только 80 порт, командой sudo fuser -k 80/tcp

Надіслати
Поділитися на інших сайтах

  • 6 months later...
Далее Импортируем нашу MySQL Базу Дынных с помощью уже установленного PHPmyAdmin

который доступен по адресу sait.com/phpmyadmin

 

 

не могу попасть в phpmyadmin ..он входит в данный дистрибютив или надо установить? Если надо, то как?

Надіслати
Поділитися на інших сайтах


И не могу понять в какую папку выкладывать сайт и где настройки под каждый сайт.. только в default нашел папку html в ней сайт и отображался

А если на vps несколько сайтов..что делать?

Надіслати
Поділитися на інших сайтах


не могу попасть в phpmyadmin ..он входит в данный дистрибютив или надо установить? Если надо, то как?

отдельно.

google -> ubuntu how to install phpmyadmin

И не могу понять в какую папку выкладывать сайт и где настройки под каждый сайт.. только в default нашел папку html в ней сайт и отображался

А если на vps несколько сайтов..что делать?

настраивать, как тебе надо.

нашел про много сайтов на 1 сервере

http://stackoverflow.com/questions/11693135/multiple-websites-on-nginx-sites-available

объясните плз..что именно надо сделать?

что хочешь.

способов "сделать много сайтов на одном сервере" до чертиков.

в твоем случае налицо полное отсутствие понимания "шо я делаю".

начни с документации по apache (напрмиер - virtualhost) на оф.сайте (да - практически вся инфа будет на английском).

Надіслати
Поділитися на інших сайтах

ТС и объясняет как уйти от апаче на ngnix..phpmyadmin встал и смог после установки easyengine в него зайти, но после 

 

 

и заменяем все в нем на следующий код (спасибо pashast), ссылка на тему

я не смог в phpmyadmin попасть и как  несколько сайтов на 1 сервере теперь реализовать не знаю

Надіслати
Поділитися на інших сайтах


начни с документации по apache (напрмиер - virtualhost) на оф.сайте (да - практически вся инфа будет на английском).

>>

начни с документации по nginx (например - ServerBlock) на оф.сайте (да - практически вся инфа будет на английском).

но после ... я не смог в phpmyadmin попасть

что значит "не смог"?

давай подробности. куда попал? что в логах?

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.