Устанавливаем Redis php5.3

Redis — это кеш-хранилище данных, в котором данные хранятся в оперативной памяти, что дает возможность очень быстрого доступа к ним. Похож на более известный всем memcached, но в отличии от которого Redis имеет различные структуры хранения данных, а не только “ключ-значение”

ВНИМАНИЕ. Инструкция устарела. Следуйте инструкции на английском

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

Устанавливаем Redis
Итак как установить Redis из исходного кода? Смотрим последнюю стабильную версию на странице Redis Download. Скачиваем её и распаковываем:

mkdir /tmp/redis
cd /tmp/redis
wget http://download.redis.io/releases/redis-3.0.6.tar.gz
tar xzf redis-*
cd redis-*

 

Далее собираем с помощью утилиты make и устанавливаем:

make
sudo make install clean

 

Если у вас 64 bit-ая система, то нужно установить libc6-dev-i386, собрать и затем установить. В Ubuntu это можно сделать следующим образом:

sudo apt-get install libc6-dev-i386
make 32bit
sudo make install clean

 

Создаем конфиг:

sudo mkdir /etc/redis
sudo cp redis.conf /etc/redis/redis.conf

 

Редактируем его:

sudo nano /etc/redis/redis.conf

 

Пример минимальной конфигурации:

#запускать как демон в бекграунде
daemonize yes
#задаем порт, по умолчанию 6379
port 6379
#задаем ip интерфейса на котором будет слушаться демон,
#если оставить закоментированным, то будет доступен
#на всех интерфейсах
bind 127.0.0.1
#куда сбрасывать дамп данных

dir /var/opt

 

По умолчанию redis-server устанавливается в /usr/local/bin/redis-server. Убедится в этом можно при помощи команды whereis:

whereis redis-server

#redis-server: /usr/local/bin/redis-server

 

Что бы сервер был доступен после запуска системы, можно прописать строку в /etc/rc.local перед “exit 0”

/usr/local/bin/redis-server /etc/redis/redis.conf
Запускаем сервер

sudo redis-server /etc/redis/redis.conf

 

И пробуем подключится к нему

redis-cli
Устанавливаем PhpRedis
PhpRedis – PHP extension от Nicolas Favre-Felix, написанный на С, который позволяет обращаться к Redis из php. Почему PhpRedis, ведь есть другие php библиотеки позволяющие обращаться к Redis? Ответ – скорость. Модуль написаный на С будет быстрее библиотеки написаной на php

Нам понадобится php5-dev

В Ubuntu его можно установить так:

apt-get install php5-dev

 

В CentOS так:

yum install php5-dev
Далее скачиваем, собираем и устанавливаем phpredis

sudo -i
cd /tmp
wget https://github.com/nicolasff/phpredis/zipball/master -O phpredis.zip
unzip phpredis.zip
cd phpredis-*
phpize
./configure
make && make install

 

Теперь необходимо добавить модуль в конфиг php для Ubuntu с PHP 5.3

sudo touch /etc/php5/conf.d/redis.ini
sudo echo extension=redis.so > /etc/php5/conf.d/redis.ini

 

для Ubuntu с PHP 5.5

touch /etc/php5/conf.d/redis.ini
touch /etc/php5/mods-available/redis.ini
echo extension=redis.so > /etc/php5/mods-available/redis.ini
ln -s /etc/php5/mods-available/redis.ini /etc/php5/apache2/conf.d
ln -s /etc/php5/mods-available/redis.ini /etc/php5/cli/conf.d

 

для CentOS

sudo touch /etc/php.d/redis.ini

 

sudo echo extension=redis.so > /etc/php.d/redis.ini
Проверить работоспособность PhpRedis можно командой, после которой должна появится надпись “OK”

php -r "if (new Redis() == true){ echo \"\r\n OK \r\n\"; }"

 

Перед использованием PhpRedis в php скриптах, не забудьте перезапустить веб сервер

если это Apache

sudo /etc/init.d/apache2 restart

 

если nginx

sudo /etc/init.d/nginx restart

 

Методы ново доступного класса Redis доступны на странице PhpRedis

Depends: libc6

 sudo apt-get install sphinxsearch

Reading package lists… Done

Building dependency tree       

Reading state information… Done

You might want to run ‘apt-get -f install’ to correct these:

The following packages have unmet dependencies:

libc6-dev : Depends: libc6 (= 2.15-0ubuntu10.16) but 2.15-0ubuntu10.18 is to be installed

