From 30512fce2ef5c2088f43aa170f36dc5d6d23cdb2 Mon Sep 17 00:00:00 2001 From: Fred Date: Mon, 21 Dec 2020 21:26:01 +0100 Subject: [PATCH] Add a lot about Heroku But the deployment steps still need clarification. For now, we just have a new app with database and backups. Refs: https://sources.grimbox.be/Fred/gwift-book/issues/10 --- .../images/deployment/heroku-app-created.png | Bin 0 -> 23224 bytes source/images/deployment/heroku-new-app.png | Bin 0 -> 58002 bytes source/images/deployment/heroku.png | Bin 0 -> 17219 bytes source/part-1-workspace/django/_index.adoc | 35 ++++- .../part-1-workspace/environment/_index.adoc | 9 +- source/part-2-deployment/_index.adoc | 3 - source/part-2-deployment/ansible.adoc | 1 - source/part-2-deployment/database.adoc | 63 --------- source/part-2-deployment/debian.adoc | 75 ++++++++++- source/part-2-deployment/docker.adoc | 4 +- source/part-2-deployment/heroku.adoc | 126 ++++++++++++++++++ 11 files changed, 236 insertions(+), 80 deletions(-) create mode 100644 source/images/deployment/heroku-app-created.png create mode 100644 source/images/deployment/heroku-new-app.png create mode 100644 source/images/deployment/heroku.png delete mode 100644 source/part-2-deployment/ansible.adoc delete mode 100644 source/part-2-deployment/database.adoc diff --git a/source/images/deployment/heroku-app-created.png b/source/images/deployment/heroku-app-created.png new file mode 100644 index 0000000000000000000000000000000000000000..63d45eeb91edbc105547887ac081e2910750c0a3 GIT binary patch literal 23224 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

