Nasıl Güncelleniyor?

Bu belgelerin kaynak kodları github üzerinde bulunuyor. Bir webhook yardımıyla, belgelerde yaptığım değişiklikleri commit ettiğim zaman, otomatik olarak yeni html sayfaları oluşturulup yayına alınmaktadır.

Yayına alan uygulamayı da burada bulacaksınız. Flask ile yazılmış küçük bir uygulamadır.

push/app/__init__.py

from flask import Flask

        

app = Flask(__name__)
app.config.from_pyfile('config.cfg')

app.config["PROPAGATE_EXCEPTIONS"]  = True

from app import views 

push/app/views.py

from flask import Flask, session, Response,  request
from app import app
import os

class Project:
  def __init__(self, projNo, git_url, targetdir, targeturl):
    self.project = projNo
    if type(projNo) is not int:
      return None
    self.git = git_url
    self.url = targeturl
    self.target = targetdir
    self.tmpdir = "/tmp/push_%d" % projNo
    
  def clear_temp(self):
    os.system("rm -rf %s" % self.tmpdir)
    os.system("mkdir -p %s" % self.tmpdir)
    

  def getcontent(self):
    os.system("cd %s; git clone %s " % (self.tmpdir, self.git))
    
  def build(self, build_type="html" ):
    self.clear_temp()
    self.getcontent()
    projdir = "%s/%s" % (self.tmpdir, self.git.split("/")[-1])
    os.system("cd %s ; make %s" % (projdir, build_type))
    os.system("rm -rf %s_old" % self.target)
    os.system("mv %s %s_old" % (self.target, self.target))
    print("mkdir -p %s/_static" % self.target)
    os.system("mkdir -p %s/_static" % self.target)
    os.system("cp -r %s/_build/html/* %s" % (projdir, self.target))
  
    
projects =  { 
  1: Project(1,"https://github.com/ilkermanap/pyqt", "/var/www/blog/pyqt", "https://blog.manap.se/pyqt")

}

@app.route("/update/<int:project_no>", methods=['GET','POST'])
def update_project(project_no):
  project = projects[project_no]
  project.build()
  return "ok"

@app.route('/', methods=['GET','POST'])
def home():
  s = ""
  for i in projects.values():
    s += "<br><a href=%s>%s</a>\n" % (i.url)

  return '''
    <!doctype html>
    <title>Blog Sayfalari</title>
    <h1>Blog Sayfalari</h1>
    %s
  </html>''' %s

  

  

push/uwsgi.ini

[uwsgi]
base=/var/www/webservice/push
app=app
module=%(app)

socket=%(base)/uwsgi.sock

chmod-socket=600

callable=app
logto=/var/log/uwsgi/push.log

Nginx Ayarları

 server {
        listen       443 ssl http2;
        listen       [::]:443 ssl http2;
        server_name  blog.manap.se;
        root         /var/www/blog;


	access_log  /var/log/nginx/blog_secure.access.log;
	error_log  /var/log/nginx/blog_secure.error.log error;

        ssl_certificate /etc/letsencrypt/live/blog.manap.se/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/blog.manap.se/privkey.pem;

        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }

 	location /update {
            include uwsgi_params;
            uwsgi_pass unix:/var/www/webservice/push/uwsgi.sock;
        }
    }