sphinxsearch : Depends: libpq5 but it is not going to be installed

                Depends: libstemmer0d (>= 0+svn527) but it is not going to be installed

E: Unmet dependencies. Try ‘apt-get -f install’ with no packages (or specify a solution).

sudo reboot

sudo aptitude reinstall libc6

English Verb

Изучение английского языка онлайн 365 дней в году бесплатно


VERB
PAST SIMPLE
PAST PARTICIPLE
ПЕРЕВОД
be [bi:] was [wɔz], were [wз:] been [bi:n] Быть
beat [bi:t] beat [bi:t] beaten [‘bi:tn] Бить
become [bi:kʌm] became [bi:keim] become[bi:kʌm] Становиться
begin [bi’gin] began [bi’gæn] begun [bi’gʌn] Начинать
bleed [bli:d] bled [bled] bled [bled] Кровоточить
blow [blou] blew [blu:] blown [bloun] Дуть
break [breik] broke [brouk] broken [‘brouk(e)n] Ломать
bring [briŋ] brought [brɔ:t] brought [brɔ:t] Приносить
build [bild] built [bilt] built [bilt] Строить
burn [bз:n] burnt [bз:nt] burnt [bз:nt] Гореть
burst [bз:st] burst [bз:st] burst [bз:st] Разразиться
buy [bai] bought [bɔ:t] bought [bɔ:t] Покупать
catch [kætʃ] caught [kɔ:t] caught [kɔ:t] Ловить, хватать, успеть
choose [tʃu:z] chose [ʃəuz] chosen [tʃəuz(ə)n] Выбирать
come [kʌm] came [keim] come [kʌm] Приходить
cost [cɔst] cost [cɔst] cost [cɔst] Стоить
creep [kri:p] crept [krept] crept [krept] Ползать
cut [kʌt] cut [kʌt] cut [kʌt] Резать
do [du:] did [did] done [dʌn] Делать
draw [drɔ:] drew [dru:] drawn [drɔ:n] Рисовать, тащить
dream [dri:m] dreamt [dremt] dreamt [dremt] Мечтать, дремать
drink [driŋk] drank [dræŋk] drunk [drʌŋk] Пить
drive [draiv] drove [drouv] driven [‘drivn] Водить
eat [i:t] ate [et] eaten [‘i:tn] Есть
fall [fɔ:l] fell [fel] fallen [‘fɔ:lən] Падать
feed [fi:d] fed [fed] fed [fed] Кормить
feel [fi:l] felt [felt] felt [felt] Чувствовать
fight [fait] fought [fɔ:t] fought [fɔ:t] Бороться
find [faind] found [faund] found [faund] Находить
fit [fit] fit [fit] fit [fit] Подходить по размеру
fly [flai] flew [flu:] flown [floun] Летать
forget [fə’get] forgot [fə’gɔt] forgotten [fə’gɔt(ə)n] Забывать
forgive [fo’giv] forgave [fo’geiv] forgiven [fo’givn] Прощать
freeze [fri:z] froze [frouz] frozen [‘frouzn] Замерзать
get [ get ] got [gɔt] got [gɔt] Получать
give [giv] gave [geiv] given [givn] Давать
go [gou] went [went] gone [gɔn] Идти
grow [grou] grew [gru:] grown [groun] Расти
hang [hæŋ] hung [hʌŋ] hung [hʌŋ] Вешать
have [hæv] had [hæd] had [hæd] Иметь
hear [hiə] heard [hз:d] heard [hз:d] Слышать
hide [haid] hid [hid] hidden [‘hidn] Прятать
hit [hit] hit [hit] hit [hit] Попадать в цель
hold [hould] held [held] held [held] Держать
hurt [hз:t] hurt [hз:t] hurt [hз:t] Ушибить
keep [ki:p] kept [kept] kept [kept] Содержать
kneel [ni:l] knelt [nelt] knelt [nelt] Стоять на коленях
know [nou] knew [nju:] known [noun] Знать
lay [lei] laid [leid] laid [leid] Класть
lead [li:d] led [led] led [led] Вести
lean [li:n] leant [lent] leant [lent] Наклоняться
learn [lз:n] learnt [lз:nt] learnt [lз:nt] Учить
leave [li:v] left [left] left [left] Оставлять
lend [lend] lent [lent] lent [lent] Занимать
let [let] let [let] let [let] Позволять
lie [lai] lay [lei] lain [lein] Лежать
light [lait] lit [lit] lit [lit] Освещать
lose [lu:z] lost [lɔst] lost [lɔst] Терять
make [meik] made [meid] made [meid] Производить
mean [mi:n] meant [ment] meant [ment] Значить
meet [mi:t] met [met] met [met] Встречать
mistake [mis’teik] mistook [mis’tuk] mistaken [mis’teik(e)n] Ошибаться
pay [pei] paid [peid] paid [peid] Платить
prove [pru:v] proved [pru:vd] proven [pru:vn] Доказывать
put [put] put [put] put [put] Положить
quit [kwit] quit [kwit] quit [kwit] Выходить
read [ri:d] read [red] read [red] Читать
ride [raid] rode [roud] ridden [‘ridn] Ездить верхом
ring [riŋ] rang [ræŋ] rung [rʌŋ] Звенеть
rise [raiz] rose [rouz] risen [‘rizn] Подниматься
run [rʌŋ] ran [ræŋ] run [rʌŋ] Бежать
say [sei] said [sed] said [sed] Говорить
see [si:] saw [sɔ:] seen [si:n] Видеть
seek [si:k] sought [sɔ:t] sought [sɔ:t] Искать
sell [sel] sold [sould] sold [sould] Продавать
send [send] sent [sent] sent [sent] Посылать
set [set] set [set] set [set] Ставить
sew [sou] sewed [soud] sewn [soun] Шить
shake [ʃeik] shook [ʃuk] shaken [‘ʃeik(ə)n] Встряхивать
show [ʃəu] showed [ʃəud] shown [ʃəun] Показывать
shrink [ʃriŋk] shrank [ʃræŋk] shrunk [ʃrʌŋk] Уменьшать
shut [ʃʌt] shut [ʃʌt] shut [ʃʌt] Закрывать
sing [siŋ] sang [sæŋ] sung [sʌŋ] Петь
sink [siŋk] sank [sæŋk], sunk [sʌŋk] sunk [sʌŋk] Тонуть
sit [sit] sat [sæt] sat [sæt] Сидеть
sleep [sli:p] slept [slept] slept [slept] Спать
slide [slaid] slid [slid] slid [slid] Скользить
sow [sou] sowed [soud] sown [soun] Сеять
speak [spi:k] spoke [spouk] spoken [‘spouk(e)n] Говорить
spell [spel] spelt [spelt] spelt [spelt] Произносить по буквам
spend [spend] spent [spent] spent [spent] Тратить
spill [spil] spilt [spilt] spilt [spilt] Проливать
spoil [spɔil] spoilt [spɔilt] spoilt [spɔilt] Портить
spread [spred] spread [spred] spread [spred] Расстилать
spring [spriŋ] sprang [spræŋ] sprung [sprʌŋ] Прыгать
stand [stænd] stood [stu:d] stood [stu:d] Стоять
steal [sti:l] stole [stoul] stolen [‘stəulən] Красть
stick [stik] stuck [stʌk] stuck [stʌk] Колоть
sting [stiŋ] stung [stʌŋ] stung [stʌŋ] Жалить
sweep [swi:p] swept [swept] swept [swept] Выметать
swell [swel] swelled [sweld] swollen [‘swoul(e)n] Разбухать
swim [swim] swam [swem] swum [swʌm] Плавать
swing [swiŋ] swung [swʌŋ] swung [swʌŋ] Качать
take [teik] took [tuk] taken [‘teik(ə)n] Брать, взять
teach [ti:tʃ] taught [tɔ:t] taught [tɔ:t] Учить
tear [tɛə] tore [tɔ:] torn [tɔ:n] Рвать
tell [tel] told [tould] told [tould] Рассказывать
think [θiŋk] thought [θɔ:t] thought [θɔ:t] Думать
throw [θrəu] threw [θru:] thrown [θrəun] Бросать
understand [ʌndə’stænd] understood [ʌndə’stud] understood [ʌndə’stud] Понимать
wake [weik] woke [wouk] woken [‘wouk(e)n] Просыпаться
wear [wɛə] wore [wɔ:] worn [wɔ:n] Носить
weep [wi:p] wept [wept] wept [wept] Плакать
wet [wet] wet [wet] wet [wet] Мочить
win [win] won [wʌn] won [wʌn] Выигрывать
wind [waind] wound [waund] wound [waund] Извиваться
write [rait] wrote [rout] written [‘ritn] Писать

 

 