sMLT 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 NjSbBViZ9&?{U1)}mDd0O literal 0 HcmV?d00001 diff --git a/source/images/deployment/heroku-new-app.png b/source/images/deployment/heroku-new-app.png new file mode 100644 index 0000000000000000000000000000000000000000..f6a876f59ef72eb8042af6026830ea1beaff487f GIT binary patch literal 58002 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�igQ721a`KmBp6=xT2;RzE54%9VYp>bb43-U8ePOiTn`boOwwciXdws>N zO@k8~93ne^=s@~@`kzt1xn#_It8$2T>xdM`lBaQQE&SQ~&i3L%;^K~Ep+rW6Yn^?F(Pv$J zxr+S=?$c*&g&J|~h?ot*>Twuth5N?PT*ADApHKpzSe>Zq%_csDeKL18yH?68hGX9e zG$7EiBy_)T{f!}+2Xd7gIcpD>#R5Aj1NQPYvuxjCN>%n^T;mbYTzKy+P&Peh0TQ9~ ziVrULf%nbnnv;>ja1-t0K<4~eoi&m_Qs+%-@re{jw>(^(#Pr~Us(_Qk@nh>^jvRf7 zVA9kDqdC2D@$zW!7m9ry5f%InvHZu>Yr!-YJhWMP!Up=KWy(W0uclajLCw!2pkY(t zS)IRP3JGn}(2feO4UcxqffZ%(DGGIo6*xMrehSqB$`iT-j6BSc>)kBetXRkf%%=p= zq00rsTQDIp;odhm-70ZRuoQS5AC^YuV&-ngCrQN6FBb{xyS}c znLh?P+~@FEanUK3^-0xW0&akEeva&JVC6U+*o0y$=-v>VE-WiCu1}ESKK*PEMB ztmdMxmCvKbhlh%^kCTE}CLhM%Jk+uJ8RvK-dq)F$N`WpbC=}{o9@%;ya4MmV<0{E; znxsqp%XVbTugVk?I&7?e8*Ym;0{iYa`ZDLUoA|r%;*x9mXC%xUQ3U4C8ebsY5=GzG z-9#UOt2Y1SO!WV5pl?)f_AF$Nmb@b64~Q6EXp)+u~tV?!B$?A=2xG z!iWQ5Xck@~VGz;<_Wlr0B34)06S4NQYA~4$BLZ=jsz0dkH1L>9{>>#npwy!Mlre@2RLGT80 z=O>O3?P+O{y{-lZxz7hM6#@RV#Qe?E1;}d1I^YAfssk4_^8J}l@BzJSBzF+R{P**a zoRK2bnHz7zQzQE})x2|#P5BHT97!8+aT3>4gPMtR4Y1v6l zJjAM)wX~6@6(O&bTLlwD#K~{lX{yx(J3V~c?>TgCYjx~?Lf$GiobW;0Psd~^nNszD zYFzD4oTx;JDfV(d{aK$9b-)X$Gm840@Pg5fjlW?KVXkEC-%x1P=0h9A*u(-ocGf>v zXU-bCy^kpUNK|)l<+tr5NFW?pSn0m5^W|OWYMS#)L7}3IKFd9WzH!w($)d|P?=ZqX zNQX*Ww(wA`lJ}Up)}mEe@1ea6<%0f>7Q+Jiz`<3WcBIf7hcoio8%y;kFIPT4{==|M zTQdz=GydL6r}2C7axz@x9-JU0OYXnFxWavXW!2~D+0(Cg4P2*RzgOC^-=9NF(GXLA zuOVn_Q?xZi{n{Fc>}mvo8~IqO8o8>%AhnB&_Ri}r_RCK8t4=Pfb`DE+b}mJ(4tb7t z1qH4-g^oQUlJ0%C4UN5$B-f%PI{Ep7EO!jqf7=WdR7Md8?Y+i>C?wHesl`=R+qj%4#kHZ-evMS`<(L|rOP$p{MUD4)#h>Dt zG4sDt&X99=SJZ0`7ky+cPrmhOXs;_TkEJ@d=+ger^{7JE75QLuW)p|3I*3$ECTjV( zC0YL^D)<&3b;2Cd)fb*<$T@Ou=~P5XCo;Z$XUI{0WjH^qQX&}SO>$cUdL!q*sX2(4 z%v-O3?P+!j6}c?NxC+!9eCT=`N=gd!-g&?~(*A_K%&O5DE(Ng7TDs9TlgVU<;N5s` zCugNFitjS}1bgB*hpAkmi9E^D$1%XjRJHQ!bTDdhEt>i;zS#6D=lgMuwzbDxRX+R< zke3s67e>87K&OPSoQdy1pMsf>eM!MRUQRjeCqGEYHjeO@UuNG@8CvP;N=lG%oo^Tz zkSIc-EIZ+r5D1_wrAUN@!Myf({VUP>bA-jo_P*jzk$rCXw$a{=#qS=!??0H7xo0rY z`!cZWc5K(fj%fEfH#j)`SxI&!Ia{-LhRixQB=wvx5Y$~1wNtmLEt0F; z%&&1^(Lz_0Cbx~f+mCahX8!*Cmts;ZRAlH>0REYOC90-JC($i{MGYaYP?TZOVCLYR zTBEJ!i2o_Px?bcjU7HZY6Tw%P0m})-MuqZIzt4h2Q5^$-&Mv5fF+Wc$;_&k_R;P!b zK(wA)<^wL*h87{foIQQNKR+JP9msXI|K_y zimuu)AZ4Pr#%qVjkGD8A@=Vl)lEQ=&!-Nt;EhMkS$y|$(dRo>aRuB+n=?5sNwz1j} z>N^ZF+^ipL=ayGfUtJ0RF+FqR`VB7kaJi7y`O3Spmcb){vc3{6w$KV9>rn{{m0}Z! zl{3~M_Y`?DcdqVRJYE&=(hFctsr}59ekarWYgOA)eRW`MD3XNM ztH&bR9KqamCBm~MC%@U!WBNx?fQr?H|5Thvc{4`=}$0wV*+y(OZlpp!}xhi$?>(|r650q@Ht3C zN`tF{-@%Tu^Ky}Z>+))V2*SMX;O2<0Gno*q@@Z<-k4MdXeuq%!GcXj1`H7ocsTewAttBd4XT4+^bEoF!&GA5i`B3#R&0ykD8FnfY)a``-DJNP3oCJ9-+&;rQ{39{fq86 zE)c}*m1|Sjvtf$t1Id@2$hj**Z}vNp{%85%dRLWCi5!V;Ee--C9%wh*79a&g{RIrD z9T^rxDIk!6Ad-(v6p?G8%9Z#`XZX$x(bhd&a%}(^tM;KULcKhT^&C>SSgj?x(lta? zV0(vJw@m@W=IKFwYd^li3~GXPSRK^zH@JPGmEVG(>I4cj3?|V^C5-yl74P1;>sobi zlm6uMllb3d`TgkG@lvCK?N8RM24Lar8u|wL6T_!97fe%pBfPe1PG@B;Jzl_46ed&j z4r2TXs0>yn=P08Tg`b-Y9f;?ee7YU^Gt*+QjF5-%EgT{{+D8>~gG{63t$T`1zf3cq6(c=%vaG;7jEs@CnT6WxCPPWft5bvu2H?1C@z7pPzm-lbWe|pYYEb z2ef%*A4&5Tc4TtYwmZpU=bzx5;;?A2>2!aAW%J0ez4vVuca7OTB0)|m1T#sUi;|lt zEhvScKf!4B6r-2m&87jac?K>VHH-rD1tRKpe&qRNSLEmq z|5-0?&$JL&(AKI0!4;|T*&G!;KTD0cR~}riMO*5)CyE3T;`N1coDd#+k~Ir;O{n}| zSruG|@Nkms(FUUh+IJ(jh$BRl+^HCfn(kF8{Ou!_>O}VE2Zm6L>qf~$L-k;_OoD!0 zY_h;PEiS;>2_j9EG8EQ6QGZpzlR-as2SiRhqQ0xCV zOab{d%9wZcU^Y~RYTjv~@4ia?Y(_3@=n0xq+`QZsTs$K|!( z)PtA$4LT0nU$!d>gGa^?MkE(Z3gDpr8eMH@p}e}ezc?n}IYAcWn<1*WBQTUPtPJlA zu`71FaO#nt|0+#F(Fz%=Q6Kp&h)OGU+(lSaZT6z$T8#3CJ}cUIx@y6e*v=%6BEVizSz>$e*X@GW=@YLTKNAhxrVY} zW95#ju1Sa~@B!Kp$t69F&aQCUPir)pz&q8mO9*k- zSDEYaMW(fiUk;SmQ=5lY1*bc`0$50OW>^HkJ@RnTiiva_@8qHhjc zku928wDy}rS#N-B_@pb?jhrmD0oU4c0YYBrSU0+zJx$4>QreMMm30~J{EyDTd{Wb( z-SEO=fT{-VlCjD-1VUU)?VLsBbPPwkZwO>4$oUg#(x(or{q||pJI?(rg3KpHMC1d`r~rwKhi>xl^CJO&fkdTUtwOru$DW= zuY)uK4YnVk8i$m!3!zr%e9{f|Ign+o;-{D{n2q@a;LX|Y1tz*COC_3`5eFhQm_cxb ztF=$?gLPK2A5>iV7shK9F-us4Q1LfQb>^`034OX=l!7@HQ7n8bD#1&bkFNgMyMJyL z5gc%GmB1OZu|#Ek_nohA|ApbFcff@tL{QXjXLz(z z6ub^bqAPa-EHYKrMF(mXE2;jE)_2fx8`keV0}^eL|F9Q@YiYILW%CSY6GI10Oitx_ z5&0uNYq7t@>9AqceK@OmExnhgJVNMI<^Af#HPE^SLqMd zcIHM++3w45ABy?DQS7B74KH-^2q~3RFk)x))fo_f1F--)#E0e?{`vh)xVl=~=UUB#JOnF{#yoa|%nY4K@*lYI^$$E` zhlW=DfUuz_z>=jC`r?|8jIkY>FZJrEO_h3EqE&0EQ3*!mw5;+U=$VxvPc=JKIRm*T zGgO$JDWxV;!1)}~hkHJMw8%`yP|Q-RHaW^~t#Is90WJI$uH$W7czu6I7FEDyMd1eP zEXWT`_DDY3o{vYfIUfVge6%D6cVKM*B(Cqi7ah`$RBB4U)rQm)=MZz403r_e8c|av zK3>dOw$}u}qH>-c4`jAzP51)NpnVRAg=SPs5Hx5ab)b^u!E+`AOLY})0757x@&`zq z5vV<{DtLYAeG*f85h|r2E-prQW5d{9*RL*kVRSbQ2pj>?teu(~y_ag4tx)G6Lyv&< z>O7`Fc7;ovSzbhSYjF!x03eo4x$X_pVxC)QFX?KJMTCfc0Ks>@f(1j<;;Pz?lt(+V z|1Y51`o0`*tL zZ{%>NvU^Biznw3?!Iz}(tUvN4xFp7~z+<10Wfkh3`xAm6}GFtOcr=Ndxq|@W10Tl55HqhYO*E21x zLTX7j)mm31utv0NuI3Ycsx2={xsvmqc0_(Q)W;*$&_E4szs_|J@l3sk6G$o_61@f5n46u>D3K^9i2b%xlRW49#h+W)TqO1?;W+u9_*V0i=Z_ z)g2+lRvj!Zz)r3IGOn%2&37cSfk+a**pYC#S1(2)t1cniFN?v}+yP%LCu7AH%JbCscvv=QiVDP%JyGQBk*Sx%Y0fe%Y09R)BwK@S3 zNOoNo_A)EKkmzMgZVosHD{Q8?la$?{#|qT{I$25#6Rei%c=^pQ5m!j-I}r0w-X+Bz z2zp+ouGj{AeBmi1l={?Is#PB(rp%v(AK8Ozmdqjt-F=pjD|vs>fQG=P$LT<)VD3GX z$V00B7kk_KOpklMQn;V#-1ilOp+7HZ#mc9UE2h{DqLrOns_ZMWs%1nPcAzT8PBl0i z2m9fP{rzEDkXeY~Dl+c9a^42UW)C>pxWcyq+zH!=h3nnqXrrBb^M;UxX!|xvpVCn8 z$Vo(8O!NzS8#(pp@K^V49F9MM3g1V6a^`T{yG!RKzk~nv>ey%`ygmf}*Rh|4uYvIx z<;t-QdwND(50$70{Cv#&;^FuQC>nG0suTbBs}BF{@cAF6!|@m}*~3r$W z{5AN0Uw-)f82o5FeAVFs(T>Iq$SWP=paAk->J{TA_bX1P4!=t|r03Y1E^x>k=KZ@5 z^6I}WgR8u2e^=dNa_RQnhRoa=Sza*wnO<2>WYXRclIbGYl269FP1K?`5q`hXhgPkMlF@O|IGWn=!|`M)oOXR$-0^;? z_}C@*T+xfm)2$Js3!5TmAJZwW=ZdoQ1~y!8%RkYoTt+4VZ=Rv4spH(tDJ#f&n|PE_ zy#IIW{wQFJ6dkM{MM7W)(;+9|D!b8db3$vfX;r| zecNpzbaHj=D^P@gZ$g#soxD)=A?1NPe^y(Do=otdU#7Y^ZDD^r7eDg5Pf4|h#=Ne$ z2@N{EqLhiJxy@dpn@(eMZeT6?cdj`F`^(g(>~Y>9dgVNDHL0A~@*art<+REx{cUj& zl;$!pvUc)cD_jQ@P8NIrZpy!j7sf$j^QJ6zt7BK9oZU)p(e`ChQKCbI{r87GNalek z-`UoP6y1h*6p2>e%AGTiI^7}9cv?>I8SdLu;+(1}m7G2^ZC2#dmb&krZ#bpE;=b+g zNzAbE>Xw#I_9JhnHu-Eh=cb2`i@1@d~T4HTNR}*7M`KKMXiN}4b%>;&X?2mr{b9cTR&UKpHFMmfVV~`{TI6l-lz_)mMPw|lFIR3Ndk~UdW52AR~-cbn?Hj#ZZ~DD{#^?0E zv_db~hK>rl2Z&BOlcYFn9NN@!CXPeNi7L$G-6vERJ&r)O-S14PwOJmh zU0N+0p;eQaMCDH$YOLTRjrD68spnK*Z#H+`qOH+Q)#0{P=3cl%?|0buhHV`9vN%1i z&u#AM?}XVN)z(RI@a`EOANS@1T?l=W!WsB63C^5uJRR~L&cQ-Ya+iJfVYQtI%_Vk8 zXesN#M42&>Rl=0w%Vw^QBvC3@5;mCKklvPxvq_D4U;0 zXq~PnHJ#_1`16pAZ;cp!W9qbKj9>U6qmpYooUo{Yeww82DowY4&7G-XKWt>NKeLzm zV`Jb{<8On~t-GSewjm5_$?}vRN!%qF$S)5(E1pua{wSOf)-uut_pBf+id{#yn_=M} z;5^8N0Fa-5-L$ro=wx(5U8YG`o#{SapojTLMP4{ky_Imi*P!bGJ+hYBK{bm#V z_$QPFZb+CWDZbH+LiBX^*d~{5odZvXuX&p1zws$)e-UudeVhonZ(q;>{*+lUc+eUX ztK5TZW zEa?{t|NB{ZP`9|QA1&Kdn&&KVW^iI%F1}-1?2)hh;qLup`o~79J&S^0WICr9ycbA& ze)9tLB(mEH2L+vekkwPI5HWqWNh}Cz(FuH}3V07%pc! zpI38UNRHSszHCDJ!g;!B^s}?Q7D(zrB+HEi`z7|F!QE?yCFko4*0Rn^dof=8k~A{B zU?ObEsE<2EZi5{e@*^VuFl<5e;+q$4dYAfe02ev%%M%~uyjt7_C~ur&AH)4t=32{1 zyBW?Y)HyyWb7iPGk4o`L+j}p}O_sTm2M2fKhe<3W+t;8z4CF51^|rpUIzi`dp<&x= zQYcnwT~5`vKivMr6(iGZCD-4u{`b*Cvr!s?6qA^a%HiZ zei^>^vTT%2K~9#-+IGHFN&+>Yoqtu__BkaDxZ~88EfuWyyhOqG`+N(B!pPBbYUQWUFHwI5XU4VQ5|| zV>CR)0`=0#91l>n$cSmL`}@~QW2oD>1Hy7mLeoB=rNRo~z@K&ZoUD`a z`vafW`OmR~{-~{lZ~6yvwfvyGno_uCy>9Q;FB*RGFY|?VTu3-saSg=a@5EhpIy+e%k@QR(!a;tnrw*)JDx}oPgCT1msiJfIvmj`S$;(q}sY4|$K zsb(f&sC?J_M07=_SGAAP-J(Lgec6d7{?5k!rmDyN=lpIS8@)pQtR@VPOl!aE5J(3- zWGNfDhfPO1ta0UKbVx7yY6WB`lF{K~eEDxExO_a+isaueOuCyhZ~qu5S^8d!^AOuU zID5#qe_kKpW5$G5_+ndkd6A!79cn%2X73Ey_>r)K`6NF*!FGY>{Y~T8t82R)pJ&e< zoLcHYI}ce`K&6(AhRv8iusY@Ov{d^ocbplTSNdytHrLHR*mn|Lvah{1OCw9BR{co( z!qu7?ucdAJn-&CfZ*jPuRGw?QY;NKwBU`64AbxYc)KGpDY)z2S+*uL`AhocsK2&*; zZbS}5nC;&!=0%k$*XzF4od)TpbEat+Pd#{;Wv(}HP?4K-L%uRU<)mrGdlatJQpHT% zHCiK`Ih4D#A?UhM?grHN-jOc$nCcXu^)sv)(mPCl##-%S!IkQx8r2CdC@s8 z>s~!&lHxD;Vc-3mGwkOJf7-hFVFwCNS&uXir69J{!nNXEr{xRl^d{sCuxUkh>~|e| zV+VIwprt(!+$f=I0_|TTYlCxU??h*+EBbZIf!AAcG8GrwcDLA$ypR(|JJm)r9?Bqo z#Sn}VpjT%(TC(DerWfKXarV!~R|iHkLEQC1D~l7JZ_L2ytDNhLGD04Vx-pg}BaX@5 zJ+~x5_I-n-kFD0-E##i;sQ>*#ue%=r>)G~NGbE&f%LxpJ95b_TG^8cXdBt> zjuk3cMf?dBcS&?y=^c*-yY_tR5aGOe?jdD4Clm95gT5w+y8AC@nW2OTe-CC z_7~B*?>$UGb`vm%VZ**`eaHje8t?WzN0ZZ%UW(kHd%s)=_k6V<#F*$nw%VtDqyO+D z;lJmn!g`Fi!+tn(1GC8OK@YWcnKCHg~!A92SS zY80%jT9~C+`$Sv*H@|gHPWpMAy-6pbHsFkaLcD#D=~&ik<38X`zq)kfNgm&ZxJ%qZ zzGvYSc3i*aB+QHCq*}e~f|+7AN;9Ie-^~gXg~hBrO8d2|k6wwv751G<+Q!U$8q4ar zwfU@fSl+~BLWB#`HP(NgJ=^NB0m!N#$#_%OMrZ}j={@f6OgN_jWQp40WP5PHKB6oE>XHDzb>PqHcNS= zUusg`E;$(?zq#i0sClr&h%Gj~ zWy}S89cjGntW_$J?`k)s`&>lkueZ3K7u3bilQ*3m*|J@RNo@Q9r04}wUD_Lir$3hL z0@lwC71ldHoKQ5#TZPB!-d9))TrJ4HOSWsc73m#~32g};r~jg%OhC~d%l+p$vc0e9 zUxSbhFy0e`pzJtI5<~(Hk9vV%xH`sPrf7AWSW#p19oC!8k(ekRjdPZRFk?e_u1N4n zaYoFZUu?wsM(GYr3P+HSkm}x1sNlv8x|#X(;s8Y2hq3s$muz{<5;?B$R(ar7*+kU0 z!IFhoul~{yw^O>Gl&!^9>zvB0{enh@6?JK2B6#$}dXeGJ$h5{k7(Li07D~uQ2-fR2n zuL=U8V3rmepf1rESy_gRrroKl9>6o$uDxkq@ak;b`qutf#-SkYqK8(u>zzX20#F}` zAmD$RUx?iff_+={rtO%;pp4U+N=gAxz=#w9dmM4)kn&pk`{L&f&U_X@uf zyw;UPv2m4YC5w&b0pARV=81wIkK$5i4#!KAwCXDKaBr6D61#Nw-3#HG3vm_FWu?iQ zfAiQ!cM2G>7Jr9(gam2>GWE8KvgI#5q;>4^mh8`i({*}NKlgtFfNG$0cz1p5jj(ym zeYduYC1*>-0pY1?hZz4b(z8ItfUtfCp%0OypwI`5eW&YxpRU?Fe-RMoQ_p_e(}KICi!Z0j>Xa< zM}hqkH!_)rzQT1KuHT=J&~Cq2A`Xa$TQsIC&GvqL5h}1H%SdNv@zPki5gE;zqCcIR zF2K8Bkh4J4vvzk%{6H=K`8v1j8pQyIW?=}n9r-xF@ee*#Ugc_Gc~b9bJ4K^Cpc38= zc1E_xUUW|rocV|ae>%Fl=+~G!+&zk9o!;M2dIhZYuLkIe{GHHiew1Rx+ckw9~O9UjpEsk4gw50 z{Z%(QlbyO7kr8?t>C@Nre;lxzAE~A3uA2GGg1z1scRBbMKD=ERB5my>_PW&d;=3v@ zQctHV{CNm|*>NX3n&bEfm$rFh9;vrH`hM)r+V&bRlsSz5o?QL{L|=8&ja^oRUA7Vo zd!Lqnr$V);4u^Oai74-1(D2t+QuR`bMr`@X3u$Pw0f>WjjsK*9wiHyh_TA8k1aaqm z8(Qm9LZ#DqYHgovWqOILLVJd~x!+fHseP*M_;&t5+V=p)|G*6(EPCbx>bFUxh|!ffmhaOL=?i7c`xf$QcSBEM&p?^&Rp}i9 z*2A$<&Bn^-{W{)fOwfaPtvx@d`AYZit$sdeengrG9 zw!tje4g^!t^{SuAnmsmxRT+w6Q5sjtfs`7ZZ4>avZv9StwdrQizS}tWgC9qbaux9T z;_X?)^g0l-S)BftOuv3JhZ+n`jVsPqpLMRQu+(1`w;N;quQiTd;gf23)COw=ZiNj0 zZL)fdTivJ_oi}g#a?p-3d&%Ks#@M_Fa+)l-D5E(U$b3oTN8sKDDk-o91{GKs44quc z&6>iuXTELX_rH;%m;0G4scmW(@xsZZ4ZjW%Z_z3(L)GN80ucf)kWqQcY}X-XL>lw8 zEK8SNw5tu#lpww&vq7HVVVdggV;pXoQXtEotN#gxJi;NZlh|C7RQS7WJ79^>owbnNQ`=JjQF z%-|>J)PK=^ zUc#dS@Iq$YOxK@6t%`in^0Xj{o9_BpJG&8|r5*m*ZR1%}=lDl1D>48x$dIqvSCVbU zcPACj4RoO=oGJ^jYsiM2pzkHAwP~q&sZcyp&41^7ZdN}A!f`1 zIi#^C^?^MTVY|$9j{_-e91I>oC7E0}6m7=Shk*R7A$>(gGmAy~V=LLF;4RNxE02+r zPhE03c#$uk&*QJK0he0>U90_wf)9FjECFHH!!O>=%z@6v{X@r z#RT|8;+2E9j8QVBHhl`Ptnoy=k+yPh>OtFtcvI|RS>kf_6w7FO&=j^s)u%YBC4}YbGSJ+@>7B! zRMhd$Pq~0o2yM3>zk{1`q_wF9kEto&D7RHz_N2C5ra0{`aaY%pt_jPc`aS%@ zVw(ED?Bj1*&cmsauK17J=hZp|;&%i0Yo6QP{X>aX8&6_aF7?q`|Feh1C%E%GfA*um zHx|OTx})rFuM0H|$}7~KD9TyZ>?+(g!$*5DPkoj@2v|v27F$<_or$p$MjMLl<#hRR z7+qp(x<)~F11m)vP4Lqo>502SEI)y~mc}MR%?m}!g8qdzwrTdoqF_IBUKxY0o;EB} zlfX2ny8GoJ_C{P83Xr=F4&2`%qR7QC&-Bm%q+~xb zr+Z$%t_QzPx$Po?9O2Fq9gSN!IDLK7c&L~y_I?iF0^OM+1K3BW9bLzg*@33=EWME< z?hwNC;}J;oby7u|a((>2Ao#=H1C+h(-)Lo*SGIUo{Vj(m_uQH@Einkl{?D3QbDe|z zj!gRd7e!T6S;+VWygSd&XBOs=j+|SqaTD^Y6FCjUyMN@sET==XkYdQ=6GXvRwp0AE z3Q*XTN@v%^a>VF5Pdx2u{VOAF`R$@ z=c-Z^E!8;T6RE!9wgE?kaIS6qr#<-1C|oTBBgvQWuU+|7An z>)AtQBvkDUb`UfQyVqfE`j};K&~uwHyiU;NslWcM-P89nB%xY$^062OAIn|FweEdM zP%~g6Svt|wCMjZ^P@A~xI>54v8EFby(R5hToBxw(`3b=5%!TqY%D7Pi%ZEO}YDbPT zPexF9XTbF&)3H$zpHo5@W{nR5&(4Uwr#UM&6=0RF=zF*Xq0?0)Vu6%!pcY`Keo0C| z7>Ph9(fjgeDf$mbitC|1belDS1!Bvbq;uupYY)jCKXLyLU=c{ky$LE!tI91%_wkLf zoTVP+s{cuBocRT2QUJW_b7Rn5i+P2QonrZRB6HEd>U(lOV(vz$`yOn2%>dlOD#+KT zrkpq)-k-QLI7txLBuC6{O&Quz?|Ht$u*q}}N$%G52*DB0GTQKSM&xs2EMDXF7&FIK zx&lO0ODr3%KMA1b@lnv|u!K``qJ*i_)~n}7so^6QIm|f!8K9}XKM*JnJ{0v8=EE^C z4z73aJpJUKV?TK4*5`qrj=fGfamZMQPY-qaKMCdfElB9g8RW5(3_<>fPyR`R@BIW9 z02=nqg>rb0Y5cW!aM8m^{ByCR3>btm&`2FnI72^q^MMW}ntffA8XaVOXn>y!9}4#m zAY)u|8hHA2EC()5-kwD=l6jA${wNq9xQvuLLAmn!=EFS!Dbu5GG9HdAE#T<}`j7W; z6X(vuZ!;V{I&vbN7LZppU2w>&uXCxx>u@y`Hz4OVce}x=19UEb(S3$U zvxCPFm#$52I88`W0Z143Mh>(VX2nOiwxu8c7?dhYTH@#SRoF*ud|f6{His9vIT@I^ z=#$q)KFQLWJ}KpQT!xcp##fo=){1n7-d=)Zr;eyQis6k`z{i1P_|&}3W&wL|9j;(m`F`r)Z#=u6S9Ln4s-UNQ-MtI$Fs75Yi4M|2}?zvy=lI=m5m*$ z#J77k7K&HBcl2DQNAE)YO422%liH3EtL-g_kTwpGW@XBTP>&e@0zFdTST~=_mNP zD>)IB>GJVU-%U{jD80>FEaa{+peuj zkDHVlwQtB?(J!;C-(O-{As|hI+;_SfT8Y{N5!_NE*pnFQVrmlUZ9*jzcO0bDG?5#z zIl*TuW7-B0e4CU^`m)&}3`XL(aeFhwrEa~RRS)N-hL17kxd-HJX^v^Fsy#doGQsc- z-Xl&=t`v<5G+~XGAwdeiAMVuXsl#zE2EN7j%zG6{4JKg{_JCW!P$pBuRgSRei@L0g z@3HNc9ZUh3+(VI=U(9JjS;Q@icp8Jp2^elguiN!OQCt%v7x*F~-lcq6*-VX| z2q_7Ea3grJjckd)8+t;Dvgw0%!@DmotGZnC(cBoEoNNWtQq56Rec6U&t-B+pMk^c@ zpLW`=T<$??45Hk^P^+haZ8U5KJ2TSFj6J#=ppgy3+_8u(vORxMMA5F!o0o#p3>(F=ku=)C9-1$ezHCvBz4L23@n!P) zg;u1M`Fr%!gO{k;c`1^lqPO{c@kSAk{CpO8ED|0(8@=8OhJtVZDBb4%qTauv93KRK zEd6<5Gu$|y5m^hI#1OVEstxEr_<|3uyDL85MpP*-25Oi1ja&TL#+)jmRTu7Hc1wsv zh&$v^7dUYrj)8@6Jp&<1^sK?mkvMg2+l%7ri`V(32BJ z5uMfC6bh&!6HhQQF%=h?bUS@WDm(zot%ND64t00F0D0fm=tuy+;Ko&E->P1?82i6; zH?~W28VwtpS*&SD+Zv<%7lFjHXG1Z@PtyAdmtK?YxqA4DysXAOvG8g3!I7ZD^_FYO z9=lKPeKRx!9-}DDBiEua%9=>HlDI_e*dh6O)9$!Gp zv(w4OG+>r41L;l!ne+kr=O@(b!Hc#7*JwFGzC!bhDVo$M^u@8Ujaj6rqO+LJ0cxmX z1&8EC0*dz#X1rcKvLr~d0H%R+!;Mx@NBEW6%TOE`#1Q91hFeYS1)uiNZWib+qO;MQ z%L>=l+KbjJLZ4tnklc0~OV$yf-YO=XK{cB`sBZ}O8de;d5Jw5$Jr}SVm#BfVVo$i7 zOCerCPBwwz-AERWlMN0@WRxH&N{-Wq`^WASRaD`wx@yET+A3s;D{SG%_{zLq0=Y0W=1?A$bBzS$mF5&<$ zr<^THTe?nP;-E_kSkick1Kjg#_xhPGhXi-CS`qdXlwgHMkRqpi%p@(W~xa5tF*c&8ukBwJzaY|(`_3^7MXI|Ceew?=9qaZIn8N=m>nV^@sJ)u zImCJ}t#qKMoQh^Fhmlj0Lr4)a#Dh_hu*kU>ixu1Z+n)D*|GECWKfmvFUH5hTetviM zy5!M}=idukZ)FO06@JWoWq>=9)NA9-Mh~wNTuDCj_e>S`!*t4Ka{j=qLfgksSB=;e z$L7lxDmziAWv16gs`rthpkQ}Tw%g+BF}tJO-V|-8OkmF+e)N@3OQ6S#EN;4+de7&O zOsTb;$i*M1CuaP^ZlzJiLtfmOh2r~_;O8__PA_WpL)Xg<&i2fAW4|Yy2Y$U9+(=T` z|1KvTQx;r$Ch}m)EQGiM*rP^y=4Ly+8CNxxRB>3~>3Q~`AiuDTg9%*Q+hI=OGbPhv z@zQI40>lYHgeBhqh;%qnHXPzJfBj*)nM%U|vAorEmZ}{DsnWua_q-q3dMkhD0>UwP z`B+E8M|D_$;@p$CYQox5V_?C(a{As=<}Yz^H+SrITu2>h&FGc0_$Y1huJtHkhd}M; z%I3_R!Qg>sj={xiDTrr}jNH~gYI>RIneg6RWJ9N=mbR&WO_%HSPSZ$~6U3~ZJlR~gA{QbHq5OVK-OiQJ zsu>y)xRjOjXN0kmNFlrzuPg#~8k%f|-vJWgD#qa5$LZfi8;$@65F{*q;un8unvL_B zZ0AIC#MXin5u20~&DbAfZQIf)z`t78O!x0?LlNHwbXCwdQe)AT zq2P3ql{r92P!;8glL9|%@ywpf>qS>(JV)XyruRxn0sKXjJpZrdCmTZ}Z0gyK)NOEK zyJ{{fe2#K4WYrnLS2I77&()@>$ILfNo_X_BNTk&KJ>;cmvCfx)_;UaOyLl_A{?J&7=3W|mj@n{2 zn=LMcG9nr=$g1o|MzdzvR2|0T@U&9HPgCP?{#OhrmY> z-w1Nz1@{RzijW{TS@EeV`3IzAm7l9%v3g#)b`*=e!=0wus5! z@AgnG>V|#d6=xA|%LpQwkyB9MV(UxkpH7%P9mN3f}vl6GyHy4oFta2N{X^}ZDd8acVX}Xg2l}5+SO#bjyQ`V=kvRqkN?wsuC<}W?1*y~=K*D0~TdcHI#=Uhwv()=?=+_j$QBNq`;PzDA~b!mk- zS-|>EM*p36(>h_7f_7}FJN7rNe;_osX6UIZ?TTH2Hwt-S=aIWRod&`)K-u@0Mcs{4 zX4HjS2YyhfEvTr6F^(OfDnNu~iy9`I_B+ls56I8HOK=}ayOo3HT>b&g_kV7T?D0L) ztNSQmIso_;*?ZWpsK9pQ5ktEK_PHm9+K;wZp=SS=#nB2({&gVxd&(& z32iTls?fyv_n%J$oL4R^NbAApc6Z)QV4rtCf5K^Zf>mIOIxQHIcKyufkm!KRFTjBs zwC9yK4c~gmD>;{Eg@akGr#-$3&cH6R#OzI`+XAUcrNIwl>ixgqlz#T}n51Z2R9vDI zCy1P@|F4}zqx%C$LPT?Mu1@>p^Ft{|Yv&|R1x%Dc(>$GJ$o8cj~wLzC_q6XG{7P z%Rw23X1#gv)b2c2IdG&Bwhf)Go=-qHbl)R$5+JpQ_9a%`Te@le-Y!rx)XB=EfCwm4 zdo%}_gM-U2@d*B3IJRXGamJIWvC2z7#Q9|+@=~ykMG)!iwB5w)^$MGVB%6{E5t&Ym@ zHi|k2!e=&Ej6&1+r!?6Pps5Gt1ea6Z^p1{#^+yeGeJy1udbdYa%Xy3s`cn!yY&6n3oNUb~Sn>{UmB#$+O1|LAYWmn~R{rg!1~1~rhM%|C9t!n70Bjv1gm=l#Hd%3x zOT9K-4dk#uuteL@D_sz@7#sS+jw$t$I`{{yf~~#>(Fa?t=+gi@$hWmTey(lNH44_J zR?4`A*L^~;!H4xZhkipKCyR+VlgMOV8i%P`{Vayz+N;`R5vTu;n~1+&Bg*iN`>xyF zNg^q#FZdb2!Pf3J4$l!Q7;||R-g37go3R5HU`NkR&{Eg3z15lPK1YW;oLj7}Yn=jg zNv|87%R!Hxw7IDpWN!M}qR&}*WwHnH0w3{rA{%Y~7|7ZXzP-_;5=A&+Q5B6-Kq@GQ z=+ni+OtQzqpw*)m#NJY}w+S=ue$g}Kjk_FYlHey1fSGia;HA-Huztjmszmm4O` zk}9397DAlerXjhR+ppI^Y;pgP>=KfPlz_b?m0Gv=X>`*3>{=ICSZvyxt1Gk}pRg|ES9PObvSFtTu~~A^ zp{$PM#4g2QdtK+?oJOPYkhY7pVcpZyOwIkTod7?ii(-+o-^Pr@TJNG3eZe%(VyH}m z5S-^};~zyojKkhY!2P3BA7q2I8-&B*A#I;9_cl5VH4HU$gCim(!bqnuAky7kN_R>lL#Ie7AxKL%NDrxmlnBy|(vp(j zgYSEO=exe^T<83C_ycC1{XBd2UVHC*-D|CTh*DE|P6(xif=fkTg_YMoP;EW2Y+wxCRQ&xh|n90pGp+|L@1_bdRnn&an;ie7~hjxKmim zC(b?i0(oh{Y13DLIZd^uT;J24<75h>J!@|&I9h0jt!2h-W)5#={@`}#BI#n0g7Ibl zy&dLZ2xL0liB7t4_j&2vk(?Ft;k>#RLdG}3NkCleR-gOv^XE!};t;A&+b4vrLtw?q zPw&lqPpY9>yB0T?M+++#KU{VtSJzJpjMOr|RZkH)3HE>bdH$YQHE-#{y)-vz+h~<` zi%DeaJAZxGU*gF!nonF85u4S27vKD>=xDg6Dc!!kp80aqF9t`}gk)9Q=5CJ6rm#L%a_orz@)InxYIWhSL~DhDLl(bNYii+>3T zRS-DqFy~wfSJi;|vw(gAW-)hn<`u%~^6J5?We}M^PvYsfjAa7nW%$d}i3kzZlVlvt z&Px%lQFZLMq7dDV%*E?|?e;&S?SZkHd?R_cG&P-udd;Tym+hi8+jfyUtq&W%H_cU# z%)EE0@9FoDxGi+q5sM#P;&OfK;`zuTph={Q=_AI_VfBq8M*1l~>#2r}6*lL_R|3n; zLuyX(tfH^de7-_E+Z*ZEOiyJuV9b}rk5Q!wmh2X7%#tydb-p4ADLAa@OAzN~*84ZV z8gJYV|7w?E#vTl1D|ALvTKm+!^k4tDX>-hj?T>mFv(QiKk)`N~sig2hLC!1ib ze++s5Cz^w5^5Xq+?q{c4QsU$LJY(I{*+laEqsfJbF zrKaHV$P=*vxe$HCc6Tf$34WoKC2`!>W=1B}}@MWV$&Dky61kMN+m zOYK~PDcHy|b1*WaE?NAl`g}r27%kzXRi~4=BbMtl@h;(%Ou65?`wt<65A~L5Xk&2& z-}Qe^Jkd;VVOzn-HVelIiWD|0j1XQRb?s2%0V`F(@bvubJ}Dhinpikxsl=qlf2w9w z*{zgbZ+%|rUx@)F+UKzn?;ocnxxGodZ9;c#GQB;bR~-fVpma88U%9cZ?u6jK39jE% zsYcIvddw?)hjheNU-P5i1{fG`OY7L{p@J@Jzt!73z0KKVR{`PL^j@c2>stF{itCv^ z#^AiDS_9$hme8(ZD(x7^yq*H%ci+E{!HHq78h6n3v)}zV8NolhQ_V+0Lh>esci5Bi9Ka(tm#sFqYYrlf^kE)Aae07rQl&m+mq$ zdwA~pu8Z;OiB9^w3Sg(2+;A^D2{jz9{v^=8(LKS|bTemHye9Ia3Fjgr!Bbn=(dEY8 z4kz5MUts+-70TqDjFN{XUtRCQU~2!zH(Mo!~$ZS2W`b?8^<4u#bo>*^8}Ke5pz_FD+VmaCLJ zj7y&x(U6hZi760G4yItHkDC4QYVZ|+p|h0}jz1_!NET1u?UT){G5*I8|Hp3tiGVBr z^V{`un8mxH_^Kme$6Gn~6|3>bvZRK{2Q9mQatBiDsJbmkkq)+1%!{yPeI7v0D zK$o2MIMMz3XyHWW9;B-XTFJA^?6o>3OCpB~e!V;*qwYF~J`cn}HOtF8$Wo{4Agme` z_{MHXK>*k9;=!2Sp1BcwVVuQh$zXQPp|CDw0Q+Hj0X5kY@e)JT9|0zJY4?7Q$%IDy z2{DAp>x*V_#4vvmoj^~vxG^=l*l@M3lVI#z?{dHD-8DvQ3WGCdUJDmKpP5+of~)hm*Ex(4xe=)mf(ic@$H7;A=;cRn?=P3&@wr*@HZG~lCNRzOOh>yo9brs zqPPZg_UjQMA02~@R!#5A^2_lQC>OJGG z$Y%OwUWImm@HzC&_1aZXtB5+hTM?L~P6)=Iq2L|Yi6wgRjb|hJ)vkXUM^XD6Nr$B% z6RDZ%t3rWnOuU-$sGH^u^Jv$6dp6^1qkvL_UFO3`o*JAe4XTpyZkRAGL+|gxNSJgQ zRv4vavVHDe!JukMhV}2a5-lsPYR#-ingXmC3cc>2MQ z?mZN#VJf~>^1QGKexs2gJ+q#`i?{2TGg<#PqHkEOjC@c%P5IRV?J6lX3f5=m7YU<4 z<@y!BuVo}#$3z#Ma(ZOFSN%;4>V~2Fd-^A30}PPV($t^=348aiRLrE_Rrd)Gq9b06 zoYoc<{S1h+4TE8TZnbQ^i0GS(HeNejTz95i#m*gCRJ58Y`utfvA{XkNGH6=Bh#|y2 zVt2_y`1fAK*6}cIFP5g-*w^`~v!AGA#9cgj7D+Hu?-wxQ-8b7+3W`!|5za#4l&J;%F#pj@g-jpoi#0@O2sXlW8Nj8ZCy&nW%Y5vN z=Ii9ZqIF`%+KU#imoYtFdlOlvgfA5elU`4u`v$EwSmg!xc}(m-zpoHDg7G(B=O-oU zJyXBKpTP$mK_ffA-XdLvC&85r(TuTpiPZUf)IQ%o;{??uW5_<$T%r|{^*9$*Gu7-o zcT)S{%xdZWgY$%C*l@8%+FNS zLwJcedQRs_m-QC4i5>W(6`D^kAIpXX4kTivjMGb3zq!{DCmD*+W)iFP9By9dx?(iN zq&|)fS)6}gBg~ugz+<6hB;|42fO=ptQ{2{h0`1TAo~LT~nEKGHg?3@%t)GmS9MH%^fBqdA=(CJ%e+;c~)ZUXpag|0}HhNk2_8M1A1t zic&i_!uZm=@Al?O6*JkGyScIFI}NewFVqN8u%GJQXZ{W`VV6*>SW*l2Tj;mN)xQ%c)xCi*WuZnGgzuiYM>%*hiO1gJY`T`0e{=LrSXzC~Uo` zuLjf#GW`hiIDJD{&Y!9xrP5*O=;F!!)v<%0yGGiPgb5HukI5hFweGQ5TNIY4^xv21 z#g0>CtGqeEUWO#cuUp<=3I)wdmK;aJpaRdUe>d93)@CCflOPwJhu=tMq@Y}XzOrJX zwy<)N;4?l8Y4?jK(-N)N|5-v7UTHeG>36!<(h_GsPj*}j|0z*z-2QhVyWZ&i^i07Q z{oXJ7qic^2$PzOT1P4?>zsX>~GqIIN9x3mXxoz%q6OGBsrsv#y=Uu9Z zVh>pZ+b;VV+8K%XDTO*7X^2S0Ir1SP@Um8>o1(zpsQf-S(Z|;m3*n@!>E=wL#Sd7E z!(c!=Sf{B5ZpTOcnFNl4AtPn;ay!)^z{~q)|C&({JzWyuHWUnl6KIFP1)3v>cw^Nd zf{zI`Lhuyu?ip8xJ^TDlfX4Qh{lto&vSdaASHqe^6+D%=`4M_I z3**ny9v#sX;rE$d8N^h`Z{)9UxE@w{v>mc{jek%E8|)ZP-P@J_MUvlJ>6)@wU9kC3 zzVZA5^viD5`S7~PV~?M~3mA|62JHEkYb2g5TDg>mRAELEcH$%eFirnRsJtttv);GAb8DMZI`G`)AM+0S>cTvL^99z_L zpJ-XVAWVKQd2SwxDIMB;+LorVW&&UxY!2^P$8a@meHt_iE$?zCaD1Q4p`?Zxo^HX^ zRu!0pe9{Hs=^^_fVPMakpO2OqsZTbGG~UT0L1LA;C{w6t)aWUIbRC|#RD69XU(!kK z2eMH&N5M}K^%BUM2t;(VaQUI#-miHI3Jnbxkq4nP;l(bm-&rwb-7U4=M?(zu6d|cs zBX6_Fl7;%1#TqVUK{v4}?vh2e-E1XMCKK)6wZ1JR}Sqz9IOAOoh} zaU|j~GL_>#i;N-__p0Kue__Qd)=6S!V~nD8Ve`9}@nxVnIu`kCO@$Skg@OBhUNg|=q$;WD+rl^f z6E*D0QdOp!Kc!DREI0;*eIIX%J^-bBANREf%&oS{%U4_;muR}#*Ie`Bh4+uP%GO3Z zc&VpByTbmN%YNy8IojydMzVb__65e$!jAb^lAI-OMPX{gN}kd zh1wD;xCj{;Oo4_DG`}4Wh^@8`Z1%eOG9ql7_;A`Vw+JGC>bmxLkWucGC;QT^0>cF* zeZ293X#Fo#{27F>VIJ{L|D!lXzFlk5IDs@spLs?~P%w>OMQ4W{O-YQ>yH8-gx;{7f ziivm>Y}ZMC=2|Cfyo-<8ft(>QCxdZ_s}cg0H|o5eua^zZ5H*Z}!h?xsr&B$jsN5#} z{9S?qtl9Xfmv`qQ`9gc9p;+Qd)n?qAlbU{rF*8^s9d8Ll)_s6`I14yWKmw z%1#8*jICyErK>z5*BqpNU{2UNl>_h3tZ2?0UK6WDd01~g=^-^wU&bJ+iqI{7ap@B* z`(KbM*j++EGtFK@zp;E9v!sjoFIGK*XM99+P6|0j>K2dQ-3ok8RUP^-lpOtOTW~KM z*@!qJ|Cv4r%b1hall~j?BVl4Hr$NM5e_O;trO4KPG$*ze@?&Yh+&kbb)9!@IhY)db3}s{;eS^lnqq-aF^crLQaxAkba3m~~)Bg<=*t8nq#jcUe zN(eMLPgnNc!!p>MMhYQ#Cb?)5yH@o7T+$CCt1F&M|L+}I|DF3koCeGVsegd^i$fg! zAlQR9U|@XwM`7>T```x%ZsQxqiPuaf>x`NTPEsZp{~InJ8^l!p4=$e^4ldy4ui>oK zUD-c66HPVy+bloM)h;3V`RBQz|1CRL`%9C%ecM*`^&tg3K|ve6}) zKDPNL;Dk^{P1KYQprL=|rpeF3;*Pp+Co5qK&#*a+`n}2gig>;WIT87j1vtjfDN10(Ka74Gl+TPLD0WNiOoAV|R_-KuDW%KZc z4$h%R7c?a(8@|sXak6Bis}jC&6a}$fZqFvW{v(#)(ul}mjcFOg(}Jo`P%WEa7&>*9 zA_>ezJDD!{Eas~+ew+i{z|i2J)|r!zmv`IQ*blqRrgp49&zPJ{R*t?Qf&`bYnJ#=O zk&()K`h|?A7A=$HxWQWpQKDe_0FsXvLLoCsB3ltu7 zd6zDqmP{+%9Jj5i9Y;Zl=Ry6n6fpPuW{$0-tXt|3XHy02z8Z17P8dIt>w~fnR>YR% z!O+SF&s{gHA@EbPd4{lq(*nL8>uF3rpI9R7hdyBndc^W9ufp)49zL-+RT1BKJh}mc zfpsA4+CK4MamK-h7XXsObI?&$k5$w#h+LU?{|I=E=5@Mj>6qT#c)quPQ%5=V48sO! z0_k&$b_Pho%VNMTre61$nVC1)_wwRi5yE>I%lHrG7f)=XqO91;G8o%xt>%U22O^T@ zDYn-Z6un0AM}-Hs=jifpVuiU}TVH3*osB`4_Mwe6avOY!#-O_D9~*q_ z>X1#+_syO)(VEASj#@CWq6RVw0nE3pZ==ROby`S7jzfgW1z<)9(%0fm>Efxz^1G=0iVvY6La)(x)-0u|E$4Fo*2kV@lW0~$B!JQ? z)39-*hVe3qDm@38z%VoPDhd6Y9iSd#HjwS#T4Y}x#Uwe)8h_AMigya^Sw8$nO3;R< zB4;*_EECJ#Kn(ua4ckKC9C~-#@L%8mLCd>0sOeA&q|eKfA*1K%D`ez4{rGnihtE*} zfT^iuY)qeW)a6$yP{hF4f7Pol?EM}0>FIEi*5g?lUGTlE0A-AGYW`nWCavtATMkv_ zeAIXNhR!;IhGht%2Q27*+-E)gM>BJe_B^&Mqj>H{K(|iSeyK@3_rB`Heer^B@6)#+ zXWblR%mPKe6zScVV2UVEtjp_fF2U&fe?taNdngf0pAS-`XL9`?YnAD|*xKhboC~Ve zYKlOV^dS0@81Be03T6>?pdhskIdg>o)Q=26OkJQ)^{(i|@2g8kiebl*qoJwR7 zTPRNr1)^Z9>@|P(kh-h-sssN2LC|-s|3%Pc#?8h3ey6^!@w3#&pRL|~6EfzxS@~h$ zq5OoEOE4iOqM$V1^hV+y%OE}+oC+~u@}B;Cbr!JA{;(K<4CzOUup=l1hV=k^?=(~eHko<1*NZg<$iOT=F|YSK z95ocAr(p;2=;Hbu3rDZmUB9Igd_#wkK9KQsgC`WG&H?F z$3^wtv3qou0CKr7jKqs44ghgD%H>Q<@>d}W+*0fs%UBC6Gq6?+`(>CGeRS_%oNgbFD-Cg8B0*y+s<)e+0mCxzj0gyLZtLyjO+dRCj15g_bJYDk@ zO|CiyRv4Z8< zClm=G6G+Jj)D2WZe%c1XD(9yOTvGFV$Aab||U?p2&gTo}Z?*|z^bqXBP1 zxDtrrCqz$>%VS!Km#WN3G0HO5HCAN3+{M#J$xBu_VA~@rlMX7iT##HISZ6lBU-ugrmPh`ay?ko#7vz zZ4q6bI^Rn3D=1Ztk#)){f&VV7K$mq>Y^>8cIhJtM05X<3G=b`Z!bLv}R%fGE| zzBuVN;@ea)JG4q2FMxUtiFN5MzuA3qc}+CCRo(%mSb`B-#l`M`hFyL~n$(1vG(|(DOE+2K%aR}l6M}I2aPggw zJqRx#%Tb9dhGYiLv~JKz#|0U-Lfy#QRxWYIyq@ZlnuxSD%yDL|y=-XxclXGtg0O!s zOUl;sINjhGNsTZ4+~o%D^K>&5l$E^zh+~a+u*0dBX$;`tsrSC|w56lOo9v(Y7kC0= zaYTLA_k{m>z9~B!&vdoSYLUkn20!q4>8H!j~WhB}Z22MgIGvS}vg`}LyK zHcj?Y!Ma$VyVi7f_6ed_;$r=^Hf@qlb?$G>I`yv4;T^vgZ~e}0$186GxOt>lXjbuv z5YLu(g=9jaP6W`r^cEH)~guKF_PgcZf&E+#LWHUV`$xOlzEyE^3NwbGx>%AB8wCsm;Sj zl=0xmspC-7n`H!a(k64)oKFk80pz0lS|?&xP^z?#ntMK;#&_rEBk7%0?C{2`$rsxV zts~;6T=t1&AqNHt%zuWz*+O!q7__G$dNHqcLi_jw&b)(u({rnRtkH)OAi59BwbRp^ zYpi$yryN-e=_aTjK8A_YdOria%}yxCZ1}fdtaDI6xM&#xjzsYkOdOH#{jFl*<>KjtR;^-K# zin+{pvr@ZgXhz(^mMNP+3F6OTWdbGIH9C)p&lf68$$4)KHa%bcy;7V>yg-KLqRn+V zLi^K9pB!NdQ!>MdWF$d(Ho|JH`c!vavEqD z%>mr-sq*NIHaqd-7)NkOMo25cMGf5yICy$ScSX=}Uo8!hPFA+jWlg^6uH|w8o#8!9 zIXeP%d4uCM_QL$@=1)s;cyQE@j)Q0R6k&ZYZQ2hxgLY_4Gty|Gk9(e#gf2!&1issu-R%e6ulX|b-+cceoHU|bs$URV9d%Z?1cpHZP`I zJ8HA2o5HuWq#tg#)7%QSui;f04!a&A3kKdudUeKGBT* z6%{yqPCCnW@rQVJv1O$&G^UuO^-U` z!=E0o0(o4w_GC$e8w0&_S|E8!*7+x^SXD8tqrdJv;z5zo=Rps1fX%l5wGV3TIea!h zb$7$skG8jdVPLDvtw&WXE%qwTWfCVy*BUeaZRot_b=*9xI*WflhHhn0825M$@L2Z(4>tM zn^nD&q}Lh18BH(uZ?sko&{N)l*4sp{AnCc@XOk6`fZ#%~NQw*9xW?Jh%BE)QOFZz* zPlD9!i#=&4%UQ%D#?%Ulz%Q42fgdbBFPwY)3J83l7wDAa5mQN=SRru3QK=fC;LBIAxeLlzSXZOQ6)Bg~%{xxwyPP$hlq8xD=9_vR zGWA_x08lxQ*b! zn|AHfw4ezlHkVj9sL%(VfiZ(*Cp@H28Kl9a-SH9hazzD*oq3)3D807aF6eF7CgD(O z6;}maZp|CR0nZO+rf=4Z%KgrVCKm;`f=Sb-19}#-@Boj;+n(7p4|LU#8}E1@I6n(P zoFaM$W@{5DS=q|dOr}6HVl&uJ2L7)MOe>e|wn-Q%k9$NI06~BJt}{5MG-D63p5v=1 z+l=3HG~{AoG>?3f+#VKcGvSirazYmr6h=nARUP_n`XAsYt1{+Rg8D|;s^ylgQR-=gWtgZYuSPr21r@!}tC(%6X|?@kr@` z0oMJ#HUi8*G?#QGqB?OePTk^l|I{Lc*&}_K#bC(lNDit6@Zh+w^JBU0sb#{}3DPVy zc|QGFb9w!`5ct|vbu!=*jN2@zT((Ykm$0M>5VbT4JLbfa;~#M)cWclv>C%E!F=@Z& z0y)I$#;qZoXtwS&`JO1iQq4j_ZBEi4;#nAubyEg-zUBp zc=tcH^EQT%RH&%sbUy-5StNiooxlAG&tjdHwO4@%Z>o4L{ok1>Le<0ZKa3wKkwSwH zSgxOx^XdG0gw$dKU8a&^l;X4=r>=3kf7mOSAQUxShT#h67a#h!Q-tRC^(a99dS;u; znw%DAVonMuL#k`W%uPplIh_FDDR2RF13ZEkQvZ_G+x=tXNEu0$)QBIjOC@&C+%Y{k#KBt0y??t z!4D4j))$<&GfWgZb)?PhfHCga8O8ue&Oi*e6Y(;sXbWXCahD{+YTGHXiYCIgi#<>S z*B_-MiSL*zh{$ZlM+Z~fB}&+Vx>p}HbDBE}$}da(EU3SQy6W!w=qiGCG6`X)dxUJ@ zEJ)zDe-Q#<6bIPTYrotkwWCBjP=v}R^Q3DByp#IoT1i-)PX1qTt&%>Dqt*2oT z8%k*-Z^pTto(;*x6>0 zB)&VMstUa&F5iu9hs7Dc++bnbP5OiZzP0S<#bwV|e0b|k0k_`{@j}NL`$IO@`!lk1 ziYWUH(T;0kihP8TUci^sM2rDl>c=g%Glsk^Kt4fMsE^Sk$F%|A*g$sf70o@M{_T7- z|8jeCQtERNX9(F&lRmMUzH@m!3DV~}##9A&-??5$D#X$u4{(XTG#@1+7<4JyubNHY zx8v!ns;!dHTKj>8WcI(Jsh(cr1EE2Ef+a!qD$Y8$36PhD&(a$*1%4;o9{WrO)j~Gu z3|xE+Agf_q#iEEm6ar8AvSaWH!o{THewPPqkkk|c(QtLXWZ2XvJXOI~>0|^lYO8T-w(cRfUx(Rq>*1w`Nu640xgVRQSV1%QU zAN41LY#b9|z|`?gJ<`EmmQgOsS3Mm!-VKX4yOp$)LS2@8k2%rWVV2}u2+wwFK)Ov7 zR~qf2y(Bz9XDC7pM-@@${%4e)g&HAb9$T5IncO1HRK=ic(u4`dWfGv)^(^QpYmUl0 z-Sok{B8zN(1n1}%V}&o7w4h4>n|Mq0cH4*>M3Q}|G3*^b=@EYx)GoUOl1QWlgHXcL zvCncNZOIL;SE;ElpC>Wz)V3y%fA%;7YUfiMK!TFyR1MHWoZ#t;do5s<2WUO!^Z+ci zX>vM!Z~kRE*C7`F=>cgiOZRsyzhEFPHBgRICVA=8s>B)L|D1N$Dd32c!bIO5K2JB9 zWIV}6D*jT#H+ss=#Edv48LCw*C5Z}_AeC`bc`UE)VW4AB%5TC%%XozQEIt0!bnspnby4wh3woen5CAG zN#RPe>E>g?Bux_E}~YOCX*^m6}tGpI}|4sF4*^sW>z z4UcRXW5U>gVy~ux`U@8jSSMPo1wrnUl8{ZH~dVf6u(|<7A)8#6ew9 z3t-_*TZLb6*>tnC$t6S1X&dt3o&u5ihxg=%6gT}%*tOGzxG-$Th$~$Z*jbi7eXx9Q z&)0GRc+5t9sFIq9X#x-hYsOW-2tyCkflWFoq;)bDS{eg5tQb}g!?DT^b{GHPa*CxT zFQmGZ#Kj43W+jg|R>hDqdrx4fl&TqW=k*YXZk0C>)hcg?dhT!UQ*EU}^ay=77SDF; zkzZ1I&%gTdG?a}tOWE4<$l#?nhhHh0-Y~)KalZk1$=VZQJ(3Ej*z+hxP5(tlJn@$` zBP{Eg#N%xqDB6^k&4E@R)A_qB0-V5uhOsc}IZCg^{SK{fCH>%T@Y#f^++&`@7MwH) zWejYx#EA9l$$ZOHQG&6Vkgz+LB? zE-=~7N+(bX0K#l--F|Y<+uWx<3X2${!H* zUb|{y>Sa9*Iiuqa4{mMe8*eueBlCVPpKC=^FB^<*LO|Z(EY2PQgO*l4-`?d^H+ZnA zqtMn^D*3|r*??w(kt=`i4M1lzDeTxj2*#rpo~* zG83x(5$vJ!LzBLBSAa0|Y(LIr$3mQOV8&M1bYG&T7s#=_*nWhZ3j8eS69tGH%wC%) z>vbZR(_Brj(n~pc-+%3+cSTc=_ve*#;A`d7A26 z;y7-hBgikJPx`vOM+=!OEtdgCogm|3Gyt zsf|TEM{hNlB5-B#rsd`0&2W$lZhx`bj2M80CgOVU%+?;FR1c;ZJof4K)6#Qr=nVqu zwNo@$P^I4L`~Qd~n;J%rG;WP|fx&Gs1>FAPp%p*%G8wsmbO@B+1c0D4gj~vwN7^M( zmJ5R_MygnOARGH3omOS?k|kN(xgH;Y{!*^U{=DqyP!CeOmZ-Q)i5!`~A9sP$~H-Ph#1OJpcE zyrhr%WL#MuH#{Ftp|LW?g#y_mS^WnP<}qFBO8h!lQXcgU`<+C%ajG`#+1wF8Qeh|d z9Aj&A$^+=XmkbJ%x*#Qu4Xj4RFLr_Pb$M$#VrB_ty|mhq$yLbKM#s<|Mq{9RBEr;^7SGeeTHGqio5A)f7|b;|SZOL~%QG$8c$My- zj8pP#d(Y0r=7_whm^mmS;8;gG#FBhu%7RJfJh1XHKvOo^040?%fP|x}SKGwCJJSR} zM60-EWW4%^);|CCI;abvW-l+W#VbbM3=b}}`I-84cvKUWm+^92CmKI6d||hs5% z|Ko5ro*KOv>-3GXM%f0p)4ed*!(x};9lv!(q?6eI@5H;4^Be-t6c7%`)Gd7eR)Yhm z?y$1C7{sWK<+u~7cR}H?Akp+URQvhElBx43hrh$0ro}00IK*UubUx1y5KteH9BJ++ z;04Xl)Oa?eboe{!!%;SzhZj`sHlwXGn_8>F3Ykk7A{iz9mlAzjlz~)0p_}3Of~q6kd?Ws+?-92mFonN4CyKYv2Y&Y9LB;wpGk&oXJ<+LF z?ry7esQ20PPZ%4VY0a$kwx0P;(EexP4AIxhz-PT+)Se}PU-YRKJACl!F=<4?(CA z_BD&N!N?c_N9tVOhL`1|F^C+p5sVcs8R1`hO>#wpu2wFa4h0A&M^5Q?J%2ths#cZ` zv71>8TQ^}MFE)|_l#9s7M9)Y(ubJs1Cj0GD8C!Ak;#F^R+dJh^?yb0S2%PaFvK|iK z-WpE&_E>=c;h6zMnLy+6(d}+6>1y)$z{Y!X;shQ~#s6FqYlJ51!N-{GrFr`6B$ZcPKMCiT}VzV->?-$Q~oi5Qs^EushO)|1P;o z^in{2`H}FMMon&f)osNrAA!WQNZ)`Ph*|uhVKN;C^d*nfQL_};P$iMNhj>9FO5YcY(x9k>jUDLi$s>- z^~*&0s!1Vn1A8YxzqELy5~j=M@SdkP9zS17qrYNnnx92NEb4CDwX2|bn6XRvZ{ z>ZUvH>Ft_R6%2nbbFdtS0dkt(zsH*60TomKZHnFEPyC?Wj@t?5Nua>7!SX`kmoSH9 z0*yp(&&wH;)69k!H|FjBicy%cSuCik54AW0lI_24Rm014AsKrUjb)%v z2}rXs$N-aPQUb(vrKF2gJbp+KAZu^j_cRq|Z5%(2S}fWDX<;-i^xt}tn1wSQJp}MZ zbaU?gTa6kLBrYJBU_rSUOLuA>B|(`xi3~Cx$=GATkkm~zF!bi_;D<`8W5*e6zVy4= z5P*eM{`TQ7J{bZMn}2T)NRNQDJI!4d!mkQ>ZhyP`A=7L>o+-sW64P2R6(A>tp@mI8dNnYrHFKgFKe?wBlYwmCvHYn!f1f-guglPJ6(DKw^6yg& zyrOj@dHK5y28j`CU6T9`mL8hJ&h^?1gW(_{KgK{D))^RHcO_EbTfwM_dYp%>3krF%iSN7z7aZ zNL=9VtB&P%X1~%;=-<)=7==qPuq6Nbac2Pc6%P#>h)KqPE&anSV>1D**xh74Mt=v# ztEZ=V{`CwDmOcimRMr2=w!oOCr4pcIn*)_cT^Y9lsD2^jsuD1WI|-3?8Rcb_(hH7` zky^pq*`T8iN1$Pa9SuYORSf%ZTlt|2A)7>+FlMNoTYH1t8iQsS0SJhs^aAlqbdM@P zg*Vw>P8mWjx9%j^F1Q@}4B3FRkk2Rjoi-VK+f~69HGYAYE43PbXBt%5#@*?^i)uv* zwDP(MxW_&ojf4Sd-gjwPspXY0pimh&DSLP8`4&^tqUEOYs7Mbrb21=6;Jn)$z;=kt z`QG+-kw^kfRJc`EWC9pPy9Ag=bVtVyqL(}efS#ytW$pbnq~%8sfX1qIV|+ML_w1pS zzGr37VGLtAJ^+r4fH4W~@Gp}{mj!?h^QD)74Y9Z8BLB075MqpS;FUPAY%b!V#0#7} z;MOV;#ud;#VHOq@#bEc!cTB{I!B~2K-q$VFOB(nqD{SO%$Eo6_-Z+du`yr>x)Uifi zfM2OECMf^8_Xn<=E?v;ken*|oKh+i^^f=u&0%zZuVj6oA_zs7P-|K&K*8BBaI}EYp z5{5R3um&L^Ocum>$zsp8r%>g|0Kf1=f5#i3rEin}IG+fYuD!5yhoe^qqUojj9?2%0Q7G1WgG+bH57Yf?Ch^lb!`3i@n_l37w0USY{ovy2JH!R<*om;))_&!mo~#+guU4d*nyaR zgXmvkc}5S+%a^X32b2dKBd2Cg5i(INQ~rE+gSeVx`l}K~Tea`-91v2g*k>_!j0Di; z7f}Nhq&fCGAj-w!+sb6wWQ-fKow1#H@gjp0<$Uv=>4SN!LX$fniHGEpBb(yd;>txi z?>ej_sY5oUKy?Vmss!)egLQTbQLtQ>UJJbU!be1a>z<`DZFJ6-cw!{|gprj1K?+ literal 0 HcmV?d00001 diff --git a/source/part-1-workspace/django/_index.adoc b/source/part-1-workspace/django/_index.adoc index 1eb4899..97c209c 100644 --- a/source/part-1-workspace/django/_index.adoc +++ b/source/part-1-workspace/django/_index.adoc @@ -367,7 +367,11 @@ urlpatterns = [ <2> Champomy et cotillons! Nous avons une correspondance avec `wishes/details/91827` -Nous n'allons pas nous occuper de l'accès à la base de données pour le moment (nous nous en occuperons dans un prochain chapitre) et nous nous contenterons de remplir un canevas avec un ensemble de données. +TODO: En fait, il faudrait quand même s'occuper du modèle ici. +TODO: et de la mise en place de l'administration, parce que nous en aurons besoin pour les étapes de déploiement. + +[line-through]#Nous n'allons pas nous occuper de l'accès à la base de données pour le moment (nous nous en occuperons dans un prochain chapitre) et nous nous contenterons de remplir un canevas avec un ensemble de données.# + Le module `gwift.views` qui se trouve dans le fichier `gwift/views.py` peut ressembler à ceci: [source,python] @@ -474,11 +478,30 @@ Nous avons donc la strucutre finale pour notre environnement de travail: └── tox.ini ---- -=== - === Cookie cutter -* Créez systématiquement un environnement virtuel pour chaque projet sur lequel vous travaillez -* La description des dépendances utilisées pour un projet doivent faire partie intégrante des sources +Pfiou! Ca en fait des commandes et du boulot pour "juste" démarrer un nouveau projet, non? Sachant qu'en plus, nous avons dû modifier des fichiers, déplacer des dossiers, ajouter des dépendances, configurer une base de données, ... -C'est ici que le projet http://cookiecutter.readthedocs.io/en/latest/readme.html[CookieCutter] va être intéressant: les X premières étapes peuvent être *bypassées* par une simple commande. \ No newline at end of file +Bonne nouvelle! Il existe des générateurs, permettant de démarrer rapidement un nouveau projet sans (trop) se prendre la tête. Le plus connu (et le plus personnalisable) est https://cookiecutter.readthedocs.io/[Cookie-Cutter], qui se base sur des canevas _type https://pypi.org/project/Jinja2/[Jinja2]_, pour créer une arborescence de dossiers et fichiers conformes à votre manière de travailler. Et si vous avez la flemme de créer votre propre canevas, vous pouvez utiliser https://cookiecutter-django.readthedocs.io[ceux qui existent déjà]. + +Pour démarrer, créez un environnement virtuel (comme d'habitude): + +[source,bash] +---- +λ python -m venv .venvs\cookie-cutter-khana +λ .venvs\cookie-cutter-khana\Scripts\activate.bat +(cookie-cutter-khana) λ pip install cookiecutter + + Collecting cookiecutter + [...] + Successfully installed Jinja2-2.11.2 MarkupSafe-1.1.1 arrow-0.17.0 binaryornot-0.4.4 certifi-2020.12.5 chardet-4.0.0 click-7.1.2 cookiecutter-1.7.2 idna-2.10 jinja2-time-0.2.0 poyo-0.5.0 python-dateutil-2.8.1 python-slugify-4.0.1 requests-2.25.1 six-1.15.0 text-unidecode-1.3 urllib3-1.26.2 + +(cookie-cutter-khana) λ cookiecutter https://github.com/pydanny/cookiecutter-django + + [...] + + [SUCCESS]: Project initialized, keep up the good work! +---- + +Si vous explorez les différents fichiers, vous trouverez beaucoup de similitudes avec la configuration que nous vous proposions ci-dessus. +En fonction de votre expérience, vous serez tenté de modifier certains paramètres, pour faire correspondre ces sources avec votre utilisation ou vos habitudes. diff --git a/source/part-1-workspace/environment/_index.adoc b/source/part-1-workspace/environment/_index.adoc index 6250bf8..01ed60e 100644 --- a/source/part-1-workspace/environment/_index.adoc +++ b/source/part-1-workspace/environment/_index.adoc @@ -288,7 +288,8 @@ Found 4 errors in 1 file (checked 1 source file) Pour corriger ceci, nous devons: . Importer le type `Optional` et l'utiliser en sortie de notre fonction `first_int_elem` -. Eviter de lui donner de mauvais paramètres ;-) +. Eviter de lui donner de +mauvais paramètres ;-) [source,python] ---- @@ -458,9 +459,13 @@ Pour la petite histoire, `make` peu sembler un peu désuet, mais reste extrêmem ==== The Zen of Python -[source,text] +[source,python] ---- >>> import this +---- + +[source,text] +---- The Zen of Python, by Tim Peters Beautiful is better than ugly. diff --git a/source/part-2-deployment/_index.adoc b/source/part-2-deployment/_index.adoc index 2eda855..79b70e5 100644 --- a/source/part-2-deployment/_index.adoc +++ b/source/part-2-deployment/_index.adoc @@ -85,8 +85,6 @@ include::heroku.adoc[] include::docker.adoc[] - - WARNING: le serveur de déploiement ne doit avoir qu'un accès en lecture au dépôt source. On peut aussi passer par fabric, ansible, chef ou puppet. @@ -115,4 +113,3 @@ See https://mattsegal.dev/nginx-django-reverse-proxy-config.html * Let's Encrypt ! -include::database.adoc[] \ No newline at end of file diff --git a/source/part-2-deployment/ansible.adoc b/source/part-2-deployment/ansible.adoc deleted file mode 100644 index b9df47b..0000000 --- a/source/part-2-deployment/ansible.adoc +++ /dev/null @@ -1 +0,0 @@ -=== Ansible \ No newline at end of file diff --git a/source/part-2-deployment/database.adoc b/source/part-2-deployment/database.adoc deleted file mode 100644 index 213db97..0000000 --- a/source/part-2-deployment/database.adoc +++ /dev/null @@ -1,63 +0,0 @@ -== Bases de données - -On l'a déjà vu, Django se base sur un pattern type https://www.martinfowler.com/eaaCatalog/activeRecord.html[ActiveRecords] pour la gestion de la persistance des données et supporte les principaux moteurs de bases de données connus: - -* SQLite (en natif, mais Django 3.0 exige une version du moteur supérieure ou égale à la 3.8) -* MariaDB (en natif depuis Django 3.0), -* PostgreSQL au travers de psycopg2 (en natif aussi), -* Microsoft SQLServer grâce aux drivers [...à compléter] -* Oracle via https://oracle.github.io/python-cx_Oracle/[cx_Oracle]. - -CAUTION: Chaque pilote doit être utilisé précautionneusement ! Chaque version de Django n'est pas toujours compatible avec chacune des versions des pilotes, et chaque moteur de base de données nécessite parfois une version spécifique du pilote. Par ce fait, vous serez parfois bloqué sur une version de Django, simplement parce que votre serveur de base de données se trouvera dans une version spécifique (eg. Django 2.3 à cause d'un Oracle 12.1). - -Ci-dessous, quelques procédures d'installation pour mettre un serveur à disposition. Les deux plus simples seront MariaDB et PostgreSQL, qu'on couvrira ci-dessous. Oracle et Microsoft SQLServer se trouveront en annexes. - -=== PostgreSQL - -On commence par installer PostgreSQL. - -Par exemple, dans le cas de debian, on exécute la commande suivante: - -[source,bash] ----- -$$$ aptitude install postgresql postgresql-contrib ----- - -Ensuite, on crée un utilisateur pour la DB: - -[source,bash] ----- -$$$ su - postgres -postgres@gwift:~$ createuser --interactive -P -Enter name of role to add: gwift_user -Enter password for new role: -Enter it again: -Shall the new role be a superuser? (y/n) n -Shall the new role be allowed to create databases? (y/n) n -Shall the new role be allowed to create more new roles? (y/n) n -postgres@gwift:~$ ----- - -Finalement, on peut créer la DB: - -[source,bash] ----- -postgres@gwift:~$ createdb --owner gwift_user gwift -postgres@gwift:~$ exit -logout -$$$ ----- - -NOTE: penser à inclure un bidule pour les backups. - -=== MariaDB - -Idem, installation, configuration, backup, tout ça. -A copier de grimboite, je suis sûr d'avoir des notes là-dessus. - - -=== Microsoft SQL Server - - -=== Oracle - diff --git a/source/part-2-deployment/debian.adoc b/source/part-2-deployment/debian.adoc index d73a3ff..2bae1e8 100644 --- a/source/part-2-deployment/debian.adoc +++ b/source/part-2-deployment/debian.adoc @@ -42,6 +42,71 @@ sudo make altinstall <1> ---- <1> *Attention !* Le paramètre `altinstall` est primordial. Sans lui, vous écraserez l'interpréteur initialement supporté par la distribution, et cela pourrait avoir des effets de bord non souhaités. +==== Installation de la base de données + +On l'a déjà vu, Django se base sur un pattern type https://www.martinfowler.com/eaaCatalog/activeRecord.html[ActiveRecords] pour la gestion de la persistance des données et supporte les principaux moteurs de bases de données connus: + +* SQLite (en natif, mais Django 3.0 exige une version du moteur supérieure ou égale à la 3.8) +* MariaDB (en natif depuis Django 3.0), +* PostgreSQL au travers de psycopg2 (en natif aussi), +* Microsoft SQLServer grâce aux drivers [...à compléter] +* Oracle via https://oracle.github.io/python-cx_Oracle/[cx_Oracle]. + +CAUTION: Chaque pilote doit être utilisé précautionneusement ! Chaque version de Django n'est pas toujours compatible avec chacune des versions des pilotes, et chaque moteur de base de données nécessite parfois une version spécifique du pilote. Par ce fait, vous serez parfois bloqué sur une version de Django, simplement parce que votre serveur de base de données se trouvera dans une version spécifique (eg. Django 2.3 à cause d'un Oracle 12.1). + +Ci-dessous, quelques procédures d'installation pour mettre un serveur à disposition. Les deux plus simples seront MariaDB et PostgreSQL, qu'on couvrira ci-dessous. Oracle et Microsoft SQLServer se trouveront en annexes. + +===== PostgreSQL + +On commence par installer PostgreSQL. + +Par exemple, dans le cas de debian, on exécute la commande suivante: + +[source,bash] +---- +$$$ aptitude install postgresql postgresql-contrib +---- + +Ensuite, on crée un utilisateur pour la DB: + +[source,bash] +---- +$$$ su - postgres +postgres@gwift:~$ createuser --interactive -P +Enter name of role to add: gwift_user +Enter password for new role: +Enter it again: +Shall the new role be a superuser? (y/n) n +Shall the new role be allowed to create databases? (y/n) n +Shall the new role be allowed to create more new roles? (y/n) n +postgres@gwift:~$ +---- + +Finalement, on peut créer la DB: + +[source,bash] +---- +postgres@gwift:~$ createdb --owner gwift_user gwift +postgres@gwift:~$ exit +logout +$$$ +---- + +NOTE: penser à inclure un bidule pour les backups. + +===== MariaDB + +Idem, installation, configuration, backup, tout ça. +A copier de grimboite, je suis sûr d'avoir des notes là-dessus. + + +===== Microsoft SQL Server + + +===== Oracle + + + ==== Préparation de l'environnement utilisateur [source,bash] @@ -278,7 +343,7 @@ server { <2> Ce répertoire sera complété par la commande `collectstatic` que l'on verra plus tard. L'objectif est que les fichiers ne demandant aucune intelligence soit directement servis par Nginx. Cela évite d'avoir un processus Python (relativement lent) qui doive être instancié pour servir un simple fichier statique. <3> Afin d'éviter que Django ne reçoive uniquement des requêtes provenant de 127.0.0.1 -=== Mise à jour +==== Mise à jour Script de mise à jour. @@ -295,7 +360,7 @@ python manage.py collectstatic gunicorn reload -HUP ---- -=== Configuration des sauvegardes +==== Configuration des sauvegardes Les sauvegardes ont été configurées avec borg: `yum install borgbackup`. @@ -315,7 +380,7 @@ Et dans le fichier crontab : ---- -=== Rotation des jounaux +==== Rotation des jounaux [source,bash] ---- @@ -328,4 +393,6 @@ Et dans le fichier crontab : } ---- -Puis on démarre logrotate avec # logrotate -d /etc/logrotate.d/gwift pour vérifier que cela fonctionne correctement. \ No newline at end of file +Puis on démarre logrotate avec # logrotate -d /etc/logrotate.d/gwift pour vérifier que cela fonctionne correctement. + +==== Ansible \ No newline at end of file diff --git a/source/part-2-deployment/docker.adoc b/source/part-2-deployment/docker.adoc index c5c7ea3..06d9c20 100644 --- a/source/part-2-deployment/docker.adoc +++ b/source/part-2-deployment/docker.adoc @@ -17,4 +17,6 @@ image.png L'image de base python passe de 179 à 740 MB. Et là j'en ai pour presque 1,5 GB d'un coup. -Mais par contre, j'ai un python 3.7 direct et postgres 10 sans rien faire ou presque. \ No newline at end of file +Mais par contre, j'ai un python 3.7 direct et postgres 10 sans rien faire ou presque. + +La partie ci-dessous a été reprise telle quelle de https://cookiecutter-django.readthedocs.io/en/latest/deployment-with-docker.html[la documentation de cookie-cutter-django]. diff --git a/source/part-2-deployment/heroku.adoc b/source/part-2-deployment/heroku.adoc index 41457a2..03f9c52 100644 --- a/source/part-2-deployment/heroku.adoc +++ b/source/part-2-deployment/heroku.adoc @@ -1 +1,127 @@ === Heroku + +https://www.heroku.com[Heroku] est une _Plateform As A Service_ footnote:[Aussi abrégé "PaaS" pour les conaisseurs], où vous choisissez le _service_ dont vous avez besoin (une base de données, un service de cache, un service applicatif, ...), vous lui envoyer les paramètres nécessaires et le tout démarre gentiment sans que vous ne deviez superviser l'hôte. +Ce mode démarrage ressemble énormément aux 12 facteurs dont nous avons déjà parlé plus tôt - raison de plus pour que notre application soit directement prête à y être déployée, d'autant plus qu'il ne sera pas possible de modifier un fichier une fois qu'elle aura démarré: si vous souhaitez modifier un paramètre, cela reviendra à couper l'actuelle et envoyer de nouveaux paramètres et recommencer le déploiement depuis le début. + +.Invest in apps, not ops. Heroku handles the hard stuff — patching and upgrading, 24/7 ops and security, build systems, failovers, and more — so your developers can stay focused on building great apps. +image::images/deployment/heroku.png[] + +Pour un projet de type "hobby" et pour l'exemple de déploiement ci-dessous, il est tout à fait possible de s'en sortir sans dépenser un kopek, afin de tester nos quelques idées ou mettre rapidement un _Most Valuable Product_ en place. La seule contrainte consistera à pouvoir héberger des fichiers envoyés par vos utilisateurs - ceci pourra être fait en configurant un _bucket S3_ chez Amazon (beurk), Scaleway ou OVH footnote:[Entre autres.] + +Le fonctionnement est relativement simple: pour chaque application, Heroku crée un dépôt Git qui lui est associé. Au travers de la commande `heroku create`, vous associez en fait une nouvelle référence à votre code source: + +[source,bash] +---- +$ heroku create +Creating app... done, ⬢ young-temple-86098 +https://young-temple-86098.herokuapp.com/ | https://git.heroku.com/young-temple-86098.git + +$ cat .git/config +[core] + repositoryformatversion = 0 + filemode = false + bare = false + logallrefupdates = true + symlinks = false + ignorecase = true +[remote "heroku"] + url = https://git.heroku.com/still-thicket-66406.git + fetch = +refs/heads/*:refs/remotes/heroku/* +---- + +Pour envoyer une nouvelle version, il suffit dès lors (après l'avoir paramétrée), de pousser la référence grâce à la commande `git push heroku master`. + +Prêt à vous lancer ? Commencez par créer un compte: https://signup.heroku.com/python. + +==== Configuration du compte Heroku + ++ Récupération des valeurs d'environnement pour les réutiliser ci-dessous. + +Vous aurez peut-être besoin d'un coup de pouce pour démarrer votre première application; heureusement, la documentation est super bien faite: + +.Heroku: Commencer à travailler avec un langage +image::images/deployment/heroku-new-app.png[] + +Installez ensuite la CLI (_Command Line Interface_) en suivant https://devcenter.heroku.com/articles/heroku-cli[la documentation suivante]. + +Au besoin, cette CLI existe pour: + +. macOS, _via_ `brew ` +. Windows, grâce à un https://cli-assets.heroku.com/heroku-x64.exe[binaire x64] (la version 32 bits existe aussi, mais il est peu probable que vous en ayez besoin) +. GNU/Linux, via un script Shell `curl https://cli-assets.heroku.com/install.sh | sh` ou sur https://snapcraft.io/heroku[SnapCraft]. + +Une fois installée, connectez-vous: + +[source,bash] +---- +$ heroku login +---- + +Et créer votre application: + +[source,bash] +---- +$ heroku create +Creating app... done, ⬢ young-temple-86098 +https://young-temple-86098.herokuapp.com/ | https://git.heroku.com/young-temple-86098.git +---- + +.Notre application est à présent configurée! +image::images/deployment/heroku-new-app-created.png[] + +Ajoutons lui une base de données, que nous sauvegarderons à intervalle régulier: + +[source,bash] +---- +$ heroku addons:create heroku-postgresql:hobby-dev +Creating heroku-postgresql:hobby-dev on ⬢ still-thicket-66406... free +Database has been created and is available + ! This database is empty. If upgrading, you can transfer + ! data from another database with pg:copy +Created postgresql-clear-39693 as DATABASE_URL +Use heroku addons:docs heroku-postgresql to view documentation + +$ heroku pg:backups schedule --at '14:00 Europe/Brussels' DATABASE_URL +Scheduling automatic daily backups of postgresql-clear-39693 at 14:00 Europe/Brussels... done +---- + +[source,bash] +---- +# Copié/collé de https://cookiecutter-django.readthedocs.io/en/latest/deployment-on-heroku.html +heroku create --buildpack https://github.com/heroku/heroku-buildpack-python + +heroku addons:create heroku-redis:hobby-dev + +heroku addons:create mailgun:starter + +heroku config:set PYTHONHASHSEED=random + +heroku config:set WEB_CONCURRENCY=4 + +heroku config:set DJANGO_DEBUG=False +heroku config:set DJANGO_SETTINGS_MODULE=config.settings.production +heroku config:set DJANGO_SECRET_KEY="$(openssl rand -base64 64)" + +# Generating a 32 character-long random string without any of the visually similar characters "IOl01": +heroku config:set DJANGO_ADMIN_URL="$(openssl rand -base64 4096 | tr -dc 'A-HJ-NP-Za-km-z2-9' | head -c 32)/" + +# Set this to your Heroku app url, e.g. 'bionic-beaver-28392.herokuapp.com' +heroku config:set DJANGO_ALLOWED_HOSTS= + +# Assign with AWS_ACCESS_KEY_ID +heroku config:set DJANGO_AWS_ACCESS_KEY_ID= + +# Assign with AWS_SECRET_ACCESS_KEY +heroku config:set DJANGO_AWS_SECRET_ACCESS_KEY= + +# Assign with AWS_STORAGE_BUCKET_NAME +heroku config:set DJANGO_AWS_STORAGE_BUCKET_NAME= + +git push heroku master + +heroku run python manage.py createsuperuser + +heroku run python manage.py check --deploy + +heroku open +---- \ No newline at end of file