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