docker基于lamp的ctf web題目容器

0x00 目的

實驗室要做ctf比賽平臺,我負責包裝上傳賽題的工作,使用docker保證運行環(huán)境的隔離.

0x01 lamp介紹&run

LAMP指的Linux(操作系統(tǒng))、Apache HTTP 服務器,MySQL(有時也指MariaDB,數(shù)據(jù)庫軟件和PHP(有時也是指Perl或Python 的第一個字母,一般用來建立web應用平臺。
找到一個合適的lamp鏡像

docker search lamp

會出現(xiàn)很多,復制去https://hub.docker.com/找到相關(guān)介紹,確定具體使用哪種.

這里使用linode/lamp
docker run -dt -p PORT:80 -v /opt/web:/var/www/web linode/lamp
#-v outdir:indir
#這里將容器內(nèi)的/var/www/web映射到本機的/Documents/web
#具體可以參考https://www.cnblogs.com/ivictor/p/4834864.html
#注:若映射到內(nèi)部有內(nèi)容的文件夾則會將內(nèi)部文件夾的內(nèi)容清空(我外部用的是一個空文件夾)

0x02 進入容器配置apache2

docker exec -it CONTAINERID /bin/bash
#CONTAINERID使用docker ps 查看

參考https://www.linode.com/docs/websites/hosting-a-website-ubuntu-18-04/#install-mysql進行配置

進入容器后
service apache2 start
service mysql start
#打開apache2和mysql服務
修改連接數(shù)等配置
sudo cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.bak #做備份
sudo nano /etc/apache2/apache2.conf #使用nano打開配置文件

拉到最后

   <IfModule mpm_prefork_module>
       StartServers 4
       MinSpareServers 20
       MaxSpareServers 40
       MaxClients 200
       MaxRequestsPerChild 4500
   </IfModule>
StartServers #apache啟動時候默認開始的子進程數(shù)
MinSpareServers #最小的閑置子進程數(shù)
MaxSpareServers #最大的閑置子進程數(shù)
MaxClients #控制最大進程數(shù)
MaxConnectionsPerChild 
#設(shè)置的是每個子進程可處理的請求數(shù)。
#每個子進程在處理了“MaxConnectionsPerChild”個請求后將自動銷毀。
#0意味著無限,即子進程永不銷毀。
#雖然缺省設(shè)為0可以使每個子進程處理更多的請求,但如果設(shè)成非零值也有兩點重要的好處:
#1、可防止意外的內(nèi)存泄漏。
#2、在服務器負載下降的時侯會自動減少子進程數(shù)。因此,可根據(jù)服務器的負載來調(diào)整這個值。
#在Apache2.3.9之前稱之為MaxRequestsPerChild。
ctrl+x退出,Y保存,ENTER退出
重啟apache2
service restart apache2
修改網(wǎng)頁根目錄等
sudo nano /etc/apache2/sites-available/example.com.conf
<VirtualHost *:80>
  # Admin email, Server Name (domain name), and any aliases
  ServerAdmin webmaster@example.com
  ServerName  example.com
  ServerAlias www.example.com

  # Index file and Document Root (where the public files are located)
  DirectoryIndex index.html index.php
  DocumentRoot /var/www/html/example.com/public_html
  # Log file locations
  LogLevel warn
  ErrorLog  /var/www/html/example.com/log/error.log
  CustomLog /var/www/html/example.com/log/access.log combined
</VirtualHost>

#這里我對DocumentRoot,ErrorLog,CustomLog進行了修改
#由于我映射的目錄是/var/www/web,所以把DocumentRoot 改為/var/www/web
#ErrorLog改為/var/www/log/error.log
#CustomLog改為/var/www/log/access.log combined
ctrl+x退出,Y保存,ENTER退出
sudo a2ensite example.com.conf
service restart apache2
#重讀配置文件

0x03 配置MySQL

sudo mysql_secure_installation

這里密碼是Admin2015,官方?jīng)]寫,找了很久!!

基本是一路按照默認的一直ENTER就行(y和n大寫的就是默認選項)
service restart mysql
#重啟mysql

0x04 修改目錄用戶組

權(quán)限介紹
https://blog.csdn.net/u013197629/article/details/73608613

cd /var/www
ps aux 
#顯示其他用戶啟動的進程(a)
#查看系統(tǒng)中屬于自己的進程(x)
#啟動這個進程的用戶和它啟動的時間(u)
chown -R www-data:www-data web
#這里通過ps aux看到apache服務是www-data用戶啟動的
#將web文件夾加入www-data用戶組

0x05 打包push到私有registry

exit  #退出容器
保存對容器的更改
docker commit CONTAINERID USERNAME/NAME
#USERNAME是一般化的規(guī)定,一般情況是用戶名,就是隨意起的自己的名字
#NAME是倉庫名,我這里使用的事lamp
給鏡像加標簽
docker tag IMAGEID IP(or 127.0.0.1)/NAME:VERSION
#具體看上一篇
傳到registry
docker push IP(or 127.0.0.1)/NAME:VERSION

0x06 文件傳輸

我是mac使用ssh鏈接到遠程服務器
使用scp傳輸文件
由于容器內(nèi)映射
直接傳入Ubuntu的文件夾
在Ubuntu內(nèi)更改文件夾權(quán)限

sudo chmod 777 /opt/web

mac內(nèi)

scp OUTFILE USER@IP:/opt/web
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • Docker — 云時代的程序分發(fā)方式 要說最近一年云計算業(yè)界有什么大事件?Google Compute Engi...
    ahohoho閱讀 15,848評論 15 147
  • 一.docker 是什么: 2.安裝docker 系統(tǒng):ubuntu16.04 使用腳本自動安裝 Docker 官...
    Black_Sun閱讀 2,253評論 0 2
  • 懷舊是每個人都會有的一種情節(jié),對于童年,時光,青春。年齡不斷在長大,并一步步走向蒼老的我們,內(nèi)心深處總是會不斷的回...
    丫頭317閱讀 237評論 0 2
  • 隨季節(jié)遷徙 一直是宿命 又仿佛被折斷雙腳 一經(jīng)落地 將是它永久的 墓居
    一粒簡單閱讀 259評論 0 0
  • 低頻共振儀的效果怎么樣? 水是維持人體健康不可或缺的物質(zhì)。通常情況下,如果我們體內(nèi)缺水較多,就會因體內(nèi)毒素積聚過多...
    中科美瑞閱讀 1,816評論 0 0

友情鏈接更多精彩內(nèi)容