Words:

currency = валюта

queues = очереди

 

consumer = потребитель

Объектно-ориентированное программирование

Объе́ктно-ориенти́рованное, или объектное, программи́рование (в дальнейшем ООП) — парадигма программирования, в которой основными концепциями являются понятия объектов и классов. В случае языков с прототипированием вместо классов используются объекты-прототипы.

Основные понятия:

Абстракция

Абстрагирование — это способ выделить набор значимых характеристик объекта, исключая из рассмотрения незначимые. Соответственно, абстракция — это набор всех таких характеристик.[1]

Инкапсуляция

Инкапсуляция — это свойство системы, позволяющее объединить данные и методы, работающие с ними в классе, и скрыть детали реализации от пользователя.[1]

Наследование

Наследование — это свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью. Класс, от которого производится наследование, называется базовым, родительским или суперклассом. Новый класс — потомком, наследником или производным классом.[1]

Полиморфизм

Полиморфизм — это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.[1]

 

Класс

Класс является описываемой на языке терминологии (пространства имён) исходного кода моделью ещё не существующей сущности (объекта). Фактически он описывает устройство объекта, являясь своего рода чертежом. Говорят, что объект — это экземпляр класса. При этом в некоторых исполняющих системах класс также может представляться некоторым объектом при выполнении программы посредством динамической идентификации типа данных. Обычно классы разрабатывают таким образом, чтобы их объекты соответствовали объектам предметной области.

