1 (25.06.2014 17:17:09 отредактировано iAlexandre)

Всем привет, извиняюсь за нубские вопросы, но несколько дней только имею дело с настройкой CentOS на VPS, поэтому не все понятно, а в море инфы просто тону и как на зло - нужно срочно поднять сервер. Итак, имеется CentOS 6 с установленными MySQL, FTP, PHP, Apache, вопросы:

1. если у меня VPS и доступ к нему в итоге мне нужен по его же IP, доменное имя привязывать не планирую, я могу в итоге сайт заливать в /var/www/ ? Либо же для корректной работы всех модулей (MySQL, PHP, Apache) нужно заливать в /home/mysite/www/ ?

2. как мне открыть для определенной папки определенный порт? Например, если можно все сливать в  /var/www/, то, допустим, там папка portforw и вот только для нее нужно открыть порт 5005 что бы весь трафик идущий на мой VPS по этому порту шел только в эту папку.

Заранее весьма благодарен за ответы  az

2 (25.06.2014 18:15:12 отредактировано Marley)

iAlexandre пишет:

1. если у меня VPS и доступ к нему в итоге мне нужен по его же IP, доменное имя привязывать не планирую, я могу в итоге сайт заливать в /var/www/ ? Либо же для корректной работы всех модулей (MySQL, PHP, Apache) нужно заливать в /home/mysite/www/ ?

Заливайте в ту, которая в httpd.conf указана как DocumentRoot

Пример:

+ открыть спойлер

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/var/www/html"

iAlexandre пишет:

2. как мне открыть для определенной папки определенный порт? Например, если можно все сливать в  /var/www/, то, допустим, там папка portforw и вот только для нее нужно открыть порт 5005 что бы весь трафик идущий на мой VPS по этому порту шел только в эту папку.

Может имеет смысл просто ограничить доступ к каталогу паролем. Например по http или ftp.?

No Woman No Cry...

3

Marley пишет:

Заливайте в ту, которая в httpd.conf указана как DocumentRoot

Понял, спасибо большое!

Marley пишет:

Может имеет смысл просто ограничить доступ к каталогу паролем. Например по http или ftp.?

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

4 (25.06.2014 18:42:05 отредактировано Marley)

iAlexandre пишет:

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

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

Открыть порт для папки, скорее всего нельзя.

---------------------
Можно настроить apache, чтобы он работал на каком-нибудь другом порту и предоставлял доступ по http к любому каталогу на сервере.

No Woman No Cry...

5

Marley пишет:

Открыть порт для папки, скорее всего нельзя.

Ок, а если просто открыть порт на сервере и направить трафик через него в нужную папку? Или это одно и тож е получается с тем,что я описал выше?

И если этого сделать нельзя - это только из-за CentOS либо как? Ибо вообще такое делают, раз устройства заточены. Да и в работе я такое видел.

6

Скорее всего вам нужно все навсего инсталлировать и запустить вашу программу сервер и открыть порт на фаерволе.

No Woman No Cry...

7

Marley пишет:

Скорее всего вам нужно все навсего инсталлировать и запустить вашу программу сервер и открыть порт на фаерволе.

Спасибо, попробую.

Это делается так?

iptables -A INPUT -s какой_нужно_писать_IP? -p udp -m multiport  --ports 5005, 8090 -j ACCEPT
iptables -A OUTPUT -d какой_нужно_писать_IP? -p udp -m multiport  --ports 5005, 8090 -j ACCEPT
iptables -A INPUT -s какой_нужно_писать_IP? -p tcp -m multiport  --ports 5005, 8090 -j ACCEPT
iptables -A OUTPUT -d какой_нужно_писать_IP? -p tcp -m multiport  --ports 5005, 8090 -j ACCEPT

8 (25.06.2014 19:46:02 отредактировано Marley)

Не являюсь специалистом по firewall.

Думаю команда приблизительно такая:

# iptables -I INPUT -p tcp --dport нужный_порт -j ACCEPT
No Woman No Cry...

9

По моему ему нужен банальный виртуалхост на определенном порте. То есть сайт должен открываться по адресу http://111.112.113.222:5005
Сайты по умолчанию лежать в директории /var/www/html/
Чтобы сайт открывался на порту  5005, надо создать файл(ы) виртуального хоста в директории /etc/httpd/conf.d/
Например для известного почтового веб интерфейса Rouncube:

# vi /etc/httpd/conf.d/roundcube.conf

Virtualhost mail.company.ru:443>
ServerName mail.company.ru
ServerAdmin admin@company.ru
DocumentRoot "/var/www/html/roundcube/"
#SSLEngine off
#SSLCertificateFile /etc/postfix/certs/cert.pem
#SSLCertificateKeyFile /etc/postfix/certs/key.pem
# Поскольку roundcube написан на PHP и мы
# не предполагаем запуск чего-либо кроме PHP скриптов
# на этом виртуалхосте, то на всякий случай отключаем CGI
# и запрещаем изменение параметров ./htaccess'ом
<Directory "/var/www/html/roundcube/">
Options -ExecCGI
AllowOverride None
#SSLRequireSSL
</Directory>
# Запрещаем PHP скриптам выходить за пределы
# директории виртуалхоста
php_admin_value open_basedir /var/www/html/roundcube
php_admin_value safe_mode_include_dir /var/www/html/roundcube
#php_admin_value safe_mode_exec_dir /noexec
php_admin_value doc_root /var/www/html/roundcube
php_admin_value upload_tmp_dir /var/www/html/roundcube/temp
php_admin_value session.save_path /var/www/html/roundcube/temp
# Логирование
ErrorLog /var/log/httpd/roundcube-error.log
TransferLog /var/log/httpd/roundcube-access.log
</Virtualhost>

