Installing apache, mysql, php, ftp to the Debian GNU/Linux

Hello, readers. At the moment, in my free time I learn php for fun. There is therefore a need to test php scripts in combat conditions. Many are advised to use the Assembly denver. I prefer to install such software on a virtual machine that would not litter with unnecessary services/daemons on your computer. The easiest way to install apache + mysql + php + ftp. To demonstrate the gradual installation I created the virtual machine and installed the Debian GNU/Linux system without any additional software. Only the system utilities.
And so, if you are interested in installing apache + mysql + php + ftp on the pristine Debian GNU/Linux, ask the cat.
For all beginners wishing to install debian, there is an article. In it, I describe in detail the installation of Debian GNU/Linux in VirtualBox.
Perhaps you have a question: “why do you need this bundle do ftp? you can do without it, the functionality of a Web server and php interpreter was not affected. I personally set up ftp for the convenience of working with files on the server. That is what would fill the new file, you can use any ftp client.
Well then, let’s get started. To start update all packages in the system:

 

aptitude update && aptitude upgrade

Note: If you do not zaloginilis′ of the root, you need to use sudo to run these commands, since they require administrator rights.

 

Now you can install the packages you need:

 

aptitude install apache2 php5 php5-mysql mysql-server proftpd

During installation, the mysql server will be asked to enter a password for root: proftpd will prompt you to select the same configuration option: I selected standalone.

 

When the installation is complete the mood of our apache2 so that you could keep two (or more) different sites on the same machine. To do this, create a separate Directory for each site in the folder/var/www/. I will use two sites with names maintest and secondtest, so will create these directories:

 

mkdir /var/www/maintest
mkdir /var/www/secondtest

Do not forget to also create a log file for each site:

touch /var/log/apache2/maintest-error.log
touch /var/log/apache2/secondtest-error.log

You must then configure the settings for each site. Navigate to the/etc/apache2/sites-available/directory with the following command:

cd /etc/apache2/sites-available

Create a file with the names of the two sites. I did so:

touch maintest
touch secondtest

Note: for the convenience of working with files, you can choose not to use the full path, and just navigate to the desired folder by using the cd command, and from there use the relative path. You can also use file manager mc.

 

Now you need to fill in each file settings. Open in any editor, I used the nano and write:

<VirtualHost *:80>
ServerName maintest
DocumentRoot /var/www/maintest
ErrorLog /var/log/apache2/maintest-error.log
</VirtualHost>

Similar operations should be done with the second file, only replacing the maintest secondtest (or your name).

 

Note: you can use any valid name for the site, but I advise you to use short and simple for ease of configuration.

 

Now you need to activate sites. I also deaktiviruû the standard config to clients can only access/var/www/maintest or/var/www/secondtest. This is done as follows:

a2ensite maintest
a2ensite secondtest
a2dissite default

Утилита a2ensite(apache2 enable site) активирует сайт, добавляя на него симлинк в папку /etc/apache2/sites-enabled, а утилита a2dissite(apache2 disable site) как вы уже догадались дективирует сайт. Кстати, если вам не нужны стандартные конфиги, вы можете их удалить командой:
rm /etc/apache2/sites-available/default* -R
1

rm /etc/apache2/sites-available/default* -R

Необходимо перезапустить apache2:
/etc/init.d/apache2 restart
1

/etc/init.d/apache2 restart

Теперь изменим файл hosts на рабочей машине. В windows он лежит в папке C:WindowsSystem32driversetc, а в linux – /etc/. У меня в результате на windows машине получился такой файл:
192.168.1.102 maintest 192.168.1.102 secondtest
1
2

192.168.1.102 maintest
192.168.1.102 secondtest

После перезагрузки проверим как все работает, и как себя чувствует php. Для этого создадим два файла, один в /var/www/maintest/, а другой в /var/www/secondtest/. Оба назовем index.php:
touch /var/www/maintest/index.php touch /var/www/secondtest/index.php
1
2

touch /var/www/maintest/index.php
touch /var/www/secondtest/index.php

Заполним каждый следующими строчками:
<?php print_r (phpinfo()); ?>
1
2
3

<?php
print_r (phpinfo());
?>