Объект

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

 

 

 

Прототип

Прототип — это объект-образец, по образу и подобию которого создаются другие объекты. Объекты-копии могут сохранять связь с родительским объектом, автоматически наследуя изменения в прототипе; эта особенность определяется в рамках конкретного языка.

В центре ООП находится понятие объекта. Объект — это сущность, которой можно посылать сообщения, и которая может на них реагировать, используя свои данные. Объект — это экземпляр класса. Данные объекта скрыты от остальной программы. Сокрытие данных называется инкапсуляцией.

 

Сущность:

Наличие инкапсуляции достаточно для объектности языка программирования, но ещё не означает его объектной ориентированности — для этого требуется наличие наследования.

 

Но даже наличие инкапсуляции и наследования не делает язык программирования в полной мере объектным с точки зрения ООП. Основные преимущества ООП проявляются только в том случае, когда в языке программирования реализован полиморфизм; то есть возможность объектов с одинаковой спецификацией иметь различную реализацию

 

 

 

 

todo архитипы контейнеры

PhpStorm

Подключения к базе данных

 

 

Удаленное подключение к серверу

полная копия git pull хранится на локальном компьютере

такая же  копия на тестовом сервере

все изменения делаются локально и загружаются на сервер

Удобно тем что на рабочем компьютере не нужно разворачивать LAMP

 

 

Install Apache, MariaDB and PHP7 (LAMP Stack) on Ubuntu 16.04 LTS

Ubuntu 16.04 LTS Xenial Xerus comes with PHP7 by default so you don’t have to rely on third-party PPA to get PHP7 installed. In this tutorial, we are going to look at how to install Apache, MariaDB and PHP7 (LAMP stack) on Ubuntu 16.04 LTS Xenial Xerus.

Update: This tutorial is also successfully tested on Ubuntu 16.10 Yakkety Yak.

Step 1: Update Ubuntu 16.04 LTS

Before we install any software, it’s always a good idea to update repository and software packages. SSH into your Ubuntu 16.04 server and enter the below commands.

sudo apt-get update

sudo apt-get upgrade

sudo apt-get dist-upgrade

Step 2: Install Apache Web Server

Enter this command to install Apache Web server.

sudo apt-get install apache2 apache2-utils

 

After it’s installed, Apache should be automatically started. Check out its status with systemctl.

 

systemctl status apache2

Output:

● apache2.service - LSB: Apache2 web server
   Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since Wed 2016-04-20 18:32:57 EDT; 32s ag
o

If it’s not running, use systemctl to start it.

sudo systemctl start apache2

It’s also a good idea to enable Apache to automatically start when Ubuntu 16.04 is rebooted.

sudo systemctl enable apache2

Check Apache version:

apache2 -v

output:

Server version: Apache/2.4.18 (Ubuntu)
Server built: 2016-04-15T18:00:57

Now in your browser’s address bar, type the public IP address of Ubuntu 16.04 LTS server. You should see the “It works!” Web page which means Apache Web server is running correctly.

 

 

You can use the following command to fetch the public IP address of Ubuntu 16.04 server.

sudo apt-get install curl

curl http://icanhazip.com

If you are installing LAMP on your local Ubuntu 16.04 box, just type 127.0.0.1 or localhost in the browser address bar.

