DevOps 巅峰战役 01 - 起源 巅峰coldzera
bigegpt 2024-09-27 00:40 3 浏览
产品名:应用中心
产品想法:在手机上我们都有应用商店,应用商店收录了各种各样的app,当我们需要地图导航时只需要安装地图软件即可使用。在我们的开发与生产环境中,linux平台下安装软件需要有经验加持,才能避免各种坑。开发一款基于centos7的应用中心,在日常开发和生产环境中可以快捷方便的安装所需软件,并自动配置让软件相对运行到最优。
工具选择:ansible、nginx、python3、maraidb
- ansible:使用jinja2的模板,使用ansible调度功能
- nginx:做代理并提供高并发访问
- python3:高扩展性可以将功能模块化
- maraidb:使用centos7自带的mysql数据库
准备工作:
python3 编译安装
# 编译安装python3.6.4 # yum install libffi-devel -y cd /usr/bin ll python* mkdir /usr/local/python3 cd /usr/local/python3 wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz tar -zxf Python-3.7.4.tgz yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make cd Python-3.7.4 ./configure --prefix=/usr/local/python3 make && make install cd /usr/bin # 设置软连接 ln -s /usr/local/python3/bin/python3 /usr/bin/python3 # 查看安装的python版本,和之前的python2版本 cd python -V python3 -V # pip 安装 python3 -m pip install --upgrade pip python3 -m pip install django python3 -m pip install pyMySQL vim /usr/local/python3/lib/python3.7/site-packages/django/db/backends/mysql/base.py # 设置软连接 ln -s /usr/local/python3/bin/django-admin /usr/bin/django-admin
sqlit3编译安装
# 下载sqlit3 包 cd /usr/local/ wget https://www.sqlite.org/2019/sqlite-autoconf-3290000.tar.gz tar -zxvf sqlite-autoconf-3290000.tar.gz # 编译安装 cd sqlite-autoconf-3290000 ./configure --prefix=/usr/local make && make install mv /usr/local/bin/sqlite3 /usr/local/ rm -rf /usr/local/bin # 重新设置软连接 mv /usr/bin/sqlite3 /usr/bin/sqlite3_old ln -s /usr/local/sqlite3 /usr/bin/sqlite3 # 设置环境变量 export LD_LIBRARY_PATH="/usr/local/lib" sed -i "/LD_LIBRARY_PATH/d" /root/.bash_profile echo "export LD_LIBRARY_PATH=\"/usr/local/lib\"" >> /root/.bash_profile source /root/.bash_profile sqlite3 --version
nginx编译安装
# 安装编译环境 yum -y install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel # 下载nginx 包 mkdir /usr/local/nginx cd /usr/local/nginx wget -c https://nginx.org/download/nginx-1.16.0.tar.gz tar -zxvf nginx-1.16.0.tar.gz cd nginx-1.16.0 sed -i -e 's/1.16.0//' -e 's/nginx\//cgls/g' -e 's/"Nginx"/"cgls"/g' src/core/nginx.h # 编译安装 ./configure ./configure --prefix=/usr/local/nginx --with-http_ssl_module make && make install # 设置软连接 cd /usr/bin ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx # nginx设置为服务 cat << EOF > /lib/systemd/system/nginx.service [Unit] Description=nginx After=network.target [Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s quit PrivateTmp=true [Install] WantedBy=multi-user.target EOF # 设置开机启动 systemctl enable nginx systemctl start nginx
ansible 安装
# 安装ansible yum -y install ansible
mariadb 安装
# 安装mariadb yum -y install mariadb mariadb-server expect systemctl enable mariadb systemctl start mariadb /usr/bin/expect <<EOF spawn mysql_secure_installation expect "Enter current password for root (enter for none):" { send "\r";exp_continue } "Set root password?" { send "y\r";exp_continue } "New password:" { send "123qwe\r";exp_continue } "Re-enter new password:" { send "123qwe\r";exp_continue } "Remove anonymous users?" { send "y\r";exp_continue } "Disallow root login remotely?" { send "n\r";exp_continue } "Remove test database and access to it?" { send "y\r";exp_continue } "Reload privilege tables now?" { send "y\r";exp_continue } EOF mysql -uroot -p123qwe -e "GRANT ALL PRIVILEGES ON root.* TO 'root'@'%' IDENTIFIED BY '123qwe';"
创建django项目
# 创建appcenter项目 django-admin startproject appcenter cd appcenter python3 manage.py startapp rpm # 创建库 mysql -uroot -p123qwe -e "CREATE DATABASE appcenter CHARACTER SET utf8;" # 更新my.cnf cat << EOF > /etc/my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock symbolic-links=0 default-storage-engine = innodb innodb_file_per_table = on max_connections = 4096 collation-server = utf8_general_ci character-set-server = utf8 [mysqld_safe] log-error=/var/log/mariadb/mariadb.log pid-file=/var/run/mariadb/mariadb.pid [client] database = appcenter user = root password = 123qwe1 default-character-set = utf8 !includedir /etc/my.cnf.d EOF systemctl restart mariadb # 解决mysql在django中使用的bug sed -i "s/if version/#if version/g" /usr/local/python3/lib/python3.7/site-packages/django/db/backends/mysql/base.py sed -i "s/ raise/# raise/g" /usr/local/python3/lib/python3.7/site-packages/django/db/backends/mysql/base.py sed -i "s/query.decode/query.encode/g" /usr/local/python3/lib/python3.7/site-packages/django/db/backends/mysql/operations.py # pymysql替换MySQLdb sed -e "import pymysql\npymysql.install_as_MySQLdb()" >> appcenter/__init__.py # 创建超级用户 python3 manage.py createsuperuser # 启动服务 firewall-cmd --permanent --zone=public --add-port=8000/tcp firewall-cmd --reload python3 manage.py runserver 0.0.0.0:8000
nginx 发布django项目
# 安装uwsgi python3 -m pip install uwsgi --upgrade # 设置软连接 ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi # uwsgi启动 uwsgi --http :8000 --chdir /root/appcenter/ --module appcenter.wsgi # 配置uwsgi文件启动项目 mkdir /root/appcenter/script cat << EOF > /root/appcenter/uwsgi.ini # uwsig使用配置文件启动 [uwsgi] # 项目目录 chdir=/root/appcenter/ # 指定项目的application module=appcenter.wsgi # 指定sock的文件路径 socket=/root/appcenter/script/uwsgi.sock # 进程个数 workers=5 pidfile=/root/appcenter/script/uwsgi.pid # 指定IP端口 http=:8000 # 指定静态文件 #static-map=/static=/root/appcenter/static # 启动uwsgi的用户名和用户组 uid=root gid=root # 启用主进程 master=true # 序列化接受的内容,如果可能的话 thunder-lock=true # 启用线程 enable-threads=true # 设置自中断时间 harakiri=30 # 设置缓冲 post-buffering=4096 # 设置日志目录 daemonize=/root/appcenter/script/uwsgi.log EOF # 执行命令,启动项目 uwsgi --ini /root/appcenter/uwsgi.ini firewall-cmd --permanent --zone=public --add-port=80/tcp firewall-cmd --reload # 配置nginx使用代理 vim /usr/local/nginx/conf/nginx.conf upstream djangoserver { server 172.16.2.243:8000; } server { listen 80; server_name localhost; charset utf-8; client_max_body_size 75M; location / { proxy_pass http://djangoserver; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } systemctl stop nginx systemctl start nginx
效果图
相关推荐
- 有些人能留在你的心里,但不能留在你生活里。
-
有时候,你必须要明白,有些人能留在你的心里,但不能留在你生活里。Sometimes,youhavetorealize,Somepeoplecanstayinyourheart,...
- Python学不会来打我(34)python函数爬取百度图片_附源码
-
随着人工智能和大数据的发展,图像数据的获取变得越来越重要。作为Python初学者,掌握如何从网页中抓取图片并保存到本地是一项非常实用的技能。本文将手把手教你使用Python函数编写一个简单的百度图片...
- 软网推荐:图像变变变 一“软”见分晓
-
当我们仅需要改变一些图片的分辨率、裁减尺寸、添加水印、标注文本、更改图片颜色,或将一种图片转换为另一种格式时,总比较讨厌使用一些大型的图像处理软件,尤其是当尚未安装此类软件时,更是如此。实际上,只需一...
- 首款WP8.1图片搜索应用,搜照片得资料
-
首款WP8.1图片搜索应用,搜照片得资料出处:IT之家原创(天际)2014-11-1114:32:15评论WP之家报道,《反向图片搜索》(ReverseImageSearch)是Window...
- 盗墓笔记电视剧精美海报 盗墓笔记电视剧全集高清种子下载
-
出身“老九门”世家的吴邪,因身为考古学家的父母在某次保护国家文物行动时被国外盗墓团伙杀害,吴家为保护吴邪安全将他送去德国读书,因而吴邪对“考古”事业有着与生俱来的兴趣。在一次护宝过程中他偶然获得一张...
- 微软调整Win11 24H2装机策略:6月起36款预装应用改为完整版
-
IT之家7月16日消息,微软公司今天(7月16日)发布公告,表示自今年6月更新开始,已默认更新Windows1124H2和WindowsServer2025系统中预装...
- 谷歌手把手教你成为谣言终结者 | 域外
-
刺猬公社出品,必属原创,严禁转载。合作事宜,请联系微信号:yunlugongby贾宸琰编译、整理11月23日,由谷歌新闻实验室(GoogleNewsLab)联合Bellingcat、DigD...
- NAS 部署网盘资源搜索神器:全网资源一键搜,免费看剧听歌超爽!
-
还在为找不到想看的电影、电视剧、音乐而烦恼?还在各个网盘之间来回切换,浪费大量时间?今天就教你如何在NAS上部署aipan-netdisk-search,一款强大的网盘资源搜索神器,让你全网资源...
- 使用 Docker Compose 简化 INFINI Console 与 Easysearch 环境搭建
-
前言回顾在上一篇文章《搭建持久化的INFINIConsole与Easysearch容器环境》中,我们详细介绍了如何使用基础的dockerrun命令,手动启动和配置INFINICon...
- 为庆祝杜特尔特到访,这个国家宣布全国放假?
-
(观察者网讯)近日,一篇流传甚广的脸书推文称,为庆祝杜特尔特去年访问印度,印度宣布全国放假,并举办了街头集会以示欢迎。菲媒对此做出澄清,这则消息其实是“假新闻”。据《菲律宾世界日报》2日报道,该贴子...
- 一课译词:毛骨悚然(毛骨悚然的意思是?)
-
PhotobyMoosePhotosfromPexels“毛骨悚然”,汉语成语,意思是毛发竖起,脊梁骨发冷;形容恐惧惊骇的样子(withone'shairstandingonend...
- Bing Overtakes Google in China's PC Search Market, Fueled by AI and Microsoft Ecosystem
-
ScreenshotofBingChinahomepageTMTPOST--Inastunningturnintheglobalsearchenginerace,Mic...
- 找图不求人!6个以图搜图的识图网站推荐
-
【本文由小黑盒作者@crystalz于03月08日发布,转载请标明出处!】前言以图搜图,专业说法叫“反向图片搜索引擎”,是专门用来搜索相似图片、原始图片或图片来源的方法。常用来寻找现有图片的原始发布出...
- 浏览器功能和“油管”有什么关联?为什么要下载
-
现在有没有一款插件可以实现全部的功能,同时占用又小呢,主题主要是网站的一个外观,而且插件则主要是实现wordpress网站的一些功能,它不仅仅可以定制网站的外观,还可以实现很多插件的功能,搭载chro...
- 一周热门
- 最近发表
- 标签列表
-
- mybatiscollection (79)
- mqtt服务器 (88)
- keyerror (78)
- c#map (65)
- xftp6 (83)
- bt搜索 (75)
- c#var (76)
- xcode-select (66)
- mysql授权 (74)
- 下载测试 (70)
- linuxlink (65)
- pythonwget (67)
- androidinclude (65)
- libcrypto.so (74)
- linux安装minio (74)
- ubuntuunzip (67)
- vscode使用技巧 (83)
- secure-file-priv (67)
- vue阻止冒泡 (67)
- jquery跨域 (68)
- php写入文件 (73)
- kafkatools (66)
- mysql导出数据库 (66)
- jquery鼠标移入移出 (71)
- 取小数点后两位的函数 (73)