#php #codeigniter #sockets #websocket #opensuse
#php #codeigniter #сокеты #websocket #opensuse
Вопрос:
Я внедрил rachet websocket с помощью codeigniter, и он отлично работает на локальном хостинге. Это основной server.php что нам нужно запустить из терминала / cmd
require __DIR__ . "/../vendor/autoload.php";
use ChatChat;
use RatchetServerIoServer;
use RatchetHttpHttpServer;
use RatchetWebSocketWsServer;
$server = IoServer::factory(new HttpServer(new WsServer(new Chat)), 2000);
$server->run();
Я запускаю этот файл из cmd со следующей командой
D:wampwwwmy_projectapiapplicationthird_partyRealtimebin server.php
Эта команда запускает сокет, и теперь любой пользователь получает доступ к моему сайту через браузер, затем они подключаются к сокету, и я могу отправить ему сообщение. Когда я закрываю терминал / cmd, сокет закрывается автоматически.
Теперь моя разработка завершена, и я загружаю весь исходный код на сервер «openSUSE». Итак, мой вопрос в том, как я запускаю выше server.php файл на живом сервере ? (например, amazon ec2 openSUSE server). потому что на сервере нет терминала / cmd.
Также это должно выполняться постоянно, поэтому каждый раз, когда любой пользователь обращается к моему сайту, он подключается к серверу, и я отправлю ему сообщение.
Я пробую много способов, но это никак не работает.
Комментарии:
1. Посмотрите здесь: socketo.me/docs/deploy
2. Спасибо @AlokPatel, я реализую это и попытаюсь исправить свою проблему, я прокомментирую здесь, если возникнут какие-либо проблемы с вашей ссылкой.
3. @AlokPatel подскажите, пожалуйста, как я могу установить постоянное соединение в localhost? Я использую wamp (Windows). Я хочу сделать это без команды запуска в cmd и расписания задач. Есть какой-нибудь способ установить любой конфигурационный файл?
4. Если вы разрабатываете, лучше использовать cmd. Это поможет вам просматривать журналы и отлаживать.
5. @AlokPatel я ссылаюсь на ваш данный документ и выполняю шаги. Пожалуйста, посмотрите ответы, приведенные мной ниже, я не могу добавить сюда длинный комментарий 🙂
Ответ №1:
после установки haproxy я создаю confing-файл haproxy.cfg
в /etc
каталог в этом файле, который я установил
backend ws
server ws1 my_public_ip:2000
backend www
timeout server 30s
server www1 my_public_ip:80
Вот port 2000
websocket
порт и port 80
мой порт apache
Я также пытаюсь, 127.0.0.1
но выдает следующую ошибку
[ALERT] 293/101352 (2291) : Starting frontend public: cannot bind socket [0.0.0.0:80]
После пропуска этой ошибки я создаю supervisor.conf
файл в /etc/
каталоге и добавляю программу rachet в соответствии с приведенной вами ссылкой Здесь, в команде, я указал полный путь к server.php файл
command = bash -c "ulimit -n 10000; exec /usr/bin/php /srv/www/htdocs/ci_chat/application/third_party/Realtime/bin/server.php"
Но это дает мне следующую ошибку
Error: Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting supervisord.
Мой apache работает на порту 80, pgsql работает на 5432, теперь я не могу понять, какую службу нужно отключить.