当前位置: 首页 > 后端技术 > PHP

docker下安装typecho搭建自己的博客系统(一)dockerfile

时间:2023-03-29 17:00:00 PHP

需求说明使用php软件typeecho在docker环境下搭建并运行自己的博客系统,并安装ssl证书。博客软件typechohttp://typecho.org/Step1:拥有一个包含docker软件的linux操作系统[root@oeynettools]#docker-vDockerversion1.12.6,build96d83a5/1.12.6[root@oeynettools]#Step2:由于我的环境还有一个用tengine2搭建的老系统,我就直接使用tengine作为内部反向代理,为容器导出的端口提供服务[root@oeynetprograms]#nginx-vTengineversion:Tengine/2.2.0(nginx/1.8.1)[root@oeynetprograms]#Step3:下载typeecho1.安装git命令$gitclonehttps://github.com/typecho/typecho.gittypeecho2.typeecho为我们提供了人性化的dockerfile文件,但是他们把typecho程序放在了一个包含mysql+nginx+php-fpm的容器中。显然这是最简单的方式,但是如果使用docker-compose来构建,服务会变得更容易维护,不过这次我们还是使用官方的Dockerfile来构建。Step4:使用docker搭建1.进入tools目录$cd./typeecho/tools$ls2。构建$dockerbuild-ttypeecho:0.1。在构建过程中,安装mysql时可能会遇到错误。这时候,我们打开dockerfile去修复一下,增加一行21。3.构建完成后,哇,好大,真牛逼。小弟,typeecho官方提供的dockerfile,很多tmp文件都没有清理。Step5:开始安装1.启动一个typecho容器[root@oeynettypecho]#dockerrun-d-v/server/docker-apps/typecho:/wwwtypeecho:0.1f16060b32360834384e745317f5f657e17eb91fde1aaba0ad662995b1ab97511[root@oeynettypecho]#dockerpsCONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES9e01b2d210cctypeecho:0.1"/bin/sh-c'/php/sbi"3分钟前Up3分钟80/tcp,3306/tcptypecho[root@oeynettypecho]#Herewedon'不需要暴露任何端口,因为不安全,尤其是数据库的3306端口,因为我们是通过宿主机的nginx访问的。-v参数是必需的,它指定我们要将网站的根目录挂载到容器内部的网络中。2、添加宿主机nginx的反代配置查看宿主机ip$dockerinspect9e添加nginx配置server{listen80;服务器名称blog.oeynet.com;location/{proxy_passhttp://192.168.0.2:80;}}重新启动,然后我们访问blog.oeynet.com。能够访问就代表我们成功了,但是不要高兴得太早,比较复杂Step6:开始安装1.进入容器里面的操作系统[root@oeynettypecho]#dockerexec-it9ebash2.dockerfile搭建完成,包含mysql客户端软件,typecho安装不会创建数据库,所以需要我们自己创建数据库。root@9e01b2d210cc:/#mysql-uroot-p123456mysql>createdatabasetypecho;QueryOK,1rowaffected(0.00秒)3。配置安装界面向导后,我们需要手动去www创建config.inc.phpaddServer(array('host'=>'localhost','user'=>'root','password'=>'123456','charset'=>'utf8','port'=>'3306','database'=>'typecho',),Typecho_Db::READ|Typecho_Db::WRITE);Typecho_Db::set($db);创建config.inc.php后可能会安装成功会遇到的问题1.开机页面后白屏关闭跨站检测Step7:配置ssl证书1.申请ssl证书,可以在阿里云免费申请一年证书2.下载nginx证书传给服务器修改conf文件server{listen443;SSL开启;服务器名称blog.oeynet.com;ssl_certificate/server/certs/blog.oeynet.com/214082784110471.pem;ssl_certificate_key/server/certs/blog.oeynet.com/214082784110471.key;ssl_session_timeout5m;ssl_ciphersECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_protocolsTLSv1TLSv1.1TLSv1.2;ssl_prefer_server_ciphers开启;location/{proxy_passhttp://192.168.0.2:80;}}服务器{听80;服务器名称blog.oeynet.com;rewrite^(.*)$https://$host$1permanent;}最后重启nginx,打开443端口[root@oeynetvhost]#nginx-sreload[root@oeynetvhost]#firewall-cmd--add-port=443/tcp--zone=public--permanentFirewallD未运行[root@oeynetvhost]#systemctl启用firewalldCreated从/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service到/usr/lib/systemd的符号链接/system/firewalld.service.Created来自/etc/systemd/system/basic的符号链接。目标.wants/firewalld.service到/usr/lib/systemd/system/firewalld.service.[root@oeynetvhost]#systemctlstartfirewalld[root@oeynetvhost]#firewall-cmd--add-port=443/tcp--zone=public--permanentsuccess[root@oeynetvhost]#firewall-cmd--reloadsuccess[root@oeynetvhost]#