Centos 7 apache nginx php-fpm git — установка. Nginx apache centos 7


Веб-сервер на связке NGINX + Apache (httpd) + MariaDB + PHP + PHPMyAdmin +FTP на CentOS 7

Разворачиваем веб-сервер на связке NGINX + Apache (httpd) + MariaDB + PHP + PHPMyAdmin +FTP, или по-простому NGINX + LAMP.

Будем следовать следующему принципу — сначала всё установим, а потом уже будем заниматься настройкой.

Устанавливаем компоненты

Это своего рода чек-лист для проверки наличия компонентов:

  1. NGINX — подробно описано в этой статье.
  2. PHP и PHP-FRM — подробно описано в этой статье.
  3. Apache (httpd) — подробно описано в этой статье.
  4. MariaDB — подробно описано в этой статье.
  5. PhpMyAdmin — подробно описано в этой статье.

Перед настройкой. Важно для понимания!

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

  1. Настройка сервера на какой-нибудь домен — это настройка всего ДВУХ основных компонентов — httpd и nginx. Для домена создается один конфиг в httpd и другой в nginx, и все по сути.
  2. Но, чтобы прописать конфиги правильно, нужно заранее определиться со структурой папок для сайта на своем сервере, потому что в конфигах пишутся пути до этих папок, и нужно их заранее знать уже.

Ну, и сразу тогда разберемся со структурой этих папок, подготовим их.

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

/web создаем новую папку в самом корне сервера, т.е. на одном уровне с папками etc, var и др.

Это будет основной раздел, где будут все наши сайты.

/web/site1.ru

/web/site2.ru

/web/site3.ru

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

И для каждого сайта создаем две папки:

  1. в одной будут просто все файлы сайта,
  2. а в другой логи.
/web/site1.ru/www эта папка будет содержать все файлы сайта (сюда будем заливать по ftp)
/web/site1.ru/logs а сюда будут сваливаться все логи

Теперь создаем это все одной командой:

mkdir /web && mkdir /web/site1.ru && mkdir /web/site1.ru/www && mkdir /web/site1.ru/logs

mkdir /web && mkdir /web/site1.ru && mkdir /web/site1.ru/www && mkdir /web/site1.ru/logs

*таким образом мы создали все необходимые папки для одного сайта.

Не забываем назначить владельца папки:

И дать права на эту папку:

Переходим к настройке связки NGINX + Apache (httpd)

Важно для понимания!

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

  1. написать конфиг в httpd
  2. написать конфиг в nginx

То есть всего лишь 2 конфига и все!

Конфиг для httpd

Перед созданием нового конфига, нужно проверить, чтобы в основном конфиге сервиса /etc/httpd/conf/httpd.conf была раскомментирована строка (она обычно в самом конце):

