最简单的部署Python项目操作,部署比较简单这块也不做详细描述了。基本上都是常规命令~ ~
这些东西基本上都可以灵活运用到其他地方,不仅仅只适用于此项目~ ~
1 更换Centos源 由于系统默认使用国外的源更新软件时太慢,所以更换为国内的更新源。
阿里云的源
1 [root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
网易云的源
1 2 [root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo [root@localhost ~]# yum makecache
2 Python3配置 2.1 安装Python3 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 # 下载Python3.7 [root@localhost ~]# wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz # 解压 [root@localhost ~]# tar -xvf Python-3.7.0.tar.xz [root@localhost ~]# cd Python-3.7.0 # 更新 [root@localhost ~]# yum update -y # 安装Python3.7的依赖 [root@localhost ~]# yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel libffi-devel gcc make # 将python安装到/usr/local /python3 [root@localhost ~]# ./configure --prefix=/usr/local/python3 # 编译并安装 [root@localhost ~]# make && make install # 建立python3软连接 [root@localhost ~]# ln -s /usr/local/python3/bin/python3 /usr/bin/python3 # 建立pip3软连接 [root@localhost ~]# ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3 # 更新升级pip3 [root@localhost ~]# pip3 install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple # 将/usr/local /python3/bin加入PATH [root@localhost ~]# vi /etc/profile # 在文件末尾添加 export PATH=$PATH:/usr/local/python3/bin # 环境变量在配置信息中生效 [root@localhost ~]# source /etc/profile
2.2 Python3.x 设置默认 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 # 修改yum配置 [root@localhost ~]# vi /usr/bin/yum 将第一行 #! /usr/bin/python 修改为#! /usr/bin/python2 # 修改urlgrabber-ext-down配置 [root@localhost ~]# vi /usr/libexec/urlgrabber-ext-down 将第一行 #! /usr/bin/python 修改为#! /usr/bin/python2 # 删除原有的软连接 [root@localhost ~]# rm -rf /usr/bin/python # 建立新的软连接 [root@localhost ~]# ln -s /usr/local/python3/bin/python3 /usr/bin/python # 查看版本 [root@localhost ~]# python Python 3.7.0 (default, Jan 23 2021, 02:55:09) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux Type "help", "copyright", "credits" or "license" for more information. > >> # 修改pip软连接 [root@localhost ~]# rm -rf /usr/bin/pip # 建立新的pip软连接 [root@localhost ~]# ln -s /usr/bin/pip3 /usr/bin/pip # 安装uWSGI服务 [root@localhost ~]# pip install uWSGI==2.0.18 # 建立新的uwsgi软连接(下面自启脚本会用到) [root@localhost ~]# ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
2.3 安装docker-compose 1 2 3 4 5 6 7 8 9 # 安装docker-compose [root@localhost ~]# curl -L https://github.com/docker/compose/releases/download/1.26.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose [root@localhost ~]# chmod +x /usr/local/bin/docker-compose [root@localhost ~]# ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose # 安装依赖工具bash-complete [root@localhost ~]# yum install -y bash-completion [root@localhost ~]# source /usr/share/bash-completion/completions/docker [root@localhost ~]# source /usr/share/bash-completion/bash_completion
3 uwsgi开机自启服务 创建hexo-blog-admin.service [Centos服务脚本]文件,按下面操作即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 # 1.进入脚本目录 [root@localhost ~]# cd /lib/systemd/system/ # 2.创建脚本 [root@localhost ~]# vi hexo-blog-admin.service # 虚线表示文件中的配置 ------------------------------------------------------------------------------------------------ [Unit] # 脚本描述 Description=hexo-blog-admin After=syslog.target network.target remote-fs.target nss-lookup.target [Service] Type=forking # 启动uwsgi(/home/lmay/services/blog/hexo-blog-admin/hexo-blog-admin.ini 脚本根据自己实际位置调整) ExecStart=/usr/bin/uwsgi -d --ini /home/lmay/services/blog/hexo-blog-admin/hexo-blog-admin.ini # 停止uwsgi ExecStop=killall -9 uwsgi Restart=always PrivateTmp=true [Install] WantedBy=multi-user.target ------------------------------------------------------------------------------------------------ # 3.设置脚本开机自启 [root@localhost ~]# systemctl enable hexo-blog-admin.service # 4.常用命令 重新加载service文件: systemctl daemon-reload 启动一个服务:systemctl start xxx.service 关闭一个服务:systemctl stop xxx.service 重启一个服务:systemctl restart xxx.service 显示一个服务的状态:systemctl status xxx.service 在开机时启用一个服务:systemctl enable xxx.service 在开机时禁用一个服务:systemctl disable xxx.service 查看服务是否开机启动:systemctl is-enabled xxx.service 查看已启动的服务列表:systemctl list-unit-files|grep enabled 查看启动失败的服务列表:systemctl --failed
4 项目依赖(Docker) docker更简单了,脚本基本上已经写好。一键执行即可~~ 因为直接把写好的init.sh复制到Linux下,不知道为啥不能正常执行。故直接手动在Linux中创建一个init.sh脚本,然后把写好的命令直接复制过去即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 # 创建脚本 [root@localhost ~]# vi init.sh # 脚本授权 [root@localhost ~]# chmod 777 init.sh # 查看文件 [root@nacos blog]# ll total 24 # 自动部署脚本 -rwxrwxrwx 1 root root 1978 Jan 23 03:07 init.sh # 核心文件(直接复制过来即可) -rw-r--r-- 1 root root 2095 Jan 23 03:05 docker-compose.yml # 项目放置,随心所欲(项目中的一些配置,根据自己实际情况调整) drwxr-xr-x 7 root root 4096 Jan 23 04:36 hexo-blog-admin # 部署依赖服务 [root@nacos blog]# ./init.sh # # Docker Compose Shell Script # Blog: www.lmaye.com # Email: lmay@lmaye.com # ---> create [nginx] directory start. ---> create [minio] directory start. ---> create [mongo] directory start. ===> create directory success. ---> move [nginx] config file start. ./init.sh: line 48: [: too many arguments ===> move config files success. > >>>>>>>>>>>>>>>>> The End <<<<<<<<<<<<<<<<<< ==================> Docker deploy Start <================== Creating network "blog_default" with the default driver Pulling nginx (nginx:1.16)... ... ... ... # 等执行完成即可
5 Docker Nginx代理宿主机服务 安装Docker时会在宿主机安装一个虚拟网关 docker0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 # 查询docker0的IP地址 [root@localhost ~]# ip addr show docker0 3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 02:42:55:33:a8:24 brd ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0 valid_lft forever preferred_lft forever # 配置docker上安装的nginx server { listen 80; server_name www.lmaye.com; location / { # 设置最大允许上传单个的文件大小 client_max_body_size 100m; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 反向代理到宿主机服务 proxy_pass http://172.17.0.1:8080; } }
6 源码地址 本项目开源,仅供学习参考与个人使用!如有更好的方案和idea,欢迎互相交流!如您觉得该项目对您有所帮助,欢迎点击右上方的Star标记,给予支持!!!谢谢 ~ ~ 如果有更好的idea也欢迎互相交流,联系方式博客菜单about 注:项目已升级文件存储可切换MinIO,MinIO更简便、自带文件管理端。之前的FastDFS方式依然支持~ ~Hexo Blog Admin 源码地址