Server Ubuntu на локальной машине – установка и настройка.
Для установки в качестве сервера, в гостевую операционную систему Ubuntu, воспользуемся пакетом LAMP — Linux + Apache + MySql + PHP. Это стандартный пакет Ubuntu, который устанавливается и настраивается с помощью утилиты tasksel. После установки, для работы сервера с нашими сайтами, нам потребуется внести небольшие изменения в настройках. Но, первым делом лечим русскую раскладку. В версии Ubuntu 12.04, при работе в консоли, есть проблема с отображением русских букв — вместо них квадраты).
Лечим квадраты в консоли Ubuntu 12.04.
Сочетание клавиш для перехода в консоль из графического интерфейса, если у вас установлена версия Desktop, — ctrl+alt+F1. Обратно — ctrl+alt+F7. Все дальнейшие примеры я буду приводить именно с консолью. Также можно воспользоваться графическим терминалом, не выходя из графического интерфейса — ctrl+alt+T.
Для начала проверим как отображается кириллица, переходим в консоль (ctrl+alt+F1) — вводим логин и пароль, пароль вводится без отображения символов. Заходим под root-ом:
sudo su
Эта команда будет актуальна в течение сессии. Root — это супер пользователь, который имеет доступ к системным файлам. Под root-ом может войти только первый зарегистрированный в системе. Если вы будете давать команды под своим именем, то перед каждой командой добавляем sudo.
dpkg-reconfigure console-setup
Если вы видите что-то на подобие этого:
значит, проблема существует и требует вмешательства. Эта проблема замечена только в версии 12.04, в русском сообществе Ubuntu я вычитал как это лечить — делюсь. Открываем файл:
nano /etc/initramfs-tools/initramfs.conf
В самый низ добавляем FRAMEBUFFER=Y, сохраняем изменения ctrl+o, для подтверждения Enter и закрываем файл ctrl+x. Обновляем образ рамдиска и рестартуем:
update-initramfs -u reboot
После этого, с отображением кириллицы будет порядок, проверяем:
dpkg-reconfigure console-setup
Подготовка перед установкой LAMP.
Первым делом обновляем индексы пакетов. Необходимо соединение с интернетом.
apt-get update
Обновляем пакеты.
apt-get upgrade
Устанавливаем OpenSSH сервер.
apt-get install ssh openssh-server
Теперь нам нужно прописать IP-адреса, откроем окно VirtualBox и переходим в настройки файл –> Настройки, в разделе <<Сеть>> жмём на изображение отвёртки.
В открывшемся окне будет IP-адрес, под которым работает VirtualBox. В вкладке DNCP cerver — IP-адреса для динамических настроек сервера. Здесь они нам не понадобятся.
Переходим в консоль командной строки и открываем файл:
nano /etc/network/interfaces
Пропишем статические IP-адреса:
- auto eth0
- iface eth0 inet static
- address 192.168.56.3
- netmask 255.255.255.0
- network 192.168.56.100
- broadcast 192.168.56.255
- gateway 192.168.56.100
Сохраним и рестартуем, чтобы изменения вступили в силу.
/etc/init.d/networking restart
Для редактирования настроек сети, завершаем работу Ubuntu. Открываем VirtualBox и переходим на вкладку сеть, нашего сервера. Адаптер 1 — изменяем на виртуальный адаптер хоста, кабель подключен — это позволит нам соединятся с сервером из основной операционной системы. Добавляем ещё один адаптер 2 — соединение NAT, кабель должен быть подключен. Эта настройка нам нужна для выхода в интернет из гостевой операционной системы. Сохраним изменения и запустим сервер ubuntu. С этого момента все дальнейшие настройки будем производить через PuTTY. Скачать можно перейдя по ссылке. Открываем PuTTY и коннектимся к нашему серверу, записываем наш IP адрес 192.168.56.3. Название сервера — Ubuntu-Server. Вкладка translyation устанавливаем кодировку UTF-8 и возвращаемся на вкладку session — сохраняем настройки Save.
Заходим через ssh — отмечаем созданное нами подключение и жмём Open. Логинимся и поехали дальше.
Установка LAMP-сервера.
Установим программу tasksel — это инструмент для установки несколько зависимых пакетов в вашу систему, в качестве единой задачи. Нам он нужен будет для установки LAMP-сервера
apt-get install tasksel
Теперь установим LAMP-сервер.
tasksel install lamp-server
Вас попросят указать пароль для доступа к базе данных MySQL. После установки, открываем свой браузер в windows и набираем в адресной строке 192.168.56.3, если всё сделано правильно, вы увидите стандартную надпись Apache — It works! Всё работает! Поздравляю, сервер установлен.
Установка phpMyAdmin.
Для доступа и работы с базой данных MySQL установим phpMyAdmin
apt-get install phpmyadmin
У вас запросят указать название сервера отмечаем — Apache2, чтобы отметить жмём пробел. Для перехода Tab. Дальше, у вас спросят о настройках БД — да. В следующем окне введите пароль, который вы задавали для базы данных MySQL. Далее пароль для учётной записи, если оставить пустым — сгенерируется автоматически. Ну что? Пошли проверять? В строке браузера вводим 192.168.56.3/phpmyadmin — авторизуемся и входим в базу данных. Пользователь по умолчанию root.
Чтобы не вводить в адресной строке браузера IP-адрес нашего сервера, пропишем его название в файле hosts — открываем в редакторе file:///C:\Winows\System32\drivers\etc\hosts и регистрируем IP:
192.168.56.3 www.ubuntu-server.ru ubuntu-server.ru
Это название для примера, вы можете обозвать ваш сервер как угодно. Теперь ваш сервер будет доступен по указанному адресу, соответственно phpMyAdmin — ubuntu-server.ru/phpmyadmin/
Настройка сервера.
Сейчас настроен только один сайт, с файлом It works!, который находится по адресу: /var/www/. К папке /var/, по умолчанию, имеет доступ только суперпользователь — root. Я не буду рассматривать, в рамках данной статьи, изменение прав на эту папку, для использовании этой директории в качестве корневого каталога для сайтов. Для нас, при регистрации, была создана директория в папке /home/, в ней и будем размещать наши будущие сайты. Если вы устанавливали версию Ubuntu Desktop, можно перейти и ознакомится с выделенной директорией.
Для начала, создадим каталог где будут находится тестируемые сайты. Пускай иерархия будет такой: /home/ваш_домашний_каталог/www/. Где, в папке /www/ будут находится все сайты. Например:
/home/ваш_домашний_каталог/www/mysite.ru/,
/home/ваш_домашний_каталог/www/site1.ru/,
/home/ваш_домашний_каталог/www/site2.ru/ и т.д.
В директорию каждого сайта добавляем ещё по три папки:
- cgi-bin — папка для хранения скриптов.
- logs — для файлов ошибок.
- httpdocs — для файлов сайта
Пример создания каталогов через командную строку:
mkdir -p /home/ваш_домашний_каталог/www/mysite.ru
В конце статьи я привёл несколько примеров часто встречающихся команд для работы в командной строке.
Ну что же, первый сайт создан. Чтобы его увидел Apache, нужно показать ему (серверу) где мы находимся и какие настройки используем. Все настройки, всех сайтов, хранятся в /etc/apache2/sites-available/. Для каждого сайта — отдельный файл с настройками Apache. Создадим файл и сразу откроем его для редактирования.
nano /etc/apache2/sites-available/mysite.ru
Таким образом создастся новый файл и будет доступен для редактирования.
<VirtualHost *:80> ServerAdmin webmaster@mysite.ru DocumentRoot "/home/ваш_каталог/www/mysite.ru/httpdocs" ServerName mysite.ru ServerAlias www.mysite.ru ErrorLog "/home/ваш_каталог/www/mysite.ru/logs/error.log" CustomLog "/home/ваш_каталог/www/mysite.ru/logs/access.log" common <IfModule alias_module> ScriptAlias /cgi-bin/ "/home/ваш_каталог/www/mysite.ru/cgi-bin/" </IfModule> <IfModule mime_module> AddOutputFilter INCLUDES .shtml .php </IfModule> <Directory "/home/ваш_каталог/www/mysite.ru/httpdocs"> Options Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews AllowOverride All Order allow,deny Allow from all AddHandler server-parsed .shtml .shtm .html .htm </Directory> </VirtualHost>
Где, ваш_каталог — название вашей директории. Сохраняем и закрываем файл. Чтобы настройки вступили в силу, нужно новый сайт зарегистрировать и перезапустить Apache/.
a2ensite mysite.ru
Зарегистрированные сайты появляются в папке /etc/apache2/sites-enabled/. Рестарт Apache:
service apache2 restart
В файл C:\Winows\System32\drivers\etc\hosts основной операционной системы добавляем новый сайт.
192.168.56.3 www.mysite.ru mysite.ru
Всё! Ваш сайт доступен.
Установим модуль cURL для PHP.
apt-get install curl php5-curl
Рестартуем систему. Возможно потребуется некоторые незначительные изменения в файле /etc/php5/apache2/php.ini, к примеру — указать date.timezone = “”. При настройках по умолчанию, вообщем-то всё работоспособно. Единственное, что можно посоветовать, это пробежаться по настройкам и сравнить с настройками для сервера из под Windows.
engine = On short_open_tag = On asp_tags = Off precision = 14 y2k_compliance = On output_buffering = off zlib.output_compression = Off implicit_flush = Off unserialize_callback_func = serialize_precision = 100 allow_call_time_pass_reference = Off safe_mode = Off safe_mode_gid = Off safe_mode_include_dir = safe_mode_exec_dir = safe_mode_allowed_env_vars = PHP_ safe_mode_protected_env_vars = LD_LIBRARY_PATH disable_functions = disable_classes = highlight.string = #DD0000 highlight.comment = #FF9900 highlight.keyword = #007700 highlight.bg = #FFFFFF highlight.default = #0000BB highlight.html = #000000 expose_php = On max_execution_time = 30 max_input_time = 60 memory_limit = 128M error_reporting = E_ALL & ~E_DEPRECATED display_errors = On display_startup_errors = Off log_errors =On log_errors_max_len = 1024 ignore_repeated_errors = Off ignore_repeated_source = Off report_memleaks = On track_errors = Off html_errors = Off variables_order = "GPCS" request_order = "GP" register_globals = Off register_long_arrays = On register_argc_argv = On auto_globals_jit = On post_max_size = 8M magic_quotes_gpc = Off magic_quotes_runtime = Off magic_quotes_sybase = Off auto_prepend_file = auto_append_file = default_mimetype = "text/html" doc_root = user_dir = enable_dl = Off file_uploads = On upload_max_filesize = 8M max_file_uploads = 20 allow_url_fopen = On allow_url_include = Off default_socket_timeout = 60 upload_tmp_dir="C:\Windows\Temp" session.save_path="C:\Windows\Temp" error_log="C:\Windows\temp\php-errors.log" extension_dir="C:\webserver\server\php\ext" date.timezone = "Asia/Yekaterinburg" pdo_mysql.cache_size = 2000 pdo_mysql.default_socket= define_syslog_variables = Off SMTP = localhost smtp_port = 25 mail.add_x_header = On sql.safe_mode = Off odbc.allow_persistent = On odbc.check_persistent = On odbc.max_persistent = -1 odbc.max_links = -1 odbc.defaultlrl = 4096 odbc.defaultbinmode = 1 ibase.allow_persistent = 1 ibase.max_persistent = -1 ibase.max_links = -1 ibase.timestampformat = "%Y-%m-%d %H:%M:%S" ibase.dateformat = "%Y-%m-%d" ibase.timeformat = "%H:%M:%S" mysql.allow_local_infile = On mysql.allow_persistent = On mysql.cache_size = 2000 mysql.max_persistent = -1 mysql.max_links = -1 mysql.default_port = 3306 mysql.default_socket = mysql.default_host = localhost mysql.default_user = root mysql.connect_timeout = 60 mysql.trace_mode = Off mysqli.max_persistent = -1 mysqli.allow_persistent = On mysqli.max_links = -1 mysqli.cache_size = 2000 mysqli.default_port = 3306 mysqli.default_socket = mysqli.default_host = mysqli.default_user = mysqli.default_pw = mysqli.reconnect = Off mysqlnd.collect_statistics = On mysqlnd.collect_memory_statistics = Off pgsql.allow_persistent = On pgsql.auto_reset_persistent = Off pgsql.max_persistent = -1 pgsql.max_links = -1 pgsql.ignore_notice = 0 pgsql.log_notice = 0 sybct.allow_persistent = On sybct.max_persistent = -1 sybct.max_links = -1 sybct.min_server_severity = 10 sybct.min_client_severity = 10 bcmath.scale = 0 session.save_handler = files session.use_cookies = 1 session.use_only_cookies = 1 session.name = PHPSESSID session.auto_start = 0 session.cookie_lifetime = 0 session.cookie_path = / session.cookie_domain = session.cookie_httponly = session.serialize_handler = php session.gc_probability = 1 session.gc_divisor = 1000 session.gc_maxlifetime = 1440 session.bug_compat_42 = Off session.bug_compat_warn = Off session.referer_check = session.entropy_length = 0 session.cache_limiter = nocache session.cache_expire = 180 session.use_trans_sid = 0 session.hash_function = 0 session.hash_bits_per_character = 5 url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry" mssql.allow_persistent = On mssql.max_persistent = -1 mssql.max_links = -1 mssql.min_error_severity = 10 mssql.min_message_severity = 10 mssql.compatability_mode = Off mssql.secure_connection = Off tidy.clean_output = Off soap.wsdl_cache_enabled=1 soap.wsdl_cache_dir="/tmp" soap.wsdl_cache_ttl=86400 soap.wsdl_cache_limit = 5 ldap.max_links = -1 [PHP_BZ2] extension=php_bz2.dll [PHP_CURL] extension=php_curl.dll [PHP_GD2] extension=php_gd2.dll [PHP_GETTEXT] extension=php_gettext.dll [PHP_IMAP] extension=php_imap.dll [PHP_MBSTRING] extension=php_mbstring.dll [PHP_MYSQL] extension=php_mysql.dll [PHP_MYSQLI] extension=php_mysqli.dll [PHP_OPENSSL] extension=php_openssl.dll [PHP_PDO_MYSQL] extension=php_pdo_mysql.dll [PHP_PDO_ODBC] extension=php_pdo_odbc.dll [PHP_PDO_SQLITE] extension=php_pdo_sqlite.dll [PHP_PGSQL] extension=php_pgsql.dll [PHP_SOAP] extension=php_soap.dll [PHP_SOCKETS] extension=php_sockets.dll [PHP_SQLITE3] extension=php_sqlite3.dll [PHP_TIDY] extension=php_tidy.dll [PHP_XMLRPC] extension=php_xmlrpc.dll [PHP_EXIF] extension=php_exif.dll
Ну и на последок некоторые команды.
- chmod -R 777 /путь_до_каталога/ — изменение прав на каталог
- mkdir /…/…/… — создать каталог
- mkdir -p /…/…/ — создаёт вложенные каталоги
- rm -vR dir /…/…/ — удалить каталог
- rm -v /…/… — удалить файл
- /etc/init.d/apache2 start — запустить Apache
- /etc/init.d/apache2 stop — остановить Apache
- /etc/init.d/apache2 restart — рестарт Apache
- service apache2 restart — тоже рестарт Apache
- a2ensite название_сайта — регистрация нового сайта