Mercurial > mplayer.hg
annotate DOCS/tech/mirrors/mirror_howto.txt @ 33263:5f527a9a9521
Add an exit function.
This function will allow performing clean-up operations.
(MPlayer calls guiDone() before exiting, but only if the GUI has been
initialized, i.e. if guiInit() has been called successfully. Any
exit_player()/exit_player_with_rc() after GUI's cfg_read() until
guiInit(), or any exit_player() during guiInit() itself will end the GUI
without calling guiDone(). This exit function will at least handle
abortions during guiInit() itself. It will be called twice in case of an
guiExit() after GUI initialization - first directly, next by guiDone()
via MPlayer's exit_player_with_rc().)
author | ib |
---|---|
date | Tue, 03 May 2011 12:19:22 +0000 |
parents | 0ad2da052b2e |
children |
rev | line source |
---|---|
30990 | 1 ------------------------------ |
18674 | 2 How to build an MPlayer mirror |
30990 | 3 ------------------------------ |
18674 | 4 |
22774 | 5 This document might be inacurate or even incomplete, please |
6 send feedback + corrections to the mplayer-mirror mailing list. | |
18674 | 7 |
8 About this document | |
9 ~~~~~~~~~~~~~~~~~~~ | |
10 | |
11 Mirroring MPlayer is quite easy but requires a few steps to be taken | |
12 and a few things taken care of. This document describes these steps | |
13 in detail so that anyone wishing to build an official or an unofficial | |
14 mirror can do that without much trouble. | |
15 | |
16 | |
17 A note on performance issues | |
18 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
19 | |
20 A few of the commands used here will generate some load on our main server. | |
18725 | 21 Too many clients executing them at once will overload our server and cause |
22 a performance degradation for all our users. Thus we kindly ask you to be | |
23 considerate about what you do. We do not want to restrict mirroring to a | |
24 few select people, but this requires everyone using the system described | |
25 here to behave. | |
18674 | 26 |
27 | |
28 Outline of the mirroring system | |
29 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
30 | |
18725 | 31 The mirroring system uses rsync to transfer the data and to perform |
32 updates. A script (update_mplayer_rsync) is provided to call the rsync | |
33 client with the right set of parameters. This script should be run | |
34 periodically via cron. | |
35 Additionally, official mirrors should set up an ssh account so that | |
36 updates can be triggered when important changes on the main server | |
18674 | 37 are performed. |
18725 | 38 Mirrors should provide their data over HTTP or FTP or both. Each official |
39 mirror will be assigned a mirror number (wwwXXX.mplayerhq.hu or | |
40 ftpXXX.mplayerhq.hu where XXX is the mirror number). This mirror | |
22887
dc3ff1498f69
Mention DNS round-robin system in the mirroring HOWTO.
diego
parents:
22774
diff
changeset
|
41 number determines the hostname over which it can be reached directly. |
dc3ff1498f69
Mention DNS round-robin system in the mirroring HOWTO.
diego
parents:
22774
diff
changeset
|
42 |
dc3ff1498f69
Mention DNS round-robin system in the mirroring HOWTO.
diego
parents:
22774
diff
changeset
|
43 All mirrors are put into our DNS round-robin for the www.mplayerhq.hu and |
dc3ff1498f69
Mention DNS round-robin system in the mirroring HOWTO.
diego
parents:
22774
diff
changeset
|
44 ftp.mplayerhq.hu names and should be set up to respond to these names as well. |
18674 | 45 |
46 | |
22910 | 47 Requirements |
48 ~~~~~~~~~~~~ | |
49 The requirements for any (official) mirror are: | |
50 1) rsync installed and some way to run the sync script periodicaly (eg cron) | |
27314 | 51 2) subscribing to the mplayer-mirror mailing list (see below) |
22910 | 52 |
53 The requirements for a full website mirror are: | |
54 1) 500MB of free disk space (for the ftp and homepage directories). | |
55 2) A network connection with about 5Mbit/s sustained bandwidth. | |
56 3) A simple webserver that allows redirections and virtual server, | |
57 no PHP or CGI needed as all pages are static. | |
58 | |
59 The requirements for a full ftp mirror are: | |
60 1) 500MB of free disk space (for the ftp directory). | |
61 2) (No bandwidth data for a ftp only server available) | |
62 | |
63 | |
18674 | 64 Getting the data, mirroring script and cron setup |
65 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
66 | |
18725 | 67 The mirroring script is located in our Subversion repository at |
68 | |
69 svn://svn.mplayerhq.hu/mplayer/trunk/DOCS/tech/mirrors/update_mplayer_rsync | |
70 | |
71 or on the web at | |
72 | |
73 http://svn.mplayerhq.hu/*checkout*/mplayer/trunk/DOCS/tech/mirrors/update_mplayer_rsync | |
18674 | 74 |
75 This script requires a working `rsync` client. The handling of the | |
76 lock file is done by using `lockfile` from the procmail package. | |
77 Using a lock file is recommended but not necessary. The temporary file | |
18725 | 78 generation is handled by `mktemp` which is available from |
79 http://www.mktemp.org/mktemp/ . | |
18674 | 80 |
25489 | 81 The script contains a few configuration variables at the beginning that |
18674 | 82 can and should be set: |
83 PATH: The $PATH to be used within the script (recommended). | |
18725 | 84 LOCK: The full path to the lock file to be used (/var/lock/mplayer-mirror-lock |
85 or something similar, recommended). | |
18674 | 86 MIRROR_ROOT: The root of the mirror. This is the directory where all files |
18725 | 87 are downloaded to (required). |
88 MAILADR: The mail address where reports should be sent to (required). | |
89 TMPDIR: The directory where temporary files should be created. | |
90 If you set this explicitly, you have to uncomment the export below | |
91 (defaults to /tmp if not set). | |
18674 | 92 |
93 Install this script and set the variables according to your setup. Then run | |
18725 | 94 it once to get the first checkout of the mirror. This will require (at the |
95 time of this writing - 2006-06) about 500MB of disk space. | |
18674 | 96 You should get two directories in your $MIRROR_ROOT: homepage and MPlayer. |
18725 | 97 The former containing the HTML pages for the mirror and the latter the |
98 downloadable files. | |
18674 | 99 |
18725 | 100 If this worked out OK, you should set up a cron job that periodically updates |
18674 | 101 the files. If you run an official mirror you should run the script every |
102 6h to 12h (6h recommended). If you do not run an official mirror, you should | |
103 not run the script more often than once a day. Please use an "odd" time | |
104 to run the script when it is unlikely that any other cron job is running. | |
105 Bad times are e.g. full hours, or minutes that are divisible by 5. | |
106 An example crontab line would look like this: | |
107 --- | |
108 17 1,8,13,19 * * * /path/to/update_mplayer_rsync | |
109 --- | |
110 (please change the minute and hours to something random) | |
111 | |
112 You can change the rest of the script as you see fit, although it is not | |
113 recommended. Please DO NOT CHANGE the options of the rsync commands. | |
114 Especially DO NOT REMOVE the -t and -W options. These prevent calculating | |
115 checksums on the server side which are very expensive. | |
116 | |
117 | |
18725 | 118 Setting up an SSH account for update triggers |
18674 | 119 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
120 | |
18725 | 121 Official mirrors should provide an ssh-based trigger to run the update script |
122 on request. This makes it possible to distribute releases and other important | |
123 files immediately to all mirrors. | |
18674 | 124 |
18725 | 125 The setup does not need a special user other than the one as which the update |
126 script is run and does not allow running any other command. | |
18674 | 127 |
18725 | 128 First you need to create an ssh key pair by running: |
18674 | 129 --- |
130 ssh-keygen -t dsa -C MPHQ_rsync_trigger -f www#_sshkey | |
131 --- | |
132 (replace the '#' by your mirror number) | |
133 | |
134 You should send the private key to us by mail and specify the host and | |
18725 | 135 user to be used. Please use a private mail of one of the admins and |
136 DO NOT send the private key to the mirror mailing list. | |
18674 | 137 |
18725 | 138 The public key should be placed in the ~/.ssh/authorized_keys file of the |
139 user running the updates. To restrict the ssh key to only one command place | |
25489 | 140 the following directives at the beginning of the line with the key: |
18725 | 141 from="*.mplayerhq.hu",command="<path_to_update_mplayer_rsync>" |
18674 | 142 e.g.: |
143 --- | |
18725 | 144 from="*.mplayerhq.hu",command="/path/to/update_mplayer_rsync" ssh-dss AAAA |
18674 | 145 B3NzaC1kc3MAAAEBAI20yhE3/bRjzojUhhMz4DHnGhcJUiPWOfoP9CygnFOYOxJTFlxgqM3iJiHWRxgK |
146 FJ/Uw40eV9K4Ww4fp2pe1guXJzKna8+6vBXaPPVEVxSyaxgtt4Xt3zpUuCnNljgArcEhwcNyOyH2RVln | |
147 yhyxsrKhuq5ZoNHD3caBGjZu3eOR2atPGS1NOdeN/hytIoh8T8DicPqPI29yWX9yAjnHv6wdPutwMLu6 | |
148 [...] | |
149 n0Fs3CJY6/1UpgDGH7VPey0SdpJEDewltRLA+buP++2vJD/NUOeGzcRydo2NdZ1wiiaytXxkaec928JC | |
150 NABTeBh6NKAg4vnPvcRLKEBVdSrar/fARSbOmf3HOcsw3uZoAIE9jDGhnMKcnXfHjPZ2tZP9CHs6Wo4n | |
151 yDOxIfDZmJ7VJqMRc6//p5k81pkkGvawbPA63StI/Dkv/648l4XONuJc2z5gaUdjrTA8TsD/VJGiGcHl | |
152 mlGj3IWCBz7e4+XB3L64kFZwLCYN8kwDUAaHq4EtcMVOnQ== MPHQ_rsync_trigger | |
153 --- | |
154 (lines split for readability) | |
155 | |
156 | |
157 Setting up a webserver | |
158 ~~~~~~~~~~~~~~~~~~~~~~ | |
159 | |
18726 | 160 Set up Apache or whatever web server you prefer. We just have static pages, |
161 so no fancy configuration is necessary. However, we need a few aliases so that | |
162 links on our pages work correctly. /MPlayer and /DOCS should redirect to the | |
28312
71e985becf45
The homepage/ subdirectory should no longer be redirected on web mirrors.
diego
parents:
27315
diff
changeset
|
163 directory with the downloadable files. |
18726 | 164 |
165 Here is an example stanza to paste into your Apache configuration: | |
166 | |
167 <VirtualHost www#.mplayerhq.hu> | |
168 DocumentRoot /path/to/htdocs | |
19268 | 169 Options FollowSymLinks Indexes |
18726 | 170 Alias /MPlayer /path/to/MPlayer |
171 Alias /DOCS /path/to/MPlayer/DOCS | |
20458
038e29652be8
Add a note about charset configuration to the Apache section.
diego
parents:
19268
diff
changeset
|
172 AddDefaultCharset off |
18726 | 173 </VirtualHost> |
18674 | 174 |
22887
dc3ff1498f69
Mention DNS round-robin system in the mirroring HOWTO.
diego
parents:
22774
diff
changeset
|
175 <VirtualHost www.mplayerhq.hu> |
dc3ff1498f69
Mention DNS round-robin system in the mirroring HOWTO.
diego
parents:
22774
diff
changeset
|
176 DocumentRoot /path/to/htdocs |
dc3ff1498f69
Mention DNS round-robin system in the mirroring HOWTO.
diego
parents:
22774
diff
changeset
|
177 Options FollowSymLinks Indexes |
dc3ff1498f69
Mention DNS round-robin system in the mirroring HOWTO.
diego
parents:
22774
diff
changeset
|
178 Alias /MPlayer /path/to/MPlayer |
dc3ff1498f69
Mention DNS round-robin system in the mirroring HOWTO.
diego
parents:
22774
diff
changeset
|
179 Alias /DOCS /path/to/MPlayer/DOCS |
dc3ff1498f69
Mention DNS round-robin system in the mirroring HOWTO.
diego
parents:
22774
diff
changeset
|
180 AddDefaultCharset off |
dc3ff1498f69
Mention DNS round-robin system in the mirroring HOWTO.
diego
parents:
22774
diff
changeset
|
181 </VirtualHost> |
dc3ff1498f69
Mention DNS round-robin system in the mirroring HOWTO.
diego
parents:
22774
diff
changeset
|
182 |
20458
038e29652be8
Add a note about charset configuration to the Apache section.
diego
parents:
19268
diff
changeset
|
183 The AddDefaultCharset directive is necessary because newer versions of Apache |
038e29652be8
Add a note about charset configuration to the Apache section.
diego
parents:
19268
diff
changeset
|
184 appear to default to defining a standard charset. This breaks our documentation |
038e29652be8
Add a note about charset configuration to the Apache section.
diego
parents:
19268
diff
changeset
|
185 translations, which are written in different encodings. |
038e29652be8
Add a note about charset configuration to the Apache section.
diego
parents:
19268
diff
changeset
|
186 |
22887
dc3ff1498f69
Mention DNS round-robin system in the mirroring HOWTO.
diego
parents:
22774
diff
changeset
|
187 The second VirtualHost is necessary for the DNS round-robin address. |
27301
19fef8a7d0ab
Add instructions how to test the DNS round-robin virtual host, add a
diego
parents:
25489
diff
changeset
|
188 To check whether this VirtualHost works, you can add a temporary entry into |
19fef8a7d0ab
Add instructions how to test the DNS round-robin virtual host, add a
diego
parents:
25489
diff
changeset
|
189 your /etc/hosts file: |
19fef8a7d0ab
Add instructions how to test the DNS round-robin virtual host, add a
diego
parents:
25489
diff
changeset
|
190 |
19fef8a7d0ab
Add instructions how to test the DNS round-robin virtual host, add a
diego
parents:
25489
diff
changeset
|
191 1.2.3.4 www.mplayerhq.hu |
19fef8a7d0ab
Add instructions how to test the DNS round-robin virtual host, add a
diego
parents:
25489
diff
changeset
|
192 |
19fef8a7d0ab
Add instructions how to test the DNS round-robin virtual host, add a
diego
parents:
25489
diff
changeset
|
193 Replace the IP address by the real IP address of your mirror. Do not forget to |
19fef8a7d0ab
Add instructions how to test the DNS round-robin virtual host, add a
diego
parents:
25489
diff
changeset
|
194 remove the entry after you finish testing. |
19fef8a7d0ab
Add instructions how to test the DNS round-robin virtual host, add a
diego
parents:
25489
diff
changeset
|
195 |
19fef8a7d0ab
Add instructions how to test the DNS round-robin virtual host, add a
diego
parents:
25489
diff
changeset
|
196 |
19fef8a7d0ab
Add instructions how to test the DNS round-robin virtual host, add a
diego
parents:
25489
diff
changeset
|
197 Webserver checklist |
19fef8a7d0ab
Add instructions how to test the DNS round-robin virtual host, add a
diego
parents:
25489
diff
changeset
|
198 ~~~~~~~~~~~~~~~~~~~ |
19fef8a7d0ab
Add instructions how to test the DNS round-robin virtual host, add a
diego
parents:
25489
diff
changeset
|
199 |
19fef8a7d0ab
Add instructions how to test the DNS round-robin virtual host, add a
diego
parents:
25489
diff
changeset
|
200 After setting up the web server, please verify that the following things work |
19fef8a7d0ab
Add instructions how to test the DNS round-robin virtual host, add a
diego
parents:
25489
diff
changeset
|
201 both for your mirror address (www#.mplayerhq.hu) and the DNS round-robin |
19fef8a7d0ab
Add instructions how to test the DNS round-robin virtual host, add a
diego
parents:
25489
diff
changeset
|
202 address (www.mplayerhq.hu): |
19fef8a7d0ab
Add instructions how to test the DNS round-robin virtual host, add a
diego
parents:
25489
diff
changeset
|
203 |
19fef8a7d0ab
Add instructions how to test the DNS round-robin virtual host, add a
diego
parents:
25489
diff
changeset
|
204 - The virtual host is reachable by its address. |
28312
71e985becf45
The homepage/ subdirectory should no longer be redirected on web mirrors.
diego
parents:
27315
diff
changeset
|
205 - The MPlayer and DOCS subdirectories work. |
27301
19fef8a7d0ab
Add instructions how to test the DNS round-robin virtual host, add a
diego
parents:
25489
diff
changeset
|
206 - The man pages and documentation are served with the correct content-type. |
19fef8a7d0ab
Add instructions how to test the DNS round-robin virtual host, add a
diego
parents:
25489
diff
changeset
|
207 Try Russian or Chinese, you will notice breakage immediately. |
22887
dc3ff1498f69
Mention DNS round-robin system in the mirroring HOWTO.
diego
parents:
22774
diff
changeset
|
208 |
18674 | 209 |
210 Setting up an FTP server | |
211 ~~~~~~~~~~~~~~~~~~~~~~~~ | |
212 | |
27315 | 213 Any FTP server will do. We use vsftpd, it is fast and secure. The setup is |
214 similar to the web server setup. The FTP server should listen on both its mirror | |
215 address (ftp#.mplayerhq.hu) and the DNS round-robin address (ftp.mplayerhq.hu). | |
216 All our mirrors are public, so you should allow anonymous access. | |
217 | |
218 You should have the same directory layout as we do on our server, so there | |
219 should be a subdirectory named 'MPlayer' (notice the capitals) that contains | |
220 the downloadable files. | |
18674 | 221 |
222 | |
27314 | 223 Mailing list |
224 ~~~~~~~~~~~~ | |
18674 | 225 |
22910 | 226 All official mirror admins are required to subscribe to the mplayer-mirror |
27314 | 227 mailing list. It's used to coordinate the efforts and distribute information |
22910 | 228 among all admins. It is also very low traffic. Please use the webinterface |
229 on http://lists.mplayerhq.hu/mailman/listinfo/mplayer-mirror to subscribe. | |
27301
19fef8a7d0ab
Add instructions how to test the DNS round-robin virtual host, add a
diego
parents:
25489
diff
changeset
|
230 Please do not top-post on this mailing list. |