Всем привет, извиняюсь за нубские вопросы, но несколько дней только имею дело с настройкой 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 по этому порту шел только в эту папку.
Заранее весьма благодарен за ответы *DRINK*
Открыть порт под опред.папку на VPS CentOS
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"
2. как мне открыть для определенной папки определенный порт? Например, если можно все сливать в /var/www/, то, допустим, там папка portforw и вот только для нее нужно открыть порт 5005 что бы весь трафик идущий на мой VPS по этому порту шел только в эту папку.
Может имеет смысл просто ограничить доступ к каталогу паролем. Например по http или ftp.?
Заливайте в ту, которая в httpd.conf указана как DocumentRoot
Понял, спасибо большое!
Может имеет смысл просто ограничить доступ к каталогу паролем. Например по http или ftp.?
Дело в том, что у меня на VPS будет небольшой сервер сбора данных с устройств, которые заточены под этот порт и конкретную папку на сервере, изменить в настройках я могу лишь IP-адрес, поэтому для правильной работы нужно как-то открыть этот самый порт для этой папки. :(
Дело в том, что у меня на VPS будет небольшой сервер сбора данных с устройств, которые заточены под этот порт и конкретную папку на сервере, изменить в настройках я могу лишь IP-адрес, поэтому для правильной работы нужно как-то открыть этот самый порт для этой папки. :(
Порт можно открыть для программы, которая будет слушать этот самый порт и выполнять какие-либо действия с каталогами и файлами на сервере. Например, создавать их или читать, редактировать и т.д.
Открыть порт для папки, скорее всего нельзя.
---------------------
Можно настроить apache, чтобы он работал на каком-нибудь другом порту и предоставлял доступ по http к любому каталогу на сервере.
Открыть порт для папки, скорее всего нельзя.
Ок, а если просто открыть порт на сервере и направить трафик через него в нужную папку? Или это одно и тож е получается с тем,что я описал выше?
И если этого сделать нельзя - это только из-за CentOS либо как? Ибо вообще такое делают, раз устройства заточены. Да и в работе я такое видел.
Скорее всего вам нужно все навсего инсталлировать и запустить вашу программу сервер и открыть порт на фаерволе.
Скорее всего вам нужно все навсего инсталлировать и запустить вашу программу сервер и открыть порт на фаерволе.
Спасибо, попробую.
Это делается так?
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Не являюсь специалистом по firewall.
Думаю команда приблизительно такая:
# iptables -I INPUT -p tcp --dport нужный_порт -j ACCEPTПо моему ему нужен банальный виртуалхост на определенном порте. То есть сайт должен открываться по адресу http://111.112.113.222:5005
Сайты по умолчанию лежать в директории /var/www/html/
Чтобы сайт открывался на порту 5005, надо создать файл(ы) виртуального хоста в директории /etc/httpd/conf.d/
Например для известного почтового веб интерфейса Rouncube:
# vi /etc/httpd/conf.d/roundcube.confVirtualhost 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Возможно я не прав, но думаю это вам и надо.
AlfaStriker, спасибо, но это, наверное, немного не то.
Объясню ситуацию: у меня имеется образ готового сервера, я его развернул на настроенном VPS'e, теперь осталось для полноценной работы открыть порт. В образ "вшита" проверка работы порта: если он будет работать как нужно, то при наборе myip:5005 сервер выдаст на страницу "OK".
Пока этого не происходит ( По Вашему методу в roundcube.conf что писать-то, если мне roundcube не нужен?)
Отключите firewall и проверьте работает ли ваша программа без него.
[console]
# service iptables stop
[/console]
p.s. почитайте, что такое порт.
Marley, пробовал остановить iptables, не помогло (
Значит проблема не в том, что порт закрыт фаерволом. (И его не нужно пытаться открыть.)
Я бы дальше посмотрел, слушает ли программа указанный порт и попробовал бы к ней подключиться телнетом.
посмотрел, слушает ли программа указанный порт и попробовал бы к ней подключиться телнетом
А с этого места можно подробнее, пожалуйста?:)
iAlexandre
[console]# netstat -tulpn | grep 80[/console]
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 '^]'.
Все ок.
Спасибо, а как теперь бы заставить апач слушать нужные мне порты?
[console]telnet xx.xx.xx.xx 5005
Trying xx.xx.xx.xx...
telnet: connect to address xx.xx.xx.xx: Connection refused[/console]
Нужно в httpd.conf заменить
Listen 80 (или 8080) на 5005
========
Если нужно, чтобы apache работал на 80 порту и на 5005, нужно сделать как описал AlfaStriker.
Так-с, ну собственно что-то вроде получилось, спасибо Вам огромное. :)
[console][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 '^]'.[/console]
Значится порт открыт. А почему тогда я его не вижу тут:
[console][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[/console]
Я не настолько хорошо знаю как работает nmap.
Можно посмотреть с помощью nmap определенный порт.
[console]# nmap -A localhost -p 5005[/console]
полистал логи, сделал:
[console]# nmap -A localhost -p 5005
PORT STATE SERVICE VERSION
5005/tcp open http Apache httpd 2.2.15 ((CentOS))[/console]
наконец-то вздохнул, спасибо:)