Linux从虚拟机创建到程序运行(ubuntu版)
实际工作中,总是需要开发环境、测试环境和生产环境,但是很多小伙伴是没有这么多可供使用的服务器的,尤其是学习使用阶段,可能因为不熟悉服务器的配置,重复的重启、安装、卸载等。我们需要有自己可以随意操作的linux系统。
提示:以下内容为本篇章正文,共八部分内容。
一、构建ubuntu虚拟机
构建虚拟机的工具是VirtualBox,由德国sun公司开发,目前被Oracle收购,全名是 Oracle VM VirtualBox。我这里借鉴了其他博主的文章,文章详细说明了windows安装VBox的各个步骤。这里面有部分内容缺失,一台独立运行的电脑需要系统、网络、存储这些基本配置,网络的相关内容在下一步中进行了补充。
- 下载安装文件
- 安装VirtualBox
- 新建虚拟机
- 配置虚拟机
- 安装Ubuntu
- 改分辨率(方式一)
- 改分辨率(方式二)
- 共享文件夹
参考链接:使用VirtualBox安装Ubuntu
二、管理虚拟机网络(网卡、端口、ip)
第一部分构建的过程中可以看到,VBox可以设置虚拟机的各项配置,因为不熟悉,很多也不是很明白,尤其是没有提供虚拟机和本地windows的网络和交互等,在这里我们有些知识是需要了解和掌握的。
VBox网络配置
这里我找到了一篇介绍虚拟机中网络配置的文章,可以进行参考,我是用的配置是网络1采用Host-Only模式,网络2使用NAT模式,满足了虚拟机上网和物理机通信。
桥接模式:实现虚拟机在真实的网络上;
NAT模式:实现虚拟机隐藏在物理机之后,能上网,但不能访问物理机;
Host-Only模式:实现虚拟机隐藏在物理机之后,不能上网,但可以访问物理机;
参考链接:搞懂虚拟机VirtualBox网络配置
虚拟机网络的应用
只掌握网络配置明显是不行的,网络配置实现了虚拟机上网和物理机通信,实际工作中有很多网络配置是需要改变系统的相关参数来满足我们的实际需要,比如下一步要实现的本地windows使用ssh链接ubuntu虚拟机需要开启系统的22端口,搭建web服务时需要开启80端口,开启域名https访问时开启443端口等,这样的场景还有很多。
虚拟机在使用时,跟我们在windows上一样,经常需要检查当前电脑网络中的ip,防火墙,端口等。在ubuntu虚拟机中,这些默认不是全部开放的,需要我们自己配置。
参考链接:Ubuntu系统中网络ip和端口管理
使用ssh链接ubuntu虚拟机
Ubuntu系统一般默认支持ssh,系统中默认安装了openssh-server和openssh-client。这里可以参考以下连接来熟悉ssh在系统中的一些常用linux命令。
参考链接:本地通过SSH连接Ubuntu虚拟机
修改Ubuntu的软件源
参考链接:Ubuntu安装和下载软件包
参考链接: sed -i命令详解及入门攻略
这两部完成后,我们已经可以在windows端通过ssh连接Ubuntu虚拟机,接下来我们看看Ubuntu系统的使用
三、ubuntu安装mysql数据库并用navicat连接
在使用mysql数据库的过程中,按照实际使用的版本安装是必须的,以下的参考链接可以实现这一需求。
- ubuntu安装mysql
- 启动和停止mysql
- 卸载mysql
- navicat远程连接mysql
- 删除账户
参考链接:Ubuntu虚拟机安装mysql并用Navicat连接
参考链接:MySQL 1130错误原因及解决方案
四、ubuntu安装postgresql数据库并用navicat链接
考虑到实际工作中可能用到地理信息的存储,虽然mysql也可以实现,但是postgresql能够更好的运用地理信息,postgresql的安装和链接参考如下;
- 安装
- 修改密码信息
- 远程访问设置
- 防火墙设置
- Navicat连接
- 一些常见操作postgresql的命令
如果上述使用过程中存在问题,还可以参考如下链接和相关命令
新建postgreslq数据库,PostgreSQL(含 PostGIS)
sudo apt update && sudo apt upgrade -y
sudo apt install postgresql postgresql-client postgis -y
sudo -u postgres psql
# 以下3条是数据库命令
CREATE DATABASE discern_db;
CREATE EXTENSION postgis;
SELECT PostGIS_version();
\q
# 重启数据库
sudo service postgresql restart
参考链接:Ubuntu安装与配置postgresql含远程连接教程
五、搭建web服务(nignx+uwsgi+django)
相关文章网络上很多,我这里找到一篇可以参考
参考链接:Nginx+uWSGI+Django部署web服务器
参考链接:Ubuntu环境下配置django+nginx+uwsgi
六、利用docker部署web服务
将4.5.6涉及内容打包完成,并实现一个可移植的镜像。
参考链接:Ubuntu的docker详细安装+使用
七、利用crontab设置定时任务并开机启动
Linux crontab是用来crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρ?νο?),原意是时间。通常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。当安装完成操作系统之后,默认便会启动此任务调度命令。crond 命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。
注意:新创建的 cron 任务,不会马上执行,至少要过 2 分钟后才可以,当然你可以重启 cron 来马上执行。
crontab定时
启动cron服务:sudo service cron restart
查看cron服务状态:sudo service cron status
查看cron日志:less /var/log/cron.log
设置开机自启动:chkconfig cron on
查看定时任务:crontab -l
修改定时任务: crontab -e
查看python3程序的绝对路径:whereis python3
py程序的绝对路径:pwd
设置每月10号定时执行python程序:* * 10 * * /usr/bin/python3.8 /home/ubuntu/Mercury/scripts/crontab_pic2commodity/crontab_month.py
设置每5分钟定时执行python程序:*/5 * * * * /usr/bin/python3.8 /home/ubuntu/Mercury/scripts/crontab_pic2commodity/crontab_pic2commodity.py >> /home/ubuntu/Mercury/scripts/crontab_pic2commodity/logg.log
crontab排错
查看ubuntu的cpu占用:top
查看单个pid的cpu占用:top -H -p 2798132
查看ubuntu的内存占用:free -h -w
通过ps查看该应用:$ ps aux|grep 281020
将错误和正确的log写入到指定文件 >>/home/ubuntu/Mercury/scripts/crontab_pic2commodity/logg.log
删除日志:cat /dev/null > logg.log
参考链接:Ubuntu下crontab的安装和使用
参考链接:crontab的定时操作
参考链接:Linux Crontab定时运行python程序
总结
希望经过这一次学习,能够在工作中帮助到大家,进一步熟悉了linux系统和相关功能的使用。