Потом попробуйте с вашей рабочей машины зайти на maintest или secondtest. Вы должны увидеть следующее: Если видите – значит все работает. Осталось настроить proftpd. Для использования ftp-сервера нам понадобится создать еще одного пользователя с ограниченными правами. Перед этим нужно открыть файл /etc/shells и добавить в конец строчку /bin/false. Пользователя создаем командой:
useradd ftpuser -p ftppass -d /var/www -s /bin/false
1

useradd ftpuser -p ftppass -d /var/www -s /bin/false

Где ftpuser – имя пользователя(можете выбрать свое), ftppass – пароль(выберете свой), /var/www – домашняя директория. Теперь можно приступить к редактированию конфига proftpd. Сделаем бекап стандартной конфигурации:
mv /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf_backup
1

mv /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf_backup

Теперь создаем новый конфиг и открываем его для редактирования вашим редактором. Если вы используете nano, тогда это можно сделать одной командой:
nano /etc/proftpd/proftpd.conf
1

nano /etc/proftpd/proftpd.conf

У меня получился следующий конфиг:
#Разрешение на перезапись Allowoverwrite on #Авторизация только по алиасам пользователя AuthAliasOnly on #Алиас для пользователя UserAlias admin ftpuser #Имя сервера ServerName “server-lamp-debian” #Тип сервера ServerType standalone #Пользователь и группа под которыми будет запущен сервер User nobody Group nogroup #Задержка привествия DeferWelcome on #Использование по умолчанию DefaultServer on #Логин из под рута RootLogin off #Файлы логов ExtendedLog /var/log/proftpd/ftp.log TransferLog /var/log/proftpd/xfer.log SystemLog /var/log/proftpd/system.log #Использования файла /etc/ftpusers UseFtpUsers off #Разрешить перезагрузку хранилища AllowStoreRestart on #Порт Port 21 #Дефолтная папка DefaultRoot /var/www/ #Запрещаем выход за пределы домашней папки DefaultRoot ~
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47

#Разрешение на перезапись
Allowoverwrite on

#Авторизация только по алиасам пользователя
AuthAliasOnly on

#Алиас для пользователя
UserAlias admin ftpuser

#Имя сервера
ServerName “server-lamp-debian”

#Тип сервера
ServerType standalone

#Пользователь и группа под которыми будет запущен сервер
User nobody
Group nogroup

#Задержка привествия
DeferWelcome on

#Использование по умолчанию
DefaultServer on

#Логин из под рута
RootLogin off

#Файлы логов
ExtendedLog /var/log/proftpd/ftp.log
TransferLog /var/log/proftpd/xfer.log
SystemLog /var/log/proftpd/system.log

#Использования файла /etc/ftpusers
UseFtpUsers off

#Разрешить перезагрузку хранилища
AllowStoreRestart on

#Порт
Port 21

#Дефолтная папка
DefaultRoot /var/www/

#Запрещаем выход за пределы домашней папки
DefaultRoot ~

В принципе ничего сложного. Осталось перезапустить proftpd командой:
/etc/init.d/proftpd restart
1

/etc/init.d/proftpd restart

А так же не забудьте назначить права для папки /var/www/:
chmod 777 /var/www/ -R
1

chmod 777 /var/www/ -R

Все должно работать. Для проверки используйте любой файловый менеджер поддерживающий ftp или ftp клиент. Просто перейдите по ftp://maintest.

Для удобства работы с базой данный вы можете установить phpmyadmin:
aptitude install phpmyadmin
1

aptitude install phpmyadmin

Или использовать какой-нибудь SQL-клиент. Тогда нужно будет добавить в базу данных нового пользователя или существующего и разрешить ему соединение с внешней сети. Например следующая команда создаст нового пользователя с логином user и паролем password, разрешит ему все операции для всех баз данных, а так же соединение с любого хоста:
GRANT ALL PRIVILEGES ON *.* TO user@”%” IDENTIFIED BY ‘password’ WITH GRANT OPTION;
1
2

GRANT ALL PRIVILEGES ON *.* TO user@”%”
IDENTIFIED BY ‘password’ WITH GRANT OPTION;

Подробнее можете почитать здесь. Кроме того понадобится отредактировать конфиг /etc/mysql/my.cnf, закоментировав строчку bind-address 127.0.0.1.

Удачной настройки. Задавайте свои ответы.