IncludeOptional conf.d/*.conf

IncludeOptional conf.d/*.conf

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

Открываем на редактирование и правим (раскомментируем):

mcedit /etc/httpd/conf/httpd.conf

mcedit /etc/httpd/conf/httpd.conf

Сохраняем.

Теперь заходим в директорию /etc/httpd/conf.d/ и внутри нее создаем файл-конфиг с названием сайта site1.ru.conf 

То есть можно выполнить команду:

mcedit /etc/httpd/conf.d/site1.ru.conf

mcedit /etc/httpd/conf.d/site1.ru.conf

*тогда откроется несуществующий файл, мы туда занесем инфу, сохраним его и файл тут же создастся с этим содержимым.

Классический конфиг выглядит так:

#в связке nginx+apache ставим именно порт 8080 <VirtualHost *:8080> #тут все понятно, пишем домен и его алиас ServerName site1.ru ServerAlias www.site1.ru #определяем корневую папку сайта для доступа из интернета DocumentRoot /web/site1.ru/www #определяем куда будут сваливаться логи ошибок и доступа ErrorLog /web/site1.ru/logs/error.log CustomLog /web/site1.ru/logs/access.log common #следующий блок определяет опции и разрешения для корневой папки сайта <Directory /web/site1.ru/www> Options FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

#в связке nginx+apache ставим именно порт 8080

<VirtualHost *:8080>

 

#тут все понятно, пишем домен и его алиас

ServerName site1.ru

ServerAlias www.site1.ru

 

#определяем корневую папку сайта для доступа из интернета

DocumentRoot /web/site1.ru/www

 

#определяем куда будут сваливаться логи ошибок и доступа

ErrorLog /web/site1.ru/logs/error.log

CustomLog /web/site1.ru/logs/access.log common

 

#следующий блок определяет опции и разрешения для корневой папки сайта

<Directory /web/site1.ru/www>

Options FollowSymLinks

AllowOverride All

Require all granted

</Directory>

 

</VirtualHost>

Сохраняем и проверяем корректность настроек конфига:

Перезапускаем httpd:

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

Настройка конфига httpd для перфекционистов

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

Мы видим, что у нас часто повторяется название сайта site1.ru. И для каждого нового домена придется менять его снова во многих местах. Это неудобно, поэтому сделаем так, чтобы его приходилось менять только в одном месте.

Для этого название сайта определим в переменную, а потом будем просто использовать эту переменную в любом месте.

Никуда не пишем, просто для понимания:

Define domain site1.ru #команда define определяет переменную

Define domain site1.ru #команда define определяет переменную

Теперь в том месте, где нам понадобится вывести название нашего сайта, мы просто будем писать:

Теперь берем наш классический конфиг (которые уже сделали выше) и сначала задаем переменную, а потом везде site1.ru меняем на ${domain}.

Итоговый конфиг такой:

#в связке nginx+apache ставим именно порт 8080 <VirtualHost *:8080> #определяем переменную, пишем это в самом начале Define domain site1.ru #тут все понятно, пишем домен и его алиас ServerName ${domain} ServerAlias www.${domain} #определяем корневую папку сайта для доступа из интернета DocumentRoot /web/${domain}/www #определяем куда будут сваливаться логи ошибок и доступа ErrorLog /web/${domain}/logs/error.log CustomLog /web/${domain}/logs/access.log common #следующий блок определяет опции и разрешения для корневой папки сайта <Directory /web/${domain}/www> Options FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>

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

#в связке nginx+apache ставим именно порт 8080

<VirtualHost *:8080>

 

#определяем переменную, пишем это в самом начале

Define domain site1.ru

 

#тут все понятно, пишем домен и его алиас

ServerName ${domain}

ServerAlias www.${domain}

 

#определяем корневую папку сайта для доступа из интернета

DocumentRoot /web/${domain}/www

 

#определяем куда будут сваливаться логи ошибок и доступа

ErrorLog /web/${domain}/logs/error.log

CustomLog /web/${domain}/logs/access.log common

 

#следующий блок определяет опции и разрешения для корневой папки сайта

<Directory /web/${domain}/www>

Options FollowSymLinks

AllowOverride All

Require all granted

</Directory>

 

</VirtualHost>

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

Если идти еще дальше, то одинаковые куски кода можно вынести в дефолтный конфиг httpd, который лежит вот здесь  /etc/httpd/conf/httpd.conf.

Здесь одинаковым блоком может стать:

<Directory /web/${domain}/www> Options FollowSymLinks AllowOverride All Require all granted </Directory>

<Directory /web/${domain}/www>

Options FollowSymLinks

AllowOverride All

Require all granted

</Directory>

Но, чтобы он стал универсальным и подходил для любого домена, нужно ${domain} заменить на * (звездочку).

<Directory /web/*/www> Options FollowSymLinks AllowOverride All Require all granted </Directory>

<Directory /web/*/www>

Options FollowSymLinks

AllowOverride All

Require all granted

</Directory>

И запихать этот код в дефолтный конфиг /etc/httpd/conf/httpd.conf, а в классическом конфиге тогда этот кусок нужно вырезать.

Не забываем перезапустить httpd.

Конфиг для NGINX

Перед созданием нового конфига, нужно проверить, чтобы в основном конфиге сервиса /etc/nginx/nginx.conf была раскомментирована строка:

include /etc/nginx/conf.d/*.conf

include /etc/nginx/conf.d/*.conf

*тогда наш новый конфиг подхватится сервисом автоматически.

Открываем и проверяем:

mcedit /etc/nginx/nginx.conf

mcedit /etc/nginx/nginx.conf

Аналогично, заходим в директорию /etc/nginx/conf.d/ и внутри нее создаем файл-конфиг с названием сайта site1.ru.conf или просто выполняем команду:

mcedit /etc/nginx/conf.d/site1.ru.conf

mcedit /etc/nginx/conf.d/site1.ru.conf

И в него заносим:

server { listen 80; server_name site1.ru www.site1.ru; gzip on; gzip_disable "msie6"; gzip_min_length 1000; gzip_vary on; gzip_proxied expired no-cache no-store private auth; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript; # Ведём журнал доступа: access_log /web/site1.ru/logs/access.log; # Разделяем статику и динамку, статику храним в кэше 10 дней: location ~* ^.+\.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|docx|xls|xlsx|exe|pdf|ppt|tar|wav|bmp|rtf|js)$ { root /web/site1.ru/www; expires 10d; } location / { proxy_pass http://127.0.0.1:8080/; proxy_redirect off; log_not_found off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }

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

server {

listen 80;

server_name site1.ru www.site1.ru;

gzip on;

gzip_disable "msie6";

gzip_min_length 1000;

gzip_vary on;

gzip_proxied expired no-cache no-store private auth;

gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;

 

# Ведём журнал доступа:

access_log /web/site1.ru/logs/access.log;

 

# Разделяем статику и динамку, статику храним в кэше 10 дней:

location ~* ^.+\.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|docx|xls|xlsx|exe|pdf|ppt|tar|wav|bmp|rtf|js)$ {

root /web/site1.ru/www;

expires 10d;

}

 

location / {

proxy_pass         http://127.0.0.1:8080/;

proxy_redirect     off;

log_not_found      off;

proxy_set_header   X-Real-IP $remote_addr;

proxy_set_header   Host $http_host;

proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;

}

}

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

Проверяем корректность настройки конфига:

Перезапускаем nginx:

Важно! После каждого изменения любого конфига, необходим перезапуск сервиса!

FTP

В качестве ftp лучше использовать sftp. Установка sftp на centos 7 рассмотрена в этой статье.

kilobax.ru

Настройка VDS с нуля на Centos 7, Nginx, PHP-fpm без Apache — Mac и Linux

 Здесь собраны все необходимые процедуры для настройки сервера с нуля на основе Centos 7.x без использования Apache для экономии серверных ресурсов. Apache заменяет Nginx с модулем PHP-FPM 5.6. В качестве базы данных используется MariaDB.

1. Nginx

2. PHP 5.6

3. php.ini

4. PHP-FPM

5. Настроить конфиги php-fpm и nginx

6. Пользователей, кроме root, сменить пароль root

7. Firewall или iptables

8. Папки сайтов и логов

9. MariaDB

Очистка старого SSH ключа на локальной машине

ssh-keygen -R *ip_address_or_hostname*

cat /etc/centos-release — проверка версии centos

Апдейт

yum clean all

yum update

yum autoremove

Package 1:nginx-1.10.2-1.el7.x86_64 already installed and latest version

Package php-fpm-5.6.30-1.el7.remi.x86_64 already installed and latest version

Package php-mysql-5.4.45-13.el7.remi.x86_64 is obsoleted by php-mysqlnd-5.6.30-1.el7.remi.x86_64 which is already installed

Package 1:mariadb-server-5.5.52-1.el7.x86_64 already installed and latest version

Package unzip-6.0-16.el7.x86_64 already installed and latest version

Firewall

systemctl status firewalld — проверка статуса файрволла

firewall-cmd —list-ports

Меняем порт SSH

$ sudo firewall-cmd —zone=public —add-port=974/tcp —permanent

$ sudo firewall-cmd —reload

firewall-cmd —zone=public —remove-port=22/tcp

systemctl restart firewalld.service

nano /etc/ssh/sshd_config

systemctl restart sshd.service

nano /etc/sysconfig/selinux — проверить disable

Устанавливаем NGINX

yum install epel-release

yum install nginx

systemctl start nginx

systemctl status nginx

If you are running a firewall, run the following commands to allow HTTP and HTTPS traffic:

sudo firewall-cmd —permanent —zone=public —add-service=http

sudo firewall-cmd —permanent —zone=public —add-service=https

nginx -V

check

http://server_domain_name_or_IP/ проверить IP — ip addr

You should now put your content in a location of your choice and edit the root configuration directive in the nginx configuration file /etc/nginx/nginx.conf.

Start every boot

systemctl enable nginx

Default Server Root

The default server root directory is /usr/share/nginx/html. Files that are placed in there will be served on your web server. This location is specified in the default server block configuration file that ships with Nginx, which is located at /etc/nginx/nginx.conf.

Server Block Configuration

Any additional server blocks, known as Virtual Hosts in Apache, can be added by creating new configuration files in /etc/nginx/conf.d. Files that end with .conf in that directory will be loaded when Nginx is started.

Nginx Global Configuration

The main Nginx configuration file is located at /etc/nginx/nginx.conf. This is where you can change settings like the user that runs the Nginx daemon processes, and the number of worker processes that get spawned when Nginx is running, among other things.

Версия PHP

php -v

Обновление до PHP 5.6

# wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm

# rpm -Uvh remi-release-7*.rpm

В CentOS php.ini лежит в /etc, прямо в корне.

We will change both of these conditions by uncommenting the line and setting it to «0» like this:

/etc/php.ini excerpt

cgi.fix_pathinfo=0

Установка PHP-FPM

sudo nano /etc/yum.repos.d/remi.repo

удаляем 5.5 и ставим enabled=1 для remi и remi-php56

Теперь обновляем php 5.4 до php 5.6:

# yum —enablerepo=remi,remi-php56 install php php-common php-mysql php-mbstring php-mcrypt php-devel php-xml php-gd php-fpm

Запускаем

systemctl start php-fpm

systemctl enable php-fpm

Создаём конфиг php-fpm

nano /etc/nginx/default.d/php-fpm.conf

And add the following content to it:

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

#

location ~ \.php$ {

root           /usr/share/nginx/html;

fastcgi_pass   127.0.0.1:9000;

fastcgi_index  index.php;

fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;

include        fastcgi_params;

}

Next, open the php-fpm configuration file www.conf:

sudo vi /etc/php-fpm.d/www.conf

Find the line that specifies the listen parameter, and change it so it looks like the following:

127.0.0.1 заменить на

listen = /var/run/php-fpm/php-fpm.sock

Next, find the lines that set the listen.owner and listen.group and uncomment them. They should look like this:

listen.owner = nobody

listen.group = nobody

Lastly, find the lines that set the user and group and change their values from «apache» to «nginx»:

user = nginx

group = nginx

Then save and quit.

Now, we just need to start our PHP processor by typing:

sudo systemctl start php-fpm

This will implement the change that we made.

Next, enable php-fpm to start on boot:

sudo systemctl enable php-fpm

systemctl restart php-fpm

systemctl restart nginx

Узнать версию MySql

rpm -qa | grep mysql

Пакеты MySql

Пакеты MySql

yum list installed | grep mysql

Просмотр установленных пакетов

yum list installed

Установка MariaDB

yum install -y mariadb mariadb-server

Добавляем mariadb в автозапуск:

# systemctl enable mariadb.service

Запускаем mariadb:

# systemctl start mariadb

Перезапуск mariadb/mysql в CentOS 7:

# systemctl restart mariadb

Проверяем, запустилась или нет:

# netstat -tulnp | grep mysqld

Теперь запускаем стандартный скрипт настройки безопасности:

# /usr/bin/mysql_secure_installation

www.artvolt.ru

Centos 7 apache nginx php-fpm git

Пошаговая инструкция по установка окружения веб-разработчика на чистой VPS CentOS 7

cat /etc/redhat-release yum update # Общие пакеты yum install sudo curl vim mc net-tools bind-utils mlocate gcc-c++ # Apache yum install httpd systemctl enable httpd # PHP 5.6 rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm yum install php56w php56w-opcache php56w-xml php56w-mcrypt php56w-gd php56w-devel php56w-intl php56w-mbstring php56w-bcmath php56w-pdo php56w-mysql php56w-pgsql php56w-pear php56w-pecl-apcu php56w-fpm php56w-process systemctl enable php-fpm # Nginx vim /etc/yum.repos.d/nginx.repo [nginx] name=nginx repo baseurl=https://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1 yum install nginx systemctl enable nginx # GIT wget https://github.com/git/git/archive/v2.6.3.tar.gz tar -zxf v2.6.3.tar.gz cd git-2.6.3/ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc xmlto docbook2x perl-devel docbook2X ln -s /usr/bin/db2x_docbook2texi /usr/bin/docbook2x-texi make configure ./configure --prefix=/usr make all doc info make install install-doc install-html install-info # MySql 5.6 wget https://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release-el7-5.noarch.rpm yum install mysql-server systemctl start mysqld systemctl enable mysqld mysql_secure_installation # PostgreSQL 9.4 yum install https://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-redhat94-9.4-1.noarch.rpm yum install postgresql94-server postgresql94-contrib /usr/pgsql-9.4/bin/postgresql94-setup initdb systemctl enable postgresql-9.4.service systemctl start postgresql-9.4.service

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

48

49

50

51

cat /etc/redhat-release

yum update

 

# Общие пакеты

yum install sudo curl vim mc net-tools bind-utils mlocate gcc-c++

 

# Apache

yum install httpd

systemctl enable httpd

 

# PHP 5.6

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

yum install php56w php56w-opcache php56w-xml php56w-mcrypt php56w-gd php56w-devel php56w-intl php56w-mbstring php56w-bcmath php56w-pdo php56w-mysql php56w-pgsql php56w-pear php56w-pecl-apcu php56w-fpm php56w-process

systemctl enable php-fpm

 

# Nginx

vim /etc/yum.repos.d/nginx.repo

    [nginx]

    name=nginx repo

    baseurl=https://nginx.org/packages/centos/$releasever/$basearch/

    gpgcheck=0

    enabled=1

yum install nginx

systemctl enable nginx

 

# GIT

wget https://github.com/git/git/archive/v2.6.3.tar.gz

tar -zxf v2.6.3.tar.gz

cd git-2.6.3/

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc xmlto docbook2x perl-devel docbook2X

ln -s /usr/bin/db2x_docbook2texi /usr/bin/docbook2x-texi

make configure

./configure --prefix=/usr

make all doc info

make install install-doc install-html install-info

 

# MySql 5.6

wget https://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

rpm -ivh mysql-community-release-el7-5.noarch.rpm

yum install mysql-server

systemctl start mysqld

systemctl enable mysqld

mysql_secure_installation

 

# PostgreSQL 9.4

yum install https://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-redhat94-9.4-1.noarch.rpm

yum install postgresql94-server postgresql94-contrib

/usr/pgsql-9.4/bin/postgresql94-setup initdb

systemctl enable postgresql-9.4.service

systemctl start postgresql-9.4.service

 

Раздел: CentOS Linux MySQL PHP PostgreSQL Метки: apache, centos, git, mysql, nginx, php, postgresql

zeka.kiev.ua