Решение о написании подобного поста пришло достаточно внезапно. Просто удобнее в виртуальной машине настроить подобный сервер, нежели перезагружаться в отдельно стоящую ubuntu.
Данный пост вообще задумывается больше как заметка для себя самого, но, уверен, пригодится и другим людям.
В качестве ПО виртуализации я использую бесплатный VirtualBox. При настройке виртуальной машины я выбрал тип сети - сетевой мост, поскольку мне удобнее пробросить порты на роутере. Вы же можете сделать как вам удобнее. Память я ограничу на уровне 256мб.
При установке Ubuntu Server (я буду использовать 64-битный вариант, так что листинг команд будет для этой платформы) на одном из этапов можно выбрать, какое ПО установить сразу. Я выбираю обычно лишь SSH Server, дабы потом всю настройку производить уже из основной ОС, да и плюс можно копировать команды из разных мануалов, разбросанных по куче сайтов. Также настоятельно рекомендую языком системы выбрать английский, поскольку PuTTY (ssh-клиент) жутко не любит кириллицу.
Что в итоге будет получено? Я опишу установку и базовую настройку apache 2 (mod_wsgi и mod_php), nginx (статика), postgresql (для django-проектов), mysql (фактически, форк - Percona Server - отличается повышенной производительностью; устанавливается для php CMS), python/django (версии 2.7 и 1.3 соответственно), php с пачкой нужных расширений, а также memcached. Ах да, чуть не забыл. Конечно же, я установлю ещё и proftpd-server.
По возможности, буду использовать ppa для получения свежих версий пакетов, поскольку официальные репозитории далеко не всегда актуальны.
В качестве ssh-клиента под Windows я буду пользоваться PuTTY.
После установки ubuntu server и первой перезагрузки логинимся под нашим пользователем и выполняем единственную команду,
Первым делом, надо обновить информацию о пакетах и сами пакеты. Одной строкой. Будет спрошен пароль - вводите тот же, который и для пользователя.
Теперь установим django.
Далее создаём каталоги для тестового сайта.
Теперь установим PHP, добавим alias для PHP в конфиг виртуального хоста и проверим правильность установки.
Теперь установим proftpd-server и поправим права на папку django-projects так, чтобы не требовался root-доступ для изменения содержимого данного каталога.
Теперь устанавливаем каталог, в котором мы будем оказываться при заходе на ftp - /home/django-projects/
Теперь установим PostgreSQL.
Теперь проверяем корректность работы postgresql и mysql. Для этого заходим для начала по адресу http://nya-kawaii.no-ip.org/php/phpmyadmin/ и вводим в качестве логина - root, а в качестве пароля - тот, который вы устанавливали при установке percona server.
А для postgresql логином будет postgres, паролем - тот, который мы установили при настройке, а адресом - http://nya-kawaii.no-ip.org/php/phppgadmin/
Однако вначале нам понадобится чуть-чуть изменить конфиг phpmyadmin для того, чтобы было возможно входить с логином postgres. По-умолчанию данный логин недопустим для входа из соображений безопасности - ведь вначале у данного пользователя нет пароля. Однако, поскольку мы установили пароль, данная мера безопасности избыточна.
А также строчку $conf['servers'][0]['host'] = ''; заменяем на $conf['servers'][0]['host'] = 'localhost';
Ещё надо немного подправить конфиг postgresql.
Теперь доустановим поддержку mysql и postgresql для django.
Осталось совсем мало - установить memcached.
На этом данное руководство закончилось, надеюсь, и вам пригодится.
Данный пост вообще задумывается больше как заметка для себя самого, но, уверен, пригодится и другим людям.
В качестве ПО виртуализации я использую бесплатный VirtualBox. При настройке виртуальной машины я выбрал тип сети - сетевой мост, поскольку мне удобнее пробросить порты на роутере. Вы же можете сделать как вам удобнее. Память я ограничу на уровне 256мб.
При установке Ubuntu Server (я буду использовать 64-битный вариант, так что листинг команд будет для этой платформы) на одном из этапов можно выбрать, какое ПО установить сразу. Я выбираю обычно лишь SSH Server, дабы потом всю настройку производить уже из основной ОС, да и плюс можно копировать команды из разных мануалов, разбросанных по куче сайтов. Также настоятельно рекомендую языком системы выбрать английский, поскольку PuTTY (ssh-клиент) жутко не любит кириллицу.
Что в итоге будет получено? Я опишу установку и базовую настройку apache 2 (mod_wsgi и mod_php), nginx (статика), postgresql (для django-проектов), mysql (фактически, форк - Percona Server - отличается повышенной производительностью; устанавливается для php CMS), python/django (версии 2.7 и 1.3 соответственно), php с пачкой нужных расширений, а также memcached. Ах да, чуть не забыл. Конечно же, я установлю ещё и proftpd-server.
По возможности, буду использовать ppa для получения свежих версий пакетов, поскольку официальные репозитории далеко не всегда актуальны.
В качестве ssh-клиента под Windows я буду пользоваться PuTTY.
После установки ubuntu server и первой перезагрузки логинимся под нашим пользователем и выполняем единственную команду,
ifconfigкоторая покажет нам, какой ip присвоен серверу роутером. Далее по этому айпи можно подключаться через PuTTY.
Первым делом, надо обновить информацию о пакетах и сами пакеты. Одной строкой. Будет спрошен пароль - вводите тот же, который и для пользователя.
sudo apt-get update && sudo apt-get upgrade -yПо умолчанию установлен Python версии 2.7.1, что нас вполне устраивает. Так что приступим к установке apache.
sudo apt-get install apache2 libapache2-mod-wsgi libapache2-mod-php5 -y
sudo a2enmod expires rewrite headers && sudo service apache2 restartПосле этого, если вы зайдёте по ip виртуальной машины, вы увидите дефолтную страничку апача.
Теперь установим django.
sudo apt-get install python-dev python-setuptools -y && sudo easy_install djangoУстанавливаем MySQL (Percona Server).
gpg --keyserver hkp://keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A && gpg -a --export CD2EFD2A | apt-key add -Открываем файл /etc/apt/sources.list и добавляем в конец 2 строчки.
sudo nano /etc/apt/sources.list
deb http://repo.percona.com/apt maverick mainСохраняемся сочетанием Ctrl + O, Enter и затем выходим сочетанием Ctrl + X.
deb-src http://repo.percona.com/apt maverick main
sudo apt-get update && sudo apt-get install -y --force-yes percona-server-common-5.5 percona-server-client-5.5 percona-server-server-5.5При установке система спросит у вас желаемый пароль для MySQL. Вводим дважды.
Далее создаём каталоги для тестового сайта.
sudo mkdir -p /home/django-projects/testsite && sudo django-admin.py startproject apps && sudo perl -pi -e 's/apps.urls/urls/g' apps/settings.py && sudo mkdir -p /home/django-projects/testsite/deploy && sudo mkdir -p /home/django-projects/testsite/media && sudo mkdir -p /home/django-projects/testsite/logsТеперь надо создать виртуальный хост для нашего сайта. Я зарегистрировал для этого бесплатный домен nya-kawaii.no-ip.org на сайте no-ip.com.Сохранять и закрывать тектовые файлы в nano мы уже умеем, так что повторяться не буду.
sudo nano /etc/apache2/sites-enabled/nya-kawaii
<VirtualHost *:80>
ServerAdmin itigokurosaki@gmail.com
ServerName nya-kawaii.no-ip.org
ErrorLog /home/django-projects/testsite/logs/error_log
CustomLog /home/django-projects/testsite/logs/access_log common
WSGIScriptAlias / /home/django-projects/testsite/deploy/django.wsgi
WSGIDaemonProcess ad-site home=/home/django-projects/testsite/media/ \
processes=2 threads=4 maximum-requests=100 display-name=apache-dw-wsgi
Alias "/media_admin/" "/usr/local/lib/python2.7/dist-packages/Django-1.3-py2.7.egg/django/contrib/admin/media/"
<Location "/media_admin/">
SetHandler None
</Location>
Alias "/media/" "/home/django-projects/testsite/media/"
<Location "/media/">
SetHandler None
</Location>
</VirtualHost>
sudo nano /home/django-projects/testsite/deploy/django.wsgi
#/usr/bin/python
# -*- coding: utf-8 -*-
import os, sys
dn = os.path.dirname
PROJECT_ROOT = os.path.abspath( dn(dn(__file__)) )
DJANGO_PROJECT_ROOT = os.path.join(PROJECT_ROOT, 'apps')
sys.path.append( DJANGO_PROJECT_ROOT )
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
sudo service apache2 restartТеперь, когда я захожу по адресу http://nya-kawaii.no-ip.org (у вас - свой адрес), я вижу страничку "Welcome to Django".
Теперь установим PHP, добавим alias для PHP в конфиг виртуального хоста и проверим правильность установки.
sudo apt-get install -y --force-yes php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-pgsql
sudo nano /etc/apache2/sites-enabled/nya-kawaii
<VirtualHost *:80>
ServerAdmin itigokurosaki@gmail.com
ServerName nya-kawaii.no-ip.org
ErrorLog /home/django-projects/testsite/logs/error_log
CustomLog /home/django-projects/testsite/logs/access_log common
WSGIScriptAlias / /home/django-projects/testsite/deploy/django.wsgi
WSGIDaemonProcess ad-site home=/home/django-projects/testsite/media/ \
processes=2 threads=4 maximum-requests=100 display-name=apache-dw-wsgi
#WSGIProcessGroup www
Alias "/media_admin/" "/usr/local/lib/python2.7/dist-packages/Django-1.3-py2.7.egg/django/contrib/admin/media/"
<Location "/media_admin/">
SetHandler None
</Location>
Alias "/media/" "/home/django-projects/testsite/media/"
<Location "/media/">
SetHandler None
</Location>
Alias "/php/" "/home/django-projects/testsite/php/"
<Location "/php/">
SetHandler None
</Location>
</VirtualHost>
sudo mkdir /home/django-projects/testsite/php && cd /home/django-projects/testsite/php && sudo nano info.php
<?php
phpinfo();
?>
sudo service apache2 restartТеперь заходим по адресу http://nya-kawaii.no-ip.org/media/info.php и видим информацию обо всех загруженных модулях php.
Теперь установим proftpd-server и поправим права на папку django-projects так, чтобы не требовался root-доступ для изменения содержимого данного каталога.
sudo chmod 777 -R /home/django-projects/
sudo apt-get install -y proftpd ucfПри установке будет спрошено, какой режим запуска выбрать - выбираем standalone.
Теперь устанавливаем каталог, в котором мы будем оказываться при заходе на ftp - /home/django-projects/
sudo nano /etc/proftpd/proftpd.confНаходим строчку DefaultRoot и заменяем её на эту. Потом сохраняемся и выходим из nano.
DefaultRoot /home/django-projects/
sudo service proftpd restartПробуем зайти с логином и паролем от системы на наш ftp.
Теперь установим PostgreSQL.
sudo apt-get install python-software-properties -y && sudo add-apt-repository ppa:pitti/postgresql && sudo apt-get update && sudo apt-get install postgresql -y && sudo -u postgres pg_dropcluster --stop 9.0 main && sudo -u postgres pg_createcluster --start -e UTF-8 9.0 main
sudo -u postgres psql postgres
\password postgresВводим дважды пароль, который будет установлен для административного пользователя postgres сервера БД PostgreSQL. И потом выходим из этой консоли.
\qТеперь установим базирующиеся на php утилиты web-администрирования MySQL и PostgreSQL. Для этого в папке /testsite/php (через ftp-доступ) требуется создать 2 каталога - phpmyadmin и phppgadmin. Затем скачиваем обе утилиты с их официальных сайтов - phpmyadmin (я скачивал в формате 7z) и phppgadmin (тут я zip-архив скачал).
Теперь проверяем корректность работы postgresql и mysql. Для этого заходим для начала по адресу http://nya-kawaii.no-ip.org/php/phpmyadmin/ и вводим в качестве логина - root, а в качестве пароля - тот, который вы устанавливали при установке percona server.
А для postgresql логином будет postgres, паролем - тот, который мы установили при настройке, а адресом - http://nya-kawaii.no-ip.org/php/phppgadmin/
Однако вначале нам понадобится чуть-чуть изменить конфиг phpmyadmin для того, чтобы было возможно входить с логином postgres. По-умолчанию данный логин недопустим для входа из соображений безопасности - ведь вначале у данного пользователя нет пароля. Однако, поскольку мы установили пароль, данная мера безопасности избыточна.
cd /home/django-projects/testsite/php/phppgadmin/conf/
nano config.inc.phpНаходим строчку $conf['extra_login_security'] = true; и заменяем её на $conf['extra_login_security'] = false;
А также строчку $conf['servers'][0]['host'] = ''; заменяем на $conf['servers'][0]['host'] = 'localhost';
Ещё надо немного подправить конфиг postgresql.
sudo nano /etc/postgresql/9.1/main/pg_hba.confНаходим внизу пачку строчек с настройкой авторизации. В итоге они должны выглядет так.
# Database administrative login by Unix domain socketВот теперь можно логинится через web-интерфейс phppgadmin.
local all postgres ident
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local replication postgres peer
#host replication postgres 127.0.0.1/32 ident
#host replication postgres ::1/128 ident
Теперь доустановим поддержку mysql и postgresql для django.
sudo apt-get install -y postgresql-server-dev-9.1 python-mysqldb && sudo easy_install psycopg2Теперь установим nginx и подправим конфиги apache, поскольку теперь он не должен "слушать" 80 порт.
sudo add-apt-repository ppa:nginx/stable && sudo apt-get update && sudo apt-get install -y nginx
sudo nano /etc/apache2/ports.confИ меняем в двух местах 80 на 8080. Далее создаём виртуальный хост для nginx.
sudo nano /etc/nginx/sites-enabled/nya-kawaii
upstream backend {Создаём файл /etc/nginx/proxy.conf
server 127.0.0.1:8080;
}
server {
listen 80;
server_name nya-kawaii.no-ip.org;
access_log /home/django-projects/testsite/logs/nginx_access.log;
error_log /home/django-projects/testsite/logs/nginx_error.log;
location / {
proxy_pass http://backend;
include /etc/nginx/proxy.conf;
}
location /media/ {
root /home/django-projects/testsite/media;
}
}
sudo nano /etc/nginx/proxy.conf
proxy_redirect off;И правим порт в конфиге виртуального хоста, который мы создавали для апача - в первой строке заменяем 80 на 8080.
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
sudo nano /etc/apache2/sites-enabled/nya-kawaiiПерезапускаем службы apache2 и nginx
sudo service apache2 restart && sudo service nginx restartПроверяем работу - заходим на http://nya-kawaii.no-ip.org, http://nya-kawaii.no-ip.org/php/info.php
Осталось совсем мало - установить memcached.
sudo apt-get install -y memcachedНа этом этапе я перезагружаю виртуальную машину, чтобы посмотреть на количество потребляемой памяти.
sudo rebootИ, вот количество потребляемой оперативки.
top - 18:00:40 up 0 min, 1 user, load average: 1.37, 0.47, 0.16Видно, что едва-едва вписывается всё в оперативную память, однако, и установлено было весьма немало.
Tasks: 89 total, 1 running, 88 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni, 99.0%id, 1.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 246240k total, 241288k used, 4952k free, 13988k buffers
Swap: 520188k total, 0k used, 520188k free, 100120k cached
На этом данное руководство закончилось, надеюсь, и вам пригодится.
Комментариев нет :
Отправить комментарий