Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
litespeed_wiki:cloudlinux:enable_ruby_python_selector [2021/08/20 20:33]
Jackson Zhang [Troubleshooting]
litespeed_wiki:cloudlinux:enable_ruby_python_selector [2023/03/25 13:24] (current)
Lisa Clarke Redirect to new Documentation Site
Line 1: Line 1:
-===== How to Enable CloudLinux Python and Ruby Selector (alt-mod_passenger) for LSWS ===== +~~REDIRECT>​https://​docs.litespeedtech.com/lsws/cp/cpanel/cloudlinux/#​rubypythonnodejs-selector~~
-To enable Python or Ruby on a shared hosting environment instead of in a dedicated VPS environment (such as cpanel, DirectAdmin etc), CloudLinux Python and Ruby Selector is recommended. If it is not for a shared hosting environment,​ you can refer to [[litespeed_wiki:​other-ext-apps#​archive|our archive section]] for LSWS native setup. +
- +
-The Python and Ruby Selector allows end users to select the specific version of Python or Ruby they need. +
- +
-LiteSpeed supports the Apache ''​mod_passenger''​ configuration generated through CloudLinux selectors (LiteSpeed doesn'​t support most of the  [[https://​www.phusionpassenger.com/​library/​config/​apache/​reference/​|mod_passenger apache rules]] and only support a few of the long list. Please check here for [[litespeed_wiki:​config:​mod_passenger|LiteSpeed supported Mod_Passenger rules]]). However, behind the scenes, LiteSpeed'​s is a completely different implementation to Apache'​s. +
- +
-===== Requirements ===== +
-  * LiteSpeed Web Server 5.2+ +
-  * CloudLinux +
- +
-===== Steps to Enable Python and Ruby Selector ===== +
-  - Make sure Python and Ruby Selector works properly under Apache (follow [[https://​docs.cloudlinux.com/​index.html?​python_and_ruby_selector.html|CloudLinux instructions]] to install and configure). +
-  - Test a Ruby or Python application with Apache and ensure it is running OK.  +
-  - Run script to install required ruby/python lsapi modules: <​code>/​usr/​local/lsws/admin/misc/​enable_ruby_python_selector.sh</​code>​ +
-  - Switch to LiteSpeed and try a ruby/python app +
-===== Restart the Python and Ruby Application ===== +
-==== Through ''​touch tmp/​restart.txt''​ ==== +
-The Python and Ruby application can be restarted by touching the ''<​app_root_dir>/​tmp/​restart.txt''​ file. +
-For example, if a python application is located at ''/​home/​user1/​mypythonapp''​ the command would be:  +
- +
-<​code>​touch /​home/​user1/​mypythonapp/​tmp/​restart.txt</​code>​ +
- +
-If /​home/​user1/​mypythonapp/​tmp/​restart.txt exits already, you will still need to "​touch"​ it.  +
- +
-This will tell the server to restart the application. +
- +
-==== Through CloudLinux Python application manager ==== +
-If you run cpanel ​and CloudLinux Python application manager, you can restart the Python application there. +
- +
-===== Troubleshooting ===== +
-====  The application does not work properly ==== +
-If your application does not work properly, you can try two simple steps to check if the application has been setup properly: +
-  - If possible, switch back to Apache temporarily to verify if the application works properly under Apache. +
-  - Check if any error has been logged into ''<​APP_ROOT_DIR>​/stderr.log''​. If it has, fix the error and try again. +
- +
-For example: +
- +
-A Python application writes an error to stderr.log under the application root directory, ''​/home/​user1/​dingodossier/​mbntp/​stderr.log'':​ +
- +
-<​code>​ +
-Traceback (most recent call last): +
-  File "/​home/​user1/​dingodossier/​mbntp/​passenger_wsgi.py",​ line 8, in <​module>​ +
-    wsgi = imp.load_source('​wsgi',​ '​mbntp/​wsgi.py'​) +
-  File "/​home/​user1/​virtualenv/​dingodossier_mbntp/​3.4/​lib64/​python3.4/​imp.py",​ line 171, in load_source +
-    module = methods.load() +
-  File "<​frozen importlib._bootstrap>",​ line 1220, in load +
-  File "<​frozen importlib._bootstrap>",​ line 1200, in _load_unlocked +
-  File "<​frozen importlib._bootstrap>",​ line 1129, in _exec +
-  File "<​frozen importlib._bootstrap>",​ line 1471, in exec_module +
-  File "<​frozen importlib._bootstrap>",​ line 321, in _call_with_frames_removed +
-  File "​mbntp/​wsgi.py",​ line 10, in <​module>​ +
-    from django.core.wsgi import get_wsgi_application +
-ImportError:​ No module named '​django'​ +
-</​code>​ +
- +
-This indicates Django was not properly set up for the application.  +
- +
-==== ''​touch tmp/​restart.txt''​ or CL Python manager restart can not restart Python application ==== +
- +
-''​touch tmp/​restart.txt''​ or CL Python manager restart can not restart Python application. Most likely there are some old lswsgi processes. +
-<​code>​ +
-ps -ef | grep pythontest +
-pythont+ 508045 1 0 Aug13 ? 00:01:23 /​opt/​alt/​python37/​bin/​lswsgi -m /​home/​pythontest/​pyapp1/​passenger_wsgi.py +
-pythont+ 890556 1 0 Jul31 ? 00:05:34 /​opt/​alt/​python37/​bin/​lswsgi -m /​home/​pythontest/​pyapp1/​passenger_wsgi.py +
-pythont+ 1470047 1 0 Jul19 ? 00:10:36 /​opt/​alt/​python37/​bin/​lswsgi -m /​home/​pythontest/​pyapp1/​passenger_wsgi.py +
-pythont+ 1900598 1866381 0 15:14 ? 00:00:00 /​opt/​alt/​python37/​bin/​lswsgi -m /​home/​pythontest/​pyapp1/​passenger_wsgi.py +
-root 1902042 1898738 0 15:22 pts/2 00:00:00 grep --color=auto pythontest +
-pythont+ 2741844 1 0 Jul23 ? 00:08:41 /​opt/​alt/​python37/​bin/​lswsgi -m /​home/​pythontest/​pyapp1/​passenger_wsgi.py +
-</​code>​ +
- +
-Although ''​touch tmp/​restart.txt''​ or CL Python manager restart may restart the latest lswsgi process, but some old processes may be still running and cause restart issues. ​ These processes may still be there even you switch to apache. ​ ssh login to the user and manually killing these processes should fix the issue. ​+
  • Admin
  • Last modified: 2021/08/20 20:33
  • by Jackson Zhang