Add README
This commit is contained in:
		
							parent
							
								
									8a22d1fa93
								
							
						
					
					
						commit
						38ca9edf3e
					
				
							
								
								
									
										106
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,106 @@ | ||||||
|  | # Static Deplyer | ||||||
|  | 
 | ||||||
|  | A simple daemon help with extracting tar files to specific place | ||||||
|  | and create a symbolic link to it, the tar files should be transferred | ||||||
|  | to this daemon by http. | ||||||
|  | 
 | ||||||
|  | ## Caution | ||||||
|  | 
 | ||||||
|  | No `data-form` or `x-www-urlencoded-form` supported, so the tar must be transferred | ||||||
|  | just in POST body, ie: `curl --data-binary @file.tar.gz`. | ||||||
|  | 
 | ||||||
|  | No authorization implemented, so a reverse proxy with auth is recommanded. | ||||||
|  | 
 | ||||||
|  | Tar file with sub directories with be extracted as is, so do not contain parent | ||||||
|  | directory when you create tar. | ||||||
|  | 
 | ||||||
|  | ## Usage | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | $ ./main.py --help | ||||||
|  | usage: main.py [-h] --archive-dir ARCHIVE_DIR --extract-dir EXTRACT_DIR --symlink-path | ||||||
|  |                SYMLINK_PATH [--keep-extract KEEP_EXTRACT] [--keep-archive KEEP_ARCHIVE] | ||||||
|  |                --port PORT [--temp-dir TEMP_DIR] | ||||||
|  | 
 | ||||||
|  | options: | ||||||
|  |   -h, --help            show this help message and exit | ||||||
|  |   --archive-dir ARCHIVE_DIR | ||||||
|  |                         directory to save archives | ||||||
|  |   --extract-dir EXTRACT_DIR | ||||||
|  |                         directory to save extracted files | ||||||
|  |   --symlink-path SYMLINK_PATH | ||||||
|  |                         path of symlink which redirect to extracted archive | ||||||
|  |   --keep-extract KEEP_EXTRACT | ||||||
|  |                         Number of extracted archives to keep, 0 mean never vacuum | ||||||
|  |   --keep-archive KEEP_ARCHIVE | ||||||
|  |                         Number of archives to keep, 0 mean never vacuum | ||||||
|  |   --port PORT           listen port on 127.0.0.1, no authorization implemented so only | ||||||
|  |                         listen on 127.0.0.1 for safety | ||||||
|  |   --temp-dir TEMP_DIR   path to save in-delivery archive | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ## Example | ||||||
|  | 
 | ||||||
|  | First start the daemon. | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | $ ./main.py --port 8080 --archive-dir archive --extract-dir extracted --symlink-path serve | ||||||
|  | INFO:root:Listening on 127.0.0.1:8080 | ||||||
|  | INFO:root:Archive saves under: archive | ||||||
|  | INFO:root:Extract tar under: extracted | ||||||
|  | INFO:root:Keep 8 archives at most | ||||||
|  | INFO:root:Keep 4 extracted at most | ||||||
|  | INFO:root:Symbolic link location: serve | ||||||
|  | INFO:root:Temperory directory: /tmp | ||||||
|  | INFO:root:Starting httpd... | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Then create a tar and upload it to this daemon. | ||||||
|  | 
 | ||||||
|  | **Note**: the tar shouldn't contain its parent directory, but `.` as parent | ||||||
|  | is acceptable. Or you can follow [this step](https://stackoverflow.com/a/39530409) | ||||||
|  | to create a more elegant tar. | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | $ mkdir tmp | ||||||
|  | $ cd tmp | ||||||
|  | $ echo 'Hello, world!' > index.html | ||||||
|  | $ tar --gzip -cf ../tmp.tar.gz . | ||||||
|  | $ tar -tf ../tmp.tar.gz | ||||||
|  | ./ | ||||||
|  | ./index.html | ||||||
|  | $ curl --data-binary @../tmp.tar.gz http://localhost:8080/ | ||||||
|  | Success | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | And the server side shows | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | ... | ||||||
|  | INFO:root:Starting httpd... | ||||||
|  | INFO:FileManager:Temporarily save to /tmp/archive_2023-04-04T10:35:49.tar.gz | ||||||
|  | INFO:FileManager:Moving saved archive to archive/archive_2023-04-04T10:35:49.tar.gz | ||||||
|  | INFO:FileManager:Extracting to extracted/archive_2023-04-04T10:35:49 | ||||||
|  | INFO:FileManager:Recreating symlink point to extracted/archive_2023-04-04T10:35:49 | ||||||
|  | INFO:FileManager:Vacuuming archive, keep the 8 lastest | ||||||
|  | INFO:FileManager:Vacuuming extract, keep the 4 lastest | ||||||
|  | INFO:FileManager:Deploy success | ||||||
|  | 127.0.0.1 - - [04/Apr/2023 10:35:49] "POST / HTTP/1.1" 200 - | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Finally the directory looks like (omit unrelated directories): | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | . | ||||||
|  | ├── archive | ||||||
|  | │   └── archive_2023-04-04T10:35:49.tar.gz | ||||||
|  | ├── extracted | ||||||
|  | │   └── archive_2023-04-04T10:35:49 | ||||||
|  | │       └── index.html | ||||||
|  | └── serve -> extracted/archive_2023-04-04T10:35:49 | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ## Use Case | ||||||
|  | 
 | ||||||
|  | When you hold a static site and want to update its content easily, | ||||||
|  | like just uploading a tar and automatically deployed. | ||||||
		Loading…
	
		Reference in a new issue
	
	 leafee98
						leafee98