Finally, we need to make www-data (Apache user) as the owner of web root directory.

sudo chown www-data /var/www/html/ -R

Step 3: Install MariaDB . or just >

sudo apt install mysql-server php7.0-mysql

MariaDB is a drop-in replacement for MySQL. It is developed by former members of MySQL team who concerned that Oracle might turn MySQL into a closed-source product. Many Linux distributions and companies have migrated to MariaDB. So we’re going to install MariaDB instead of MySQL.

sudo apt-get install mariadb-server mariadb-client

After it’s installed, MariaDB server should be automatically stared. Use systemctl to check its status.

systemctl status mysql

Output:

● mysql.service - LSB: Start and stop the mysql database server daemon
 Loaded: loaded (/etc/init.d/mysql; bad; vendor preset: enabled)
 Active: active (running) since Wed 2016-04-20 18:52:01 EDT; 1min 30s ago
 Docs: man:systemd-sysv-generator(8)


 

 

 

If it’s not running, start it with this command:

sudo systemctl start mysql

To enable MariaDB to automatically start when Ubuntu 16.04 is rebooted:

sudo systemctl enable mysql

Now run the post installation security script.

sudo mysql_secure_installation

When it asks you to enter MariaDB root password, press enter because you have not set the root password yet. Then enter y to set the root password for MariaDB server.

 

 

 

 

Next you can just press Enter to answer all the remaining questions. This will remove anonymous user, disable remote root login and remove test database. This step is a basic requirement for MariaDB database security.

 

 

Step 4: Install PHP7

Enter the following command to install PHP7 and PHP7 extensions.

sudo apt-get install php7.0-fpm php7.0-mysql php7.0-common php7.0-gd php7.0-json php7.0-cli php7.0-curl libapache2-mod-php7.0

Enable the Apache php7.0 module then restart Apache Web server.

sudo a2enmod php7.0

sudo systemctl restart apache2

Step 5: Test PHP

To test the cli version of PHP7, we just need to enter this command:

user@www:~$ php --version
PHP 7.0.4-7ubuntu2 (cli) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
  with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

To test PHP with Apache server, first create a test.php file in the Web root directory.

sudo nano /var/www/html/test.php

Paste the following PHP code into the file.

<?php phpinfo(); ?>

Save and close the file. Now in the browser address bar, enter server-ip-address/test.php. Replace sever-ip-address with your actual IP. Of course, if you follow this tutorial on your local computer, then type 127.0.0.1/test.phpor localhost/test.php.

You should see your server’s PHP information. This means PHP processing is fine. You can find that Zend OPcache is enabled.

 

 

Apache PHP7.0 Module vs PHP-FPM

There are now basically two ways to run PHP code with Apache web server:

  • Apache PHP module
  • PHP-FPM.

The above configuration uses the Apache PHP7.0 module to handle PHP code. It’s totally fine and if you are happy with it, then delete test.php file now so that no one else can see your server’s information and don’t follow the instructions below.

But if you want to use PHP-FPM to run PHP code, then you need to enable Apache mod_proxy_fcgi module with the following command:

sudo a2enmod proxy_fcgi

Then edit the virtual host configuration file. This tutorial uses the default virtual host as an example.

sudo nano /etc/apache2/sites-available/000-default.conf

Add the ProxyPassMatch directive to this file.

....

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/run/php/php7.0-fpm.sock|fcgi://localhost/var/www/html/

.....

Save and close this file. Restart Apache2.

sudo systemctl restart apache2

Start php7.0-fpm

sudo systemctl start php7.0-fpm

Enable php7.0-fpm to start at boot time.

sudo systemctl enable php7.0-fpm

Check status:

systemctl status php7.0-fpm

Output:

● php7.0-fpm.service - The PHP 7.0 FastCGI Process Manager
 Loaded: loaded (/lib/systemd/system/php7.0-fpm.service; enabled; vendor pre
set: enabled)
 Active: active (running) since Wed 2016-04-20 19:21:05 EDT; 2s ago

Now if you refresh the test.php page in your browser, you will find that Server API is FPM/FastCGI which means Apache web server will pass PHP requests to PHP-FPM.

 

For your server’s security, you should delete test.php file now.

Congrats! You have successfully installed Apache, MariaDB and PHP7 on Ubuntu 16.04 LTS Xenial Xerus.

Rate this tutorial

Continue reading “Install Apache, MariaDB and PHP7 (LAMP Stack) on Ubuntu 16.04 LTS”