Здесь в строчке:

Virtualhost mail.company.ru:443

Надо поменять порт с 443 на 5005. И можно еще поменять mail.company.ru на ваш IP адрес.
И можно еще попробовать, добавить упоминание виртуального сайта в /etc/httpd/conf.d/httpd.conf:

<VirtualHost 192.168.1.2:80> # Ваш IP адрес
    ServerAdmin admin@company.ru
#    Redirect permanent / https://mail.company.ru
    DocumentRoot /var/www/html/roundcube/
    ServerName mail.company.ru
    ErrorLog logs/mail.company.ru-error_log
    CustomLog logs/mail.company.ru-access_log common
</VirtualHost>

И тогда возможно откроется ваш сайт.
Поиграйтесь с файлами виртуальных сайтов.
Я создаю один файл и добавляю упоминание в httpd.conf, так как у меня веб интерфейс работает по HTTPS.

Да, и еще не забудьте настроить фаервол iptables, открыть порты 5005 и 8090:

iptables -A INPUT -p tcp -m multiport --dports 5005,8090  -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --sports 5005,8090  -j ACCEPT

Возможно я не прав, но думаю это вам и надо.

10

AlfaStriker, спасибо, но это, наверное, немного не то.

Объясню ситуацию: у меня имеется образ готового сервера, я его развернул на настроенном VPS'e, теперь осталось для полноценной работы открыть порт. В образ "вшита" проверка работы порта: если он будет работать как нужно, то при наборе myip:5005 сервер выдаст на страницу "OK".

Пока этого не происходит ( По Вашему методу в roundcube.conf что писать-то, если мне roundcube не нужен?)

11 (27.06.2014 01:16:04 отредактировано Marley)

Отключите firewall и проверьте работает ли ваша программа без него.

 Консоль:

# service iptables stop

p.s. почитайте, что такое порт.

No Woman No Cry...

12

Marley, пробовал остановить iptables, не помогло (

13

Значит проблема не в том, что порт закрыт фаерволом. (И его не нужно пытаться открыть.)
Я бы дальше посмотрел, слушает ли программа указанный порт и попробовал бы к ней подключиться телнетом.

No Woman No Cry...

14

Marley пишет:

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

А с этого места можно подробнее, пожалуйста?:)

15

iAlexandre

 Консоль:
# netstat -tulpn | grep 80

tcp        0      0 :::80                       :::*                        LISTEN      1215/httpd 

Собственно вижу, что порт 80 слушает apache (httpd)   

Проверяю:

# telnet 192.168.1.11 80

Trying 192.168.1.11...
[b]Connected[/b] to 192.168.1.11.
Escape character is '^]'.

Все ок.

No Woman No Cry...

16

Спасибо, а как теперь бы заставить апач слушать нужные мне порты?

 Консоль:
telnet xx.xx.xx.xx 5005
Trying xx.xx.xx.xx...
telnet: connect to address xx.xx.xx.xx: Connection refused

17 (03.07.2014 23:55:54 отредактировано Marley)

Нужно в httpd.conf заменить
Listen 80 (или 8080) на 5005

========
Если нужно, чтобы apache работал на 80 порту и на 5005, нужно сделать как описал AlfaStriker.

No Woman No Cry...

18

Так-с, ну собственно что-то вроде получилось, спасибо Вам огромное. ab

 Консоль:
[root@vps ~]# netstat -tulpn | grep 5005
tcp        0      0 0.0.0.0:5005                0.0.0.0:*                   LISTEN      5345/httpd

[root@servicvps ~]# telnet хх.хх.хх.хх 5005
Trying хх.хх.хх.хх...
Connected to хх.хх.хх.хх.
Escape character is '^]'.

Значится порт открыт. А почему тогда я его не вижу тут:

 Консоль:
[root@vps ~]# nmap -sT -O localhost

Starting Nmap 5.51 ( http://nmap.org ) at 2014-07-22 19:30 EDT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000062s latency).
Other addresses for localhost (not scanned): 127.0.0.1
rDNS record for 127.0.0.1: localhost.localdomain
Not shown: 994 closed ports
PORT     STATE SERVICE
21/tcp   open  ftp
22/tcp   open  ssh
25/tcp   open  smtp
80/tcp   open  http
443/tcp  open  https
3306/tcp open  mysql
No exact OS matches for host (If you know what OS is running on it, see http://nmap.org/submit/ ).
TCP/IP fingerprint:

Network Distance: 0 hops

OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 12.08 seconds

19

Я не настолько хорошо знаю как работает nmap.

Можно посмотреть с помощью nmap определенный порт.

 Консоль:
# nmap -A localhost -p  5005

No Woman No Cry...

20 (23.07.2014 17:06:53 отредактировано iAlexandre)

полистал логи, сделал:

 Консоль:
# nmap -A localhost -p  5005
PORT     STATE SERVICE VERSION
5005/tcp open  http    Apache httpd 2.2.15 ((CentOS))

наконец-то вздохнул, спасибо:)