Различия
Здесь показаны различия между двумя версиями данной страницы.
comet:building-from-source [2018/01/26 07:34] levhav [Установка] |
comet:building-from-source [2019/12/18 01:58] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | <rst>RU::004-Администрирование::004-Установка</rst> | ||
- | <rst>Header: Установка</rst> | ||
- | |||
- | ====== Установка ====== | ||
- | |||
- | Рекомендуемые ОС ubuntu, debian, centos | ||
- | Для debian 8 | ||
- | <code bash> | ||
- | apt-get update | ||
- | apt-get install cmake make cpp gcc libssl-dev g++ nginx pkg-config libmysqlclient-dev mysql-client flex mailutils uuid-dev git | ||
- | </code> | ||
- | |||
- | Для debian 9 | ||
- | <code bash> | ||
- | apt-get update | ||
- | apt-get install cmake make cpp gcc libssl-dev g++ nginx pkg-config libmariadbclient-dev-compat mysql-client flex mailutils uuid-dev git | ||
- | </code> | ||
- | |||
- | ====== Собираем из исходных кодов ====== | ||
- | <code bash> | ||
- | git clone https://github.com/Levhav/comet-server | ||
- | cd comet-server | ||
- | cmake . | ||
- | make | ||
- | </code> | ||
- | |||
- | Если возникли ошибки смотрите список вероятных проблем в низу страницы. | ||
- | ====== Настройки ====== | ||
- | |||
- | CppComet использует базу данных mysql для хранения данных пользователей для авторизации на сервере. И хранения времени, когда пользователь был в сети. И для хранения временных данных, таких как не доставленные сообщения и другие данные. | ||
- | |||
- | * Создайте базу в mysql на основе файла [[https://github.com/Levhav/comet-server/blob/master/db.sql|db.sql]] | ||
- | * В файле [[https://github.com/CppComet/comet-server/blob/master/comet.ini|comet.ini]] укажите реквизиты для доступа к бд в секции [db] | ||
- | <code ini> | ||
- | [db] | ||
- | host = localhost | ||
- | user = root | ||
- | password = root | ||
- | name = comet_db | ||
- | port = 3305 | ||
- | </code> | ||
- | Укажите пароль для доступа к api комет сервера | ||
- | <code ini> | ||
- | [main] | ||
- | ; пароль для доступа к api комет сервера | ||
- | password = 0000000000000000000000000000000000000000000000000000000000000000 | ||
- | </code> | ||
- | Остальные настройки из файла [[https://github.com/CppComet/comet-server/blob/master/comet.ini|comet.ini]] можно не менять. | ||
- | |||
- | <note>Весь перечень настроек в статье [[comet:ini-file|Настройка файла comet.ini]] </note> | ||
- | | ||
- | ===== Добавление в автозагрузку ===== | ||
- | |||
- | <code sh>cp ./comet.service /etc/systemd/system | ||
- | systemctl daemon-reload | ||
- | systemctl enable comet.service</code> | ||
- | |||
- | ====== Запуск ====== | ||
- | Запуск в консольном режиме | ||
- | <code sh> | ||
- | ./cpp_comet | ||
- | </code> | ||
- | Запуск в режиме демона | ||
- | <code sh> | ||
- | systemctl start comet.service | ||
- | </code> | ||
- | |||
- | ====== Подключение к комет серверу ====== | ||
- | |||
- | Порт и ip для подключений от вебсокетов задаются в секции ws параметрами | ||
- | <code ini> | ||
- | ip = 0.0.0.0 | ||
- | port = 8087 | ||
- | </code> | ||
- | |||
- | После запуска комет сервера если открыть адрес ( ВашДомен.com:8087 ) на котором должен быть комет сервер то должна открыться страница комет сервера. Если страница с приветсвием комет сервера открылась успешно то можно попробовать подключиться из javascript api. Для этого при подключении надо задать параметр node и если у вас port установлен не как 80 то надо указать ещё и порт для подключения. | ||
- | |||
- | <code javascript> | ||
- | CometServer().start({user_id:1, user_key:"userHash", node:"ВашДомен.com:8087"}), | ||
- | </code> | ||
- | |||
- | После этого комет сервер можно использовать, но только по протоколу http, для работы по протоколу https надо настроить ревирс прокси для предварительной расшифровки трафика. | ||
- | |||
- | ====== Настройка nginx в качестве реверс прокси ====== | ||
- | |||
- | Для того чтоб настроить работу комет сервера на одной машине с другим сервером. Или просто иметь возможность работы не только по http но и по https надо настроить реверс прокси. | ||
- | |||
- | <note tip>Если есть желание то в качестве реверс прокси для websockets можно настроить не nginx а apache2 или что то ещё. Если не получается настроить nginx то можно попробовать найти в гугле другие примеры по запросу "как настроить реверс прокси для websockets"</note> | ||
- | |||
- | Ниже приведён пример конфигурации nginx для проксирования трафика до комет сервера с /comet-server на комет сервер запущенный на порту 82 и всего остального трафика на веб сервер запущенном на порту 8080 | ||
- | <file text default> | ||
- | server { | ||
- | listen 0.0.0.0:80; | ||
- | server_name comet-server.com; | ||
- | |||
- | location / { | ||
- | proxy_pass http://127.0.0.1:8080; | ||
- | proxy_set_header Host $host; | ||
- | proxy_set_header X-Real-IP $remote_addr; | ||
- | proxy_set_header X-Forwarded-For $remote_addr; | ||
- | proxy_connect_timeout 120; | ||
- | proxy_send_timeout 120; | ||
- | proxy_read_timeout 180; | ||
- | } | ||
- | |||
- | keepalive_disable none; | ||
- | lingering_close always; | ||
- | send_timeout 3600s; | ||
- | |||
- | location /comet-server { | ||
- | proxy_pass http://127.0.0.1:82; | ||
- | | ||
- | proxy_set_header X-Real-IP $remote_addr; | ||
- | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||
- | proxy_set_header Host $http_host; | ||
- | proxy_set_header X-NginX-Proxy true; | ||
- | | ||
- | proxy_http_version 1.1; | ||
- | proxy_set_header Upgrade $http_upgrade; | ||
- | proxy_set_header Connection "upgrade"; | ||
- | | ||
- | proxy_redirect off; | ||
- | keepalive_timeout 900; | ||
- | proxy_read_timeout 900; | ||
- | } | ||
- | } | ||
- | |||
- | # HTTPS server | ||
- | |||
- | |||
- | server { | ||
- | listen 0.0.0.0:443; | ||
- | server_name comet-server.com; | ||
- | |||
- | ssl on; | ||
- | ssl_certificate /etc/letsencrypt/live/comet-server.com/fullchain.pem; | ||
- | ssl_certificate_key /etc/letsencrypt/live/comet-server.com/privkey.pem; | ||
- | |||
- | ssl_session_timeout 70m; | ||
- | |||
- | ssl_protocols SSLv3 TLSv1; | ||
- | ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP; | ||
- | ssl_prefer_server_ciphers on; | ||
- | |||
- | keepalive_disable none; | ||
- | lingering_close always; | ||
- | send_timeout 3600s; | ||
- | |||
- | location / { | ||
- | proxy_pass http://127.0.0.1:8080; | ||
- | proxy_set_header Host $host; | ||
- | proxy_set_header X-Real-IP $remote_addr; | ||
- | proxy_set_header X-Forwarded-For $remote_addr; | ||
- | proxy_connect_timeout 120; | ||
- | proxy_send_timeout 120; | ||
- | proxy_read_timeout 180; | ||
- | |||
- | } | ||
- | |||
- | location /comet-server { | ||
- | proxy_pass http://127.0.0.1:82; | ||
- | | ||
- | proxy_set_header X-Real-IP $remote_addr; | ||
- | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||
- | proxy_set_header Host $http_host; | ||
- | proxy_set_header X-NginX-Proxy true; | ||
- | | ||
- | proxy_http_version 1.1; | ||
- | proxy_set_header Upgrade $http_upgrade; | ||
- | proxy_set_header Connection "upgrade"; | ||
- | | ||
- | proxy_redirect off; | ||
- | keepalive_timeout 900; | ||
- | proxy_read_timeout 900; | ||
- | } | ||
- | } | ||
- | </file> | ||
- | |||
- | ====== Возможные проблемы после при сборке ====== | ||
- | |||
- | Ошибка <code>GCC version must be at least 4.9!</code> означает что вам надо установить gcc как минимум 4.9 | ||
- | |||
- | [[https://askubuntu.com/questions/428198/getting-installing-gcc-g-4-9-on-ubuntu/507068#507068|Инструкция для ubuntu по установки gcc 4.9]] | ||
- | |||
- | |||
- | ====== Возможные проблемы после установки ====== | ||
- | |||
- | ===== Не правильные опции при подключении ===== | ||
- | |||
- | Обратите внимание на то какие значения параметра port указаны в секциях [ws] и [cometql] именно на этих портах комет сервер будет ожидать входящие подключения. | ||
- | |||
- | В шаблоне comet.ini поставляемом в репозитории параметр port для подключений из JavaScrip api выставлен в 8087 | ||
- | Это значит что подключатся надо так: | ||
- | <code JavaScript>cometApi.start({user_id:1, user_key:"userHash", node:"example.ru:8087"})</code> | ||
- | |||
- | Параметр port для подключений из CometQL выставлен в 3300 | ||
- | Это значит что подключатся надо так: | ||
- | <code PHP>$link = mysqli_connect("example.ru", "root", "", "CometQL_v1", 3300);</code> | ||
- | |||
- | Так же обратите внимание на то что надо указывать имя базы данных CometQL_v1, оно символизирует версию апи и вероятно потом выйдет версия CometQL_v2 и можно будет при подключении выбирать версию для работы. | ||
- | |||
- | |||
- | ===== Не читаемый файл comet.ini ===== | ||
- | |||
- | Некоторые текстовые редакторы добавляют к utf8 файлу непечатные сиволы. После этого файл может выглядеть так же но кометсервер его будет парсить не правильно. Можно попробовать использовать другой редактор или удалить старый файл и создать новый с тем же текстом. | ||
- | |||
- | |||
- | ===== Ошибка при сборке в CentOS ===== | ||
- | |||
- | <code> | ||
- | CMake Error: The following variables are used in this project, but they are set to NOTFOUND. | ||
- | Please set them or make sure they are set and tested correctly in the CMake files: | ||
- | MYSQL_INCLUDE_DIR (ADVANCED) | ||
- | </code> | ||
- | |||
- | Не может найти заголовочные файлы mysql клиента. Можно попробовать установить пакет mysql-devel | ||
- | |||
- | <code> | ||
- | yum install mysql-devel | ||
- | </code> | ||
- | |||
- | ===== Ошибка при сборке в CentOS ===== | ||
- | |||
- | <code> | ||
- | /etc/comet-server/comet-server/src/mystring.cpp:15:51: фатальная ошибка: uuid/uuid.h: Нет такого файла или каталога | ||
- | #include <uuid/uuid.h> | ||
- | </code> | ||
- | |||
- | Не может найти заголовочные файл uuid.h. Можно попробовать установить пакеты libuuid libuuid-devel | ||
- | |||
- | <code> | ||
- | yum install libuuid libuuid-devel | ||
- | </code> | ||
- | |||