Рекомендую использовать роль для ansible-galaxy, а если использование ansible для установки не подходит то следуйте инструкциями в этой статье.
Рекомендуемые ОС ubuntu, debian, centos
Для debian 9
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
Если не получится поставить пакет libmariadbclient-dev-compat то попробуйте с пакетом libmariadbclient-dev
git clone https://github.com/Levhav/comet-server cd comet-server cmake . make make install
Если возникли ошибки смотрите список вероятных проблем в низу страницы.
CppComet использует базу данных mysql для хранения данных пользователей для авторизации на сервере. И хранения времени, когда пользователь был в сети. И для хранения временных данных, таких как не доставленные сообщения и другие данные.
[db] host = localhost user = root password = root name = comet_db port = 3305
Укажите пароль для доступа к api комет сервера
[main] ; пароль для доступа к api комет сервера password = 0000000000000000000000000000000000000000000000000000000000000000
Остальные настройки из файла comet.ini можно не менять.
cp ./comet.service /etc/systemd/system systemctl daemon-reload systemctl enable comet.service
Запуск в консольном режиме
./cppcomet
Запуск в режиме демона
systemctl start comet.service
Порт и ip для подключений от вебсокетов задаются в секции ws параметрами
ip = 0.0.0.0 port = 8087
, После запуска комет сервера если открыть адрес ( ВашДомен.com:8087 ), на котором должен быть комет сервер то должна открыться страница комет сервера. Если страница с приветсвием комет сервера открылась успешно то можно попробовать подключиться из javascript api. Для этого при подключении надо задать параметр node и если у вас port установлен не как 80, то надо указать ещё и порт для подключения.
CometServer().start({user_id:1, user_key:"userHash", node:"ВашДомен.com:8087"}),
После этого комет сервер можно использовать, но только по протоколу http, для работы по протоколу https надо настроить ревирс прокси для предварительной расшифровки трафика.
Для того чтоб настроить работу комет сервера на одной машине с другим сервером. Или просто иметь возможность работы не только по http но и по https надо настроить реверс прокси.
Ниже приведён пример конфигурации nginx для проксирования трафика до комет сервера с /comet-server на комет сервер запущенный на порту 82 и всего остального трафика на веб сервер запущенном на порту 8080
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; } }
Ошибка
GCC version must be at least 4.9!
означает, что вам надо установить gcc как минимум 4.9
Обратите внимание на то, какие значения параметра port указаны в секциях [ws] и [cometql] именно на этих портах комет сервер будет ожидать входящие подключения.
В шаблоне comet.ini поставляемом в репозитории параметр port для подключений из JavaScrip api выставлен в 8087 Это значит что подключатся надо так:
cometApi.start({user_id:1, user_key:"userHash", node:"example.ru:8087"})
Параметр port для подключений из CometQL выставлен в 3300 Это значит что подключатся надо так:
$link = mysqli_connect("example.ru", "root", "", "CometQL_v1", 3300);
Так же обратите внимание на то что надо указывать имя базы данных CometQL_v1, оно символизирует версию апи и, вероятно, потом выйдет версия CometQL_v2 и можно будет при подключении выбирать версию для работы.
Некоторые текстовые редакторы добавляют к utf8 файлу непечатные сиволы. После этого файл может выглядеть так же но кометсервер его будет парсить не правильно. Можно попробовать использовать другой редактор или удалить старый файл и создать новый с тем же текстом.
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)
Не может найти заголовочные файлы mysql клиента. Можно попробовать установить пакет mysql-devel
yum install mysql-devel
/etc/comet-server/comet-server/src/mystring.cpp:15:51: фатальная ошибка: uuid/uuid.h: Нет такого файла или каталога #include <uuid/uuid.h>
Не может найти заголовочные файл uuid.h. Можно попробовать установить пакеты libuuid libuuid-devel
yum install libuuid libuuid-devel