Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

comet:building-from-source [2019/01/04 18:23]
levhav [Запуск]
comet:building-from-source [2019/12/18 01:58]
Строка 1: Строка 1:
-<​rst>​RU::​004-Администрирование::​004-Установка</​rst>​ 
-<​rst>​Header:​ Установка</​rst>​ 
- 
-====== Установка ====== 
- 
-Рекомендую использовать [[https://​galaxy.ansible.com/​CppComet/​CppComet-ansible-role/​|роль для ansible-galaxy]],​ а если использование ansible для установки не подходит то следуйте инструкциями в этой статье. 
- 
-Рекомендуемые ОС ubuntu, debian, centos 
-  
-Для 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>​ 
- 
-Если не получится поставить пакет libmariadbclient-dev-compat то попробуйте с пакетом libmariadbclient-dev 
- 
-====== Собираем из исходных кодов ====== 
-<code bash> 
-git clone https://​github.com/​Levhav/​comet-server 
-cd comet-server 
-cmake . 
-make 
-make install 
-</​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> 
-./cppcomet 
-</​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>​ 
-