Project

General

Profile

Using Redux to serve images on myamiweb » History » Version 48

Amber Herold, 12/16/2013 02:39 PM

1 1 Anchi Cheng
h1. Using Redux to serve images on myamiweb
2
3 48 Amber Herold
Install Leginon and Appion web tools for viewing images and performing image processing through the web server.
4 21 Amber Herold
Redux is new for CentOS 6 (PHP 5.3). 
5
6 1 Anchi Cheng
h2. Installation
7
8 33 Amber Herold
* Install python filesystem abstraction for redux caching:
9 1 Anchi Cheng
<pre>
10
sudo easy_install fs
11
</pre>
12 33 Amber Herold
* Install Myami packages
13
<pre>
14
cd myami
15
./pysetup.sh install
16
</pre>
17 1 Anchi Cheng
18 47 Amber Herold
h2. Copy the myami/myamiweb directory to your Apache web directory
19
20
Example:
21
<pre>
22
cd myami
23
24
#CentOS example
25
sudo cp -vr myamiweb /var/www/html/ 
26
27
#this is temporary for setup, revert to 755 when finished with this page
28
sudo chmod 777 /var/www/html/myamiweb  
29
30
#if you have SELinux enabled this command will help
31
sudo chcon -R --type=httpd_sys_content_t /var/www/html
32
</pre>
33
34
35
36
37 34 Amber Herold
h2. Configuration
38 1 Anchi Cheng
39 16 Anchi Cheng
h3. configure redux
40 17 Anchi Cheng
41 1 Anchi Cheng
<pre>
42 17 Anchi Cheng
> cd /YourMyamDownload/redux
43 16 Anchi Cheng
> cp redux.cfg.template redux.cfg
44 1 Anchi Cheng
</pre>
45 44 Amber Herold
46 17 Anchi Cheng
* You can also copy it to /etc/myami/redux.cfg if you prefer.
47 1 Anchi Cheng
* Set a writable log path by the user starting it.  In this example, we start redux as root and save the log in /var/log/redux.log
48 34 Amber Herold
* Edit the redux.cfg file as follows:
49 44 Amber Herold
&nbsp;
50 31 Anchi Cheng
<pre>
51
[log]
52
file: /var/log/redux.log
53
</pre>
54 44 Amber Herold
&nbsp;
55 43 Amber Herold
* Turn on redux caching if desired:
56 44 Amber Herold
&nbsp;
57 1 Anchi Cheng
<pre>
58 16 Anchi Cheng
[cache]
59
enable: yes
60
path: /var/cache/myami/redux
61
disksize:  500
62 40 Amber Herold
memsize: 500
63 1 Anchi Cheng
</pre>
64 44 Amber Herold
&nbsp;
65
** *You need to make sure the cache path exists and writable by the user that starts the redux server (reduxd)*
66 38 Amber Herold
** Input the desired disk_cache_path, disk_cache_size, and mem_cache_size in the next few lines
67
** Create the disk_cache_path before running redux if cache will be used
68 37 Amber Herold
69 1 Anchi Cheng
70 42 Amber Herold
71 1 Anchi Cheng
h2. Test Installation
72
73
# Using Redux to do simple input output (simple client with no reduxd server needed):<pre>redux --filename=test.jpg --oformat=PNG > test.png</pre>Make sure the resulting test.png is in fact an image and not an error message.
74
# Run the server:  run the following on a command line:<pre>reduxd</pre>leave it running for the following...
75
# Test command line client connecting to the server<pre>redux --server_host=localhost --filename=test.jpg --oformat=PNG > test.png</pre>Note: The input file name is from the perspective of the reduxd server, so be sure to give it an absolute path (unlike the first test, which was not accessing the server)
76 31 Anchi Cheng
# Check the redux.log created as configured in redux.cfg.  This contains the port opened by redux server that will allow myamiweb to connect to.
77
78
h2. Assign redux client to connect to redux server in myamiweb
79
80
* At myamiweb/config.php
81
<pre>
82
define('SERVER_HOST',"localhost")
83
define('SERVER_PORT',"55123");
84
</pre>
85
*The server port chosen should match the value found in redux.log when the redux server is started*
86 2 Anchi Cheng
87 46 Anchi Cheng
h2. Setup fftw to use wisdom (myami-3.0 only)
88 25 Anchi Cheng
89 27 Anchi Cheng
*This applies only if you see the messge "*** Using custom copy of fftw3"* in the previous redux test.
90
91 29 Anchi Cheng
fftw runs much faster on odd image dimension if a wisdom is saved. It is best to create the wisdom ahead of time using the stand alone script pyami/fft/fftwsetup.py.  It will store the wisdom you create in your home directory with a name like 'fftw3-wisdom-hostname'.  If you only start reduxd as root and fftwsetup.py is run as root, this is enough.
92 1 Anchi Cheng
93 47 Amber Herold
* Redux needs write permission at its installation location to write fftw wisdom file.
94 29 Anchi Cheng
* For developer only: you can copy the wisdom file to any other home directory that wants to use it, or copy it as root to a file called /etc/fftw/wisdom which any user can access.
95
96 1 Anchi Cheng
h3. Using fftwsetup.py:
97 25 Anchi Cheng
98 30 Anchi Cheng
FIrst, you need to know the typical image dimension redux needs to process, especially the large ones and *ones that are not powers of 2 such as those produced by Gatan K2*.
99 25 Anchi Cheng
100
<pre>
101
cd /YourMyamDownload/pyami/fft
102
./fftwsetup.py 1 number_of_rows number_of_colums
103
</pre>
104
105
For example, for K2 summit super-resolution image there are 7676 rows and 7420 columns, therefore, the command line is
106
<pre>
107
./fftwsetup.py 1 7676 7420
108
</pre>
109
This may take a few minutes.
110
111
Run this for as many dimensions you know will be used and move it for general use as instructed above if preferred.
112 1 Anchi Cheng
113 32 Anchi Cheng
h2. Using redux server with myamiweb (recommended)
114 14 Jim Pulokas
115 15 Jim Pulokas
# start reduxd server if not already running from the above test:<pre>reduxd</pre>
116 10 Neil Voss
# click on "[test dataset]" on your main myamiweb home page, or go directly to the URL: myamiweb/viewerxml.php
117 15 Jim Pulokas
# test by accessing your own images from Leginon in myamiweb/imageviewer.php
118 11 Neil Voss
119
h2. starting reduxd at boot
120
121
<pre>
122
sudo cp -v myami/redux/init.d/reduxd /etc/init.d/
123 1 Anchi Cheng
sudo service reduxd start
124
</pre>
125 18 Anchi Cheng
126 22 Jim Pulokas
h2. Alternative reduxd installation on file server rather than web server
127
128
This approach is less tested, but has been found necessary in the case of a very high load system (multiple microscopes acquiring data, multiple processing jobs, multiple web clients and servers, etc).  The problem has been that all of this demand for image I/O is occuring over NFS, and the NFS server is not coping with the high demand.  One solution we have been investigating is to run reduxd directly on the file server rather than the web server.  This means reduxd has direct access to the image files (not through NFS) and the web server now accesses reduxd over the network rather than locally.  This has two potential benefits:  1) less load on the NFS server, 2) only transferring JPEGs over the network, not MRCs.
129
130
How to do it:
131
132
# Install required myami components on the file server, at least pyami, sinedon, numextension, redux, leginon, modules, and any other 3rd part packages required by those.
133 23 Jim Pulokas
# (optional) edit init.d/reduxd and use the optional high priority command line (see comment in that file)
134 22 Jim Pulokas
# Configure redux.cfg on file server and start reduxd
135 23 Jim Pulokas
# On web server, configure config.php:  turn off all caching options, set redux server host to be the file server
136 24 Jim Pulokas
# skip starting reduxd on the web server
137 23 Jim Pulokas
# skip imcache as described below, since this also uses redux locally and accesses images over NFS
138 22 Jim Pulokas
139 20 Amber Herold
{{include(leginon:Using imcache to cache mrc images as jpeg images of the default size on myamiweb)}}