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;
}
}