From 6106ed4933d7c73266d8126824135fea3bf529da Mon Sep 17 00:00:00 2001 From: Benjamin Bach Date: Tue, 14 Jul 2015 21:33:09 +0200 Subject: [PATCH 1/2] Remove unused image in wrong location --- .../windows-python-network-permissions.png | Bin 28643 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 kalite/static/images/windows-python-network-permissions.png diff --git a/kalite/static/images/windows-python-network-permissions.png b/kalite/static/images/windows-python-network-permissions.png deleted file mode 100644 index e61bf01c2b90c06a55e78f9e1e9de4064e7cf2b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28643 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 From 34407cb644e455b4f052b9e6571f4b71ccb719d9 Mon Sep 17 00:00:00 2001 From: Benjamin Bach Date: Tue, 14 Jul 2015 21:44:27 +0200 Subject: [PATCH 2/2] Remove installation script for Raspberry Pi so it doesn't confuse and tweak docs a bit more --- docs/installguide/install_all.rst | 35 ++++--- scripts/raspberry_pi_setup.sh | 160 ------------------------------ 2 files changed, 17 insertions(+), 178 deletions(-) delete mode 100755 scripts/raspberry_pi_setup.sh diff --git a/docs/installguide/install_all.rst b/docs/installguide/install_all.rst index 79bbc427af..bf92082948 100644 --- a/docs/installguide/install_all.rst +++ b/docs/installguide/install_all.rst @@ -120,7 +120,10 @@ On Linux and other Unix-like systems, downloaded videos and database files are i Raspberry Pi ============ -For a Raspberry Pi running a Debian system, you can install the Debian package. +For a Raspberry Pi running a Debian system, you can install the special Debian +package, 'ka-lite-raspberry-pi'. + +You can find here (TODO) @@ -141,30 +144,26 @@ In our tests, we found that the WiPi adaptor supported a higher number tablet co * Afterwards, insert the wireless USB adaptor. * Lastly, switch the Raspberry Pi on. -#. Make sure the Raspberry Pi operating system is up-to-date. - * Login with the account used to install KA Lite - * Update the Raspberry Pi operating system by: - * *sudo apt-get update* - * *sudo apt-get upgrade* -#. Get the installation scripts. - * *cd /opt* - * *sudo git clone https://github.com/learningequality/ka-lite-pi-scripts.git* +#. Install the .deb package: ``dpkg -i /path/to/ka-lite-raspberry-pi.deb`` +#. Get the network configuration scripts. + * ``cd /opt`` + * ``sudo git clone https://github.com/learningequality/ka-lite-pi-scripts.git`` #. Install and configure the access point. - * *cd /opt/ka-lite-pi-scripts* - * *sudo ./configure.sh* + * ``cd /opt/ka-lite-pi-scripts`` + * ``sudo ./configure.sh`` .. note:: If using the Edimax EW-7811UN, ignore the "hostapdSegmentation fault" error. #. Install the USB adaptor software. * If using the WiPi, run this command: - * *cd /opt/ka-lite-pi-scripts* - * *sudo ./use_wipi.sh* + * ``cd /opt/ka-lite-pi-scripts`` + * ``sudo ./use_wipi.sh`` * If using the Edimax EW-7811Un, run this command: - * *cd /opt/ka-lite-pi-scripts* - * *sudo ./use_edimax.sh* + * ``cd /opt/ka-lite-pi-scripts`` + * ``sudo ./use_edimax.sh`` #. Complete the access point configuration - * *sudo python ./configure_network_interfaces.py* - * *sudo insserv hostapd* + * ``sudo python ./configure_network_interfaces.py`` + * ``sudo insserv hostapd`` #. Finally - * *sudo reboot* + * ``sudo reboot`` * A wireless network named "kalite" should be available. * Connect to this network * If the KA Lite server is started, browse to 1.1.1.1 diff --git a/scripts/raspberry_pi_setup.sh b/scripts/raspberry_pi_setup.sh deleted file mode 100755 index f155a838c5..0000000000 --- a/scripts/raspberry_pi_setup.sh +++ /dev/null @@ -1,160 +0,0 @@ -#!/bin/bash - -if [ `whoami` == "root" ] -then - echo "Cannot run as root!" - exit 1 -fi - -# Create configuration directory in case we never ran before -mkdir -p ~/.kalite - -USER_CONFIG=~/.kalite/settings.py - -if ! grep -Pq "^from kalite.project.settings.raspberry_pi" $USER_CONFIG -then - echo "Changing user config to use raspberry pi settings: $USER_CONFIG" - echo "from kalite.project.settings.raspberry_pi import *" > $USER_CONFIG -fi - -if [ ! -f "/etc/init.d/kalite" ] -then - read -p "Do you want to run ka-lite automatically at boot ? [Y/n] " yn - if [[ ! $yn == "n" ]]; then echo "skipping" - else - kalite manage initdconfig > /etc/init.d/kalite - chmod 755 /etc/init.d/kalite - update-rc.d kalite defaults - fi -fi - -echo "Step 1 - Installing M2Crypto, psutil and nginx" - -# discover if packages are already installed -to_install="" -python -c "import M2Crypto" >/dev/null 2>&1 -if [ $? != 0 ] ; then to_install="python-m2crypto"; fi -python -c "import psutil" >/dev/null 2>&1 -if [ $? != 0 ] ; then to_install="$to_install python-psutil"; fi -nginx -v >/dev/null 2>&1 -if [ $? != 0 ] ; then to_install="$to_install nginx"; fi - -# check network (by trying some likely sites), but only if packages need installing -if [ "$to_install" != "" ] ; then - echo "Info: Need to install: $to_install, testing connection" - wget -q http://adhocsync.org >/dev/null 2>&1 - if [ $? != 0 ] ; then wget -q http://mirrordirector.raspbian.org >/dev/null 2>&1 - if [ $? != 0 ] ; then wget -q http://google.com >/dev/null 2>&1 - if [ $? != 0 ] ; then - echo "Error: internet connection isn't working, cannot continue" - read WAITING - exit 1 - fi - fi - fi -else - echo "Info: Everything is already installed" -fi - -if [ "$to_install" != "" ] ; then sudo apt-get -y install $to_install; fi - -# Finally, check the packages are installed, incase there was an apt-get failure -sanity_check_ok="False" -python -c "import M2Crypto" >/dev/null 2>&1 -if [ $? = 0 ] ; then python -c "import psutil" >/dev/null 2>&1 - if [ $? = 0 ] ; then nginx -v >/dev/null 2>&1 - if [ $? = 0 ] ; then sanity_check_ok="True"; fi - fi -fi - -if [ $sanity_check_ok != "True" ] ; then - echo "Error: One or more modules are missing, cannot continue" - read WAITING - exit 1 -fi - -echo "Step 2 - Configure or reconfigure nginx to work with KA Lite" - -if [ -f /etc/nginx/sites-enabled/default ]; then - sudo rm /etc/nginx/sites-enabled/default -fi -if [ -f /etc/nginx/sites-enabled/kalite ]; then - sudo rm /etc/nginx/sites-enabled/kalite -fi - -sudo touch /etc/nginx/sites-available/kalite -sudo sh -c "kalite manage nginxconfig > /etc/nginx/sites-available/kalite" -sudo ln -s /etc/nginx/sites-available/kalite /etc/nginx/sites-enabled/kalite - -echo "Step 3 - Optimize nginx configuration" - -sudo rm /etc/nginx/nginx.conf -sudo touch /etc/nginx/nginx.conf - -sudo sh -c "cat > /etc/nginx/nginx.conf" <<'NGINX' -user www-data; -pid /var/run/nginx.pid; - -### -# we have 1 cpu so only need 1 worker process -worker_processes 1; - -events { - ### - # good overall speed on RPi with this setting - worker_connections 1536; - - ### - # Activate the optimised polling for linux - use epoll; - - ### - # Keep multi_accept off - RPi+KA Lite is slowed if "on" - multi_accept off; -} - -http { - ### - # RPi+KA Lite is faster with sendfile "off" - sendfile off; - tcp_nopush off; - - tcp_nodelay on; - keepalive_timeout 65; - types_hash_max_size 2048; - - include /etc/nginx/mime.types; - default_type application/octet-stream; - - ### - # Speed up landing page by caching open file descriptors - open_file_cache max=2048; - - ## - # Logging Settings - # don't log, we don't need to know normally - access_log off; - error_log off; - - ## - # Gzip Settings - # We are CPU limited, not bandwidth limited, so don't gzip - gzip off; - - ## - # Virtual Host Configs - include /etc/nginx/conf.d/*.conf; - include /etc/nginx/sites-enabled/*; -} - -NGINX - -echo 'Step 4 - Finally... stopping and starting the background servers' - -sudo service kalite stop -sudo service kalite start -sudo service nginx stop -sudo service nginx start - -echo 'Now you can access KA-Lite through port 8008 (which will use optimizations)' -echo 'or directly through port 7007 (which will not use optimizations)'