Как установить стек lamp (apache, mysql, php) на ubuntu 20.04

1. Zend Server

There are a number of different options available for a development server. We’re going to use Zend Server. Although you can upgrade to a big pricy plan when you need it, at the start you’ll be just fine using the free version. Simply go to the Zend Server website and press the download button.

At the next screen, you’ll be able to select your operating system. Another advantage of Zend Server is its cross platform compatibility. You can install Zend Server on any of the three popular operating systems, although we’ll be focusing on Mac OS X in particular. Configuration of Zend Server is often operating system specific.

1.1 What Version Do I Download?

It’s important to make a distinction between the PHP version that’s shipped with Zend Server and the version of Zend Server itself. Always download the latest version of Zend Server. As for PHP version, there’s a reason they’re both listed prominently.

It doesn’t usually hurt to use the latest (stable) iteration of PHP, but not all web hosts are up to date with their PHP support. If you’re developing with a specific web host in mind (and you have no control over the PHP version used on those servers), keep this in mind when downloading Zend Server to avoid compatibility problems later on.

Configure the httpd.conf file

1. Open the app from your Application folder or type in the Spotlight Search (shortcut: )

2. Type cd /etc/apache2 and press enter.

3. Type and press enter. (This step is optional if you want to keep the copy of the original config file but I would recommend keeping one just in case.)

4. Type and press enter.

5. Press and type and press enter. ( will activate the search and it will look for a line with the keyword you put in)

Uncomment the following modules. The you see in front of each line means that line is commented out. That means that a specific line or module on that line will be ignored. What we want to do is, uncomment this so the module is enabled.

6. Use to find each of the modules below.

7. Uncomment the following line for the User home directories.

8. Replace the below two lines with your username document root. (You can comment on those two lines by putting  in front of them.

9. Replace with the following:

Note: USERNAME needs be replaced with your username (e.g. developer)

10. Press and type then enter

Replace  to 

Your  configuration in  will look like below:

11. Press and press enter to save the file.

12. Press to exit the nano editor.

Conclusion

It will probably be easier if you install a third party tool like MAMP, but that will add duplicate features to what is already available in your Mac. With a little tinkering, you can easily get your Mac to be a web server for all your web hosting needs.

Damien

Damien Oh started writing tech articles since 2007 and has over 10 years of experience in the tech industry. He is proficient in Windows, Linux, Mac, Android and iOS, and worked as a part time WordPress Developer. He is currently the owner and Editor-in-Chief of Make Tech Easier.

Subscribe to our newsletter!

Our latest tutorials delivered straight to your inbox

Проверка

Простой вариант проверить, что brew установился корректно — набрать команду:

Так же вы можете использовать следующую команду, чтобы удостовериться, что все корректно

Вы получите инструкции, если необходимо что-то исправить.
Если brew уже был установлен, удостоверьтесь, что вы используете последую доступную версию:

Теперь можно работать с brew.

Немного мат.части для общего развития.

У Homebrew есть формулы, это нечто вроде скриптов на Ruby, например вот:

Homebrew устанавливает программы в их собственные директории и создает символьную ссылку на них в .

Homebrew не станет устанавливать файлы за пределами своей директории. Вы можете установить Homebrew в любую директорию.

Установка PHP 5.4

В общем-то после установки brew, установка php становится весьма тривиальной задачей. В данном описании я покажу только установку конкретной версии PHP, а дальнейшем постараюсь показать вариант установки нескольких версий и переключения между ними. Англоязычное описание по установке нескольких версий php можно найти прямо здесь.

Этот процесс займет какое-то время.

Если вам потребуется подстроить php под себя, конфигурационный файл вы сможете найти по адресу:

Настройка Apache

Теперь, когда мы успешно установили php, необходимо объяснить Apache, как работать с ним. Для этого снова редактируем файл /etc/apache2/httpd.conf. Ищем в нем строку начинающуюся с #LoadModule php5_module.

# — в данном случае символ комментария, но мы можем не трогать эту строку, т.к. параметр все равно ссылается на версию php, которая была предустановленна вместе с OS X.

Просто добавляем под этой строкой следующее:

Так мы сказали Apache для обработки PHP запросов использовать PHP 5.4, который установили ранее.

Так же сразу следует убрать комментарий с объявления модуля mod_rewrite.so (описание на английском языке можно найти здесь):

Перезапускаем Apache, для обновления конфигурации $ sudo apachectl restart.

Теперь Apache должен начать обрабатывать php.

Для проверки этого утверждения используем команду phpinfo(), которая заодно расскажет нам практически все текущие параметры и пригодится в будущем.

Просто создаем файл info.php в папке ~/Sites/ и помещаем в него одну строку

Открываем в браузере http://localhost/info.php и наблюдаем страницу с информацией о нашем PHP.

Если Вы нашли ошибку, пожалуйcта выделите ее и нажмите Shift + E или чтобы информировать меня. Спасибо.

Step 5: Managing Apache HTTP Server

Managing your Apache HTTP Server involves starting, stopping, and restarting the service, as well as checking its status. Here’s how you can do it:

  1. Start Apache Service: If you have stopped the Apache service and want to start it again, use this command:
  2. Stop Apache Service: If you need to stop the Apache service, you can do it by typing:
  3. Restart Apache Service: In case you have made changes to the configuration file and need to restart the Apache service for changes to take effect, use this command:
  4. Check Apache Service Status: To check the status of the Apache service, you can use this command:

    This command will list all services managed by Homebrew along with their status. Look for httpd in this list to check its status.

Remember, every time you make changes to the Apache configuration file, you need to restart the service for changes to take effect.

Шаг 6 — Тестирование подключения к базе данных для PHP (необязательно)

Если вы хотите проверить, может ли PHP подключаться к MySQL и выполнять запросы для базы данных, вы можете создать тестовую таблицу с шаблонными данными и запрашивать ее содержимое из скрипта PHP. Прежде чем сделать это, нам нужно создать тестовую базу данных и нового пользователя MySQL с правильной настройкой для доступа к ней.

На момент написания этого руководства родная библиотека MySQL PHP не поддерживает , метод аутентификации по умолчанию для MySQL 8. Мы должны создать нового пользователя с помощью метода аутентификации для подключения к базе данных MySQL из PHP.

Мы создадим базу данных с именем example_database и пользователя с именем example_user, но вы можете использовать и другие имена.

Вначале необходимо подключиться к консоли MySQL с помощью учетной записи root:

Чтобы создать новую базу данных, запустите следующую команду в консоли MySQL:

Теперь вы можете создать нового пользователя и предоставить ему полный набор прав для только что созданной вами базы данных.

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

Теперь нам нужно предоставить этому пользователю разрешение для базы данных :

В результате пользователь example_user получит полный набор привилегий для базы данных example_database, но не будет обладать возможностью создания или изменения других баз данных на сервере.

Теперь закройте оболочку MySQL:

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

Обратите внимание на флаг в этой команде, который будет запрашивать пароль, который вы задаете при создании пользователя example_user. После входа в консоль MySQL убедитесь, что у вас есть доступ к базе данных example_database:. Результат будет выглядеть следующим образом:

Результат будет выглядеть следующим образом:

Далее мы создадим тестовую таблицу с именем todo_list. Из консоли MySQL запустите следующее выражение:

Теперь добавьте несколько строк содержимого в тестовую таблицу. Возможно, вам потребуется несколько раз повторить следующую команду, используя разные значения:

Чтобы подтвердить, что данные были успешно сохранены в таблицу, запустите следующую команду:

Вывод должен выглядеть так:

Убедившись в том, что у вас есть надлежащие данные в тестовой таблице, вы можете закрыть консоль MySQL:

Теперь вы можете создать скрипт PHP, который будет подключаться к MySQL и запрашивать ваше содержимое. Создайте новый файл PHP в пользовательской корневой веб-директории в предпочитаемом вами редакторе. Мы будем использовать :

Следующий скрипт PHP подключается к базе данных MySQL и запросам по содержимому таблицы todo_list, выводя результаты в список. Если существует проблема подключения к базе данных, будет выдана ошибка. Скопируйте это содержимое в скрипт :

/var/www/your_domain/todo_list.php

Сохраните и закройте файл после завершения редактирования.

Теперь вы можете получить доступ к этой странице в браузере, посетив доменное имя или публичный IP-адрес, настроенный для вашего сайта. После этого введите :

Вы должны увидеть примерно следующую страницу, отображающую содержимое, которое вы добавили в тестовую таблицу:

Это означает, что ваша среда PHP готова к подключению и взаимодействию с вашим сервером MySQL.

Create Sites Folder

  1. Click on Finder at the bottom left corner of your screen and click on Go > Home the top navigation bar. This will take you to your home directory, which will also be whatever your computer is named; in this case it’s david.
  2. Create a new folder and name it Sites (The Safari icon shown below gets added automatically to the Sites folder as shown below)
  3. Open your favorite text editor and create a file called index.php with the following code:
  1. Save index.php in the Sites folder you created
  2. Go back to Terminal and enter
  3. Press Ctrl+W to bring up search
  4. Search for Library and press enter. You should see this:
  5. Replace both occurrences of with (instead of david use your name which can be found at the top of your terminal next to the home icon)
  6. Press Ctrl+O followed by Enter to save these changes
  7. Press Ctrl+X to exit nano
  8. Type and press enter

Go back to Safari and refresh the localhost page and you’ll see Hello From Sites Folder! with PHP info that shows PHP 7 is being used.

Install MySQL

  1. Download the MySQL DMG for Mac OS X
  2. Install MySQL
  3. Install Preference Pane
  4. Open System Preferences → MySQL
  5. Ensure the MySQL Server is running
  6. Optionally, you can enable MySQL to start automatically. I do.

The README also suggests creating aliases for and . However there are other commands that are helpful such as . Instead, I updated my path to include .

Note: You will need to open a new Terminal window or run the command above for your path to update.

I also run . While this isn’t necessary, it’s good practice.

Connect PHP and MySQL

You need to ensure PHP and MySQL can communicate with one another. There are several options to do so. I do the following:

Change the MySQL root password

(This section is left in for reference – in previous macOS MySQL packages the password set during the installation process would fail – hence the info below. This newer version, however, seems to work).

Note that this is not the same as the root or admin password of macOS – this is a unique password for the
MySQL root user.

Stop MySQL

sudo /usr/local/mysql/support-files/mysql.server stop

Start it in safe mode:

sudo mysqld_safe --skip-grant-tables

This will be an ongoing command until the process is finished
so open another shell/terminal window, and log in without a password as root:

mysql -u root
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Change the lowercase ‘MyNewPass’ to what you want – and
keep the single quotes.

\q

Start MySQL

sudo /usr/local/mysql/support-files/mysql.server start

3.2. Проверка работы PHP модуля

А теперь проверим, все ли у нас корректно работает. Для начала создадим обычный .php файл:

Поместите в него php-код следующего содержания или любой другой php-код:

Также желательно протестировать как будет интерпретироваться PHP код, вставленный в HTML документ. Открываем на редактирование index.html:

Добавим несколько строк PHP кода в самое начало файла, этот код будет задавать переменную $day, присваивая ей текущее значение дня недели. И потом в теле HTML документа мы выведем значение переменной $day:

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

На этом настройка Apache завершена, и ваш компьютер теперь представляет собой практически полноценный веб-сервер.

Как мы увидели на втором шаге, использовать виртуальные хосты очень удобно, так как они дают возможность запустить условно неограниченное количество вебсайтов либо для разработки, либо для тестирования, либо для пользования в локальной сети.

Конечно, немаловажный вопрос о версии PHP. К сожалению, в Sierra используется уже немного подустаревший и в плане функционала и в плане производительности PHP 5.6.3. В High Sierra, насколько мне известно уже предустанавливается PHP 7.1. В любом случае, обновление до 7.2 крайне желательно, но эту тему мы рассмотрим уже в другой статье.

Предварительные условие для инструкции:

После выполнения предварительных условий начнем с установки некоторых зависимостей для Catalina:

Последняя версия MacOS 10.15 Catalina поставляется с предварительно установленной версией Apache 2.4, однако использовать эту версию вместе с Homebrew не правильно, поскольку Apple удалила некоторые необходимые скрипты в этом выпуске. Решение состоит в том, чтобы установить Apache 2.4 через Homebrew, а затем настроить его для работы на стандартных портах (80/443).

Теперь установим новую версию Apache которая поставляется по средствам Brew:

Теперь выполним команду которая позволит нашему серверу запускаться в автоматическом режиме:

Конфигурация Apache.

Теперь, когда у нас есть работающий веб-сервер, нам нужно будет внести некоторые изменения в конфигурацию, чтобы он работал лучше в качестве локального сервера разработки.

В последней версии Brew вы должны вручную установить порт прослушивания по умолчанию от 8080 до 80, поэтому нам нужно будет отредактировать файл конфигурации Apache

Теперь нам нужно создать папку Sites в корне домашнего каталога вашего пользователя. Это можно сделать сделать это в терминале или в Finder. В этой новой папке «Sites» vs мы создадим простой файл index.html и напишем там что-то что будет показывать, что это именно папака пользователя, например: <h1> My User Sites Folder </ h1>.

После этого перезапускаем Apache командой:

Если вы видите это, значит вы все сделали правильно и теперь Apache по умолчанию смотрит в папку Sites вашего пользователя. На этом первичную настройку Apache можно считать законченой.

  • Как сделать роутер из linux

      

  • Space engine не запускается windows 10

      

  • Как распечатать большое изображение на нескольких листах а4 mac os

      

  • Ноутбук не видит интерактивную доску на windows 10 как настроить

      

  • Как пропустить ввод ключа windows 7

User Level Root

The other web root directory which is missing by default is the ‘~/Sites’ folder in the User account. This takes a bit longer to set up but some users are very accustomed to using it.

You need to make a “Sites” folder at the root level of your account and then it will work. Once you make the Sites folder you will notice that it has a unique icon which is a throwback from a few versions older. Make that folder before you set up the user configuration file described next.

You have to make a few additional tweaks to get the ~/Sites folder back up and running.

Add a “username.conf” filed under:

/etc/apache2/users/

If you don’t already have one (very likely), then create one named by the short username of the account with the suffix
.conf, its location and permissions/ownership is best tackled by using the
Terminal, the text editor ‘nano‘ would be the best tool to deal with this.

If you would rather edit config files in a text editor as an app I would suggest the free
BBEdit which allows you to open hidden system files.

Launch
Terminal, (Applications/Utilities), and follow the commands below, first one gets you to the right spot, 2nd one opens the text editor on the command line (swap ‘username‘ with your account’s shortname, if you don’t know your account shortname type ‘whoami‘ the Terminal prompt):

cd /etc/apache2/users
sudo nano username.conf

Then add the content below
swapping in your ‘username’ in the code below:

<Directory "/Users/username/Sites/">
AllowOverride All
Options Indexes MultiViews FollowSymLinks
Require all granted
</Directory>

Permissions on the file should be:

-rw-r--r--   1 root  wheel  298 Jun 28 16:47 username.conf

If not you need to change…

sudo chmod 644 username.conf

Open the main httpd.conf and allow some modules:

sudo nano /etc/apache2/httpd.conf

And make sure these modules are uncommented (the first 2 should already be on a clean install):

LoadModule authz_core_module libexec/apache2/mod_authz_core.so
LoadModule authz_host_module libexec/apache2/mod_authz_host.so
LoadModule userdir_module libexec/apache2/mod_userdir.so
LoadModule include_module libexec/apache2/mod_include.so
LoadModule rewrite_module libexec/apache2/mod_rewrite.so

While you have this file open also to get php running, uncomment the below … (Mentioned also in the PHP part of the article).

LoadModule php7_module libexec/apache2/libphp7.so

And also uncomment this configuration file also in
httpd.conf – which allows user home directories.

Include /private/etc/apache2/extra/httpd-userdir.conf

Save all your changes (Control + O in nano)

Then open another Apache config file and uncomment another file:

sudo nano /etc/apache2/extra/httpd-userdir.conf

And uncomment:

Include /private/etc/apache2/users/*.conf

Save all your changes (Control + O in nano)

Restart Apache for the new file to be read:

sudo apachectl restart

Then this user level document root will be viewable at:

http://localhost/~username/

You should only see a directory tree like structure if the folder is empty.

Steps :

1- Starting Apache:

If you have a fresh installation, or you update to Mojave probably after entering localhost you will face the forbidden issue.

Forbidden error faced after entering the localhost

Below will the steps to fix it :

By default, the service Apache is installed on mac it needs only to be started.

sudo is used to give administrator access, in the first time, the shell will ask for the user password.If everything work fine you will get this image when typing localhost in the browser

2- PHP and files configurations

The default System Level Web Root document is still found at /Libarary/WebServer/Documents / and accessed throughhttp://localhost/ Now we will use the user level root to have something like: http://localhost/~username/

Before starting in this step you should determine you current username using the command:

whoami is a concatenation of the words “Who am I?” and prints the effective username of the current user when invoked.Now let’s create a Sites folder in the username home directory.

navigate to the Apache folder & create username.conf in /users directory

then add below and save. (replace the word username by yours )

now open httpd.conf

and uncomment these (use ctrl + w for search):

after finishing save the file (ctrl+x … then y) and exit. Edit httpd-userdir.conf

and uncomment

Resart appache

After restarting visit localhost/~username from your browser. (replace the word username by yours ) .If you want to verify the installation, and the php version installed you can use the phpinfo function. Create a file in “/Library/WebServer/Documents/”.

if everything is ok you should get something similar to this when accessing http://localhost/index.php

3- MySQL installation

Download mySQL from MySQL official site. Use the macOS 10.14 (x86, 64-bit), DMG Archive. It’s compatible with Mojave. During the MySQL process you are prompted to choose between strong and legacy password encryptions, since version 8 is entirely new, some software like phpMyAdmin can’t connect with the newer encryptions — so if you are going to use a GUI wrapper like phpMyadmin I suggest you stick to legacy.

To make it easier accessing mysql console in future it’s better to add it to ur PATH. This is done in your “.bash_profile” file in your home directory, if you don’t have that file just create it using nano:

Exit the file with type “control + x” and then “y”. After that reload the shell:

You can then start the MySQL server from System Preferences > MySQL > start mySQL server. or via the command line

When trying to accessing mySQL you may face issue like : 2002 socket error you can fix it by:

If you still unable to access the database the problem can be that the database isn’t initialized. So go to :System Preferences > MySQL > Initialize Database

4- phpMyAdmin Installation

Download phpMyAdmin from their official site. In this tutorial i downloaded: “phpMyAdmin-4.8.5-all-languages.zip”.Unzip it, rename the folder to “phpmyadmin” and then move it to ~/Sites/.Create a config folder

and then enter http://localhost/~username/phpmyadmin/setup/. (replace username by yours)

Click on new server > Authentication and fill it with the username and password. (these should be the same used when creating the database , or you can create a different user).Finally visit : http://localhost/~username/phpmyadmin/ (replace username by yours).

Настройка Apache

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

Все настройки содержатся в папке /etc/apache/:

  • Файл /etc/apache2/apache2.conf отвечает за основные настройки
  • /etc/apache2/conf-available/* — дополнительные настройки веб-сервера
  • /etc/apache2/mods-available/* — настройки модулей
  • /etc/apache2/sites-available/* — настойки виртуальных хостов
  • /etc/apache2/ports.conf — порты, на которых работает apache
  • /etc/apache2/envvars

Как вы заметили есть две папки для conf, mods и site. Это available и enabled. При включении модуля или хоста создается символическая ссылка из папки available (доступно) в папку enable (включено). Поэтому настройки лучше выполнять именно в папках available. Вообще говоря, можно было бы обойтись без этих папок, взять все и по старинке свалить в один файл, и все бы работало, но сейчас так никто не делает.

Сначала давайте рассмотрим главный файл конфигурации:

Timeout — указывает как долго сервер будет пытаться продолжить прерванную передачу или прием данных. 160 секунд будет вполне достаточно.

KeepAlive On — очень полезный параметр, позволяет передавать несколько файлов, за одно соединение, например, не только саму html страницу, но и картинки и css файлы.

MaxKeepAliveRequests 100 — максимальное количество запросов за одно соединение, чем больше, тем лучше.

KeepAliveTimeout 5 — таймаут соединения, обычно для загрузки страницы достаточно 5-10 секунд, так что больше ставить не нужно, но и рвать соединение раньше чем загрузились все данные тоже не нужно.

User, Group — пользователь и группа, от имени которых будет работать программа.

HostnameLookups — записывать в логи вместо ip адресов доменные имена, лучше отключить, чтобы ускорить работу.

LogLevel — уровень логирования ошибок. По умолчанию используется warn, но чтобы логи заполнялись медленнее достаточно включить error

Include — все директивы include отвечают за подключение рассмотренных выше конфигурационных файлов.

Директивы Directory отвечают за настройку прав доступа к той или иной директории в файловой системе. Синтаксис здесь такой:

Здесь доступны такие основные опции:

AllowOverride — указывает нужно ли читать .htaccess файлы из этой директории, это такие же файлы настроек и таким же синтаксисом. All — разрешать все, None — не читать эти файлы.

DocumentRoot — устанавливает из какой папки нужно брать документы для отображенияа пользователю

Options — указывает какие особенности веб-сервера нужно разрешить в этой папке. Например, All — разрешить все, FollowSymLinks — переходить по символическим ссылкам, Indexes — отображать содержимое каталога если нет файла индекса.

Require — устанавливает, какие пользователи имеют доступ к этому каталогу. Require all denied — всем запретить, Require all granted — всем разрешить. можно использовать вместо all директиву user или group чтобы явно указать пользователя.

Order — позволяет управлять доступом к директории. Принимает два значения Allow,Deny — разрешить для всех, кроме указанных или Deny,Allow — запретить для всех, кроме указанных. Теперь мы можем запретить доступ к директории для всех: Deny from all, а затем разрешить только для приложения от losst.pro: Allow from losst.pro.

Здесь все эти директивы не используются, поскольку нас устраивают значения по умолчанию, но вот в файлах .htaccess они могут быть очень полезны.

У нас остался файл /etc/apache2/ports.conf:

В нем только одна директива, Listen, которая указывает программе на каком порту нужно работать.

Последний файл /etc/apache2/envvars, его вы вряд ли будете использовать, в нем указанны переменные, которые можно использовать в других конфигурационных файлах.

Дальше поговорим немного о htacess. Совсем немного.

Step 3: Configuring the Apache HTTP Server

The Apache web server is running now on your macOS system. Now you will want to make some configuration changes according to your local development environment. A configuration file /use/local/etc/httpd/httpd.conf is generated by the installer which you need to edit in a text editor and make following changes.

  1. Set Apache Port: The Homebrew’s version of httpd uses port 8080. You have to manually change the listen port from the default of 8080 to the standard port 80.
    Find the line with  
    Listen 8080
    
    and change it to  
    Listen 80
    
  2. Change Document Root: Now, configure the document root for Apache. The default document root is set to “/usr/local/var/www”. You can keep the document root unchanged and put your website files to this document root. But I assume you want to change the document root to set it to your home directory.

    Change this to point to your user directory where your_user is the name of your user account:

     DocumentRoot /Users/rahul/Sites
    

    You also need to change the tag configured just right below the DocumentRoot line. This should also be changed to point to your new document root as well:

    In that same block you will find an AllowOverride option, Set this to all to enable the uses of the .htaccess file in Apache.

    <Directory /Users/rahul/Sites>
       
       #
       # AllowOverride controls what directives may be placed in .htaccess files.
       # It can be "All", "None", or any combination of the keywords:
       #   AllowOverride FileInfo AuthConfig Limit
       #
       AllowOverride all 
    </Directory>
    
  3. Enabling Rewrite Module: Also, you should enable the mod_rewrite module by removing the leading symbol from the following line. Search the line and update it. this will enable URL rewrite on Apache.
     LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so
    
  4. Setup User and Group for Apache: As you have configured the Apache document root to your home directory. You will face issues with the permissions because, by default, Apache runs as the user daemon and group daemon (Maybe username and group are to _www). For the personal systems, You can change these to match your user account (replace user_name with your real username), with a group of staff.
      User user_name
      Group staff
    
Понравилась статья? Поделиться с друзьями:
Клуб настройки
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: