当前位置: 首页 > 编程日记 > 正文

Ubuntu阿里云搭建Mono.net环境

查看磁盘信息

我们买的系统默认情况下只是安装了系统,而数据盘需要自己挂载,例如我这里的系统占用20多G,还有40多G的数据盘默认是没有挂载的,首先我们运行df -h查看:

root@AY1212241134392134698:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 20G 1.4G 18G 7% /
udev 237M 4.0K 237M 1% /dev
tmpfs 99M 260K 98M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 246M 0 246M 0% /run/shm

可以看到文件系统里面只有一个/dev/xvda1大小是20G,我们是用fdisk -l 可以看到所有的硬盘:

root@AY1212241134392134698:~# fdisk -l

Disk /dev/xvda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0002bfb2

Device Boot      Start         End      Blocks   Id  System

/dev/xvda1 * 2048 41940991 20969472 83 Linux

Disk /dev/xvdb: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders, total 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/xvdb doesn't contain a valid partition table

上面显示了2块盘,其中第一块盘是Disk /dev/xvda 有21.5G的容量,已经装上了系统,而第二块Disk /dev/xvdb: 42.9 GB是没有挂载的,Disk /dev/xvdb doesn't contain a valid partition table表明没有分区表。
分区与挂载

下面对/dev/xvdb进行分区与挂载,使用fdisk /dev/xvdb 命令

root@AY1212241134392134698:~# fdisk /dev/xvdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xabc9a42f.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n ===========> 这里输入n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p ===========> 这里输入p
Partition number (1-4, default 1): 1 ===========> 这里输入1
First sector (2048-83886079, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-83886079, default 83886079):
Using default value 83886079

Command (m for help): wq ===========> 这里输入wq保存设置
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

再次输入fdisk -l可以查看是否分区成功

root@AY1212241134392134698:~# fdisk -l

Disk /dev/xvda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0002bfb2

Device Boot      Start         End      Blocks   Id  System

/dev/xvda1 * 2048 41940991 20969472 83 Linux

Disk /dev/xvdb: 42.9 GB, 42949672960 bytes
171 heads, 5 sectors/track, 98112 cylinders, total 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xabc9a42f

Device Boot      Start         End      Blocks   Id  System

/dev/xvdb1 2048 83886079 41942016 83 Linux

可以看到/dev/xvdb1已经有内容了,System为Linux。

为分区指定文件系统

下面对分区进行格式化,我们将分区格式化为ext4文件系统。可以使用df -hT 查看分区使用的文件系统,我们可以看到Disk /dev/xvda使用的文件系统就是ext4,所以我们将/dev/xvdb1也格式化为同样的ext4文件系统

sudo mkfs -t ext4 /dev/xvdb1 #格式化分区/dev/xvdb1并指定文件系统为ext4
将分区挂载到目录

/dev/xvdb1 /root/test ext4 defaults, 0 2 # 挂载分区到目录/root/test中,此目录可以自己指定,此命令会将挂载信息写到/etc/fstab中
安装mono

sudo apt-get install mono-complete 这个是安装mono的完整版所以可能要安装很多东西,包括桌面开发的东西。mono-utils mono-xsp monodoc-http mono-gmcs
安装Nginx

sudo apt-get update
sudo apt-get install nginx

Nginx的启动与停止:
sudo /etc/init.d/nginx start
sudo /etc/init.d/nginx stop

配置nginx:

vi /etc/nginx/nginx.conf #这个文件是关于nginx服务器的配置,这里面配置的网站应该是服务器的默认网站
在http节点中加上:
server {

    listen       80;server_name  localhost;location ~ {root  /root/test/www;    # 这个目录也是你自己指定的,表示你的网站的根目录index  index.html index.htm;fastcgi_pass  127.0.0.1:8000; #此处端口要与fastcgi映射的端口一致fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name;include /etc/nginx/fastcgi_params;}
}

vi /etc/nginx/sites-enabled/default #这个文件是关于nginx虚拟主机的配置
修改里面的server节点中的location ~节点与 nginx.conf中的server节点中一致,并修改root的值与 location ~ 中root的值一致
安装svn

这里要安装svn主要是我们需要安装fastcgi-mono-server,而fastcgi-mono-server不能通过apt-get install进行安装,只能通过源码安装,所以这里我们先安装svn通过svn命令得到fastcgi-mono-server的源码,再自己编译,安装。因为nginx要解析aspx的网页必须通过fastcgi-mono-server去调用mono的运行时。

sudo apt-get install subversion
获取fastcgi-mono-server 源码

svn co http://mono-soc-2007.googlecode.com/svn/trunk/brian/FastCgi/ fastcgi-mono-server
安装编译环境

阿里云默认是没有编译环境的,需要自己安装
sudo apt-get install automake
sudo apt-get install gcc g++ make # 会自动安装libc的库以及一些需要的工具,例如binutils等
编译fastcgi-mono-server

你或许要cd到fastcgi-mono-server目录下去运行./autogen.sh脚本:
./autogen.sh # 如果运行有问题,请使用bash执行此脚本,一种方法是修改/autogen.sh的第一行#!/bin/sh修改为#!/bin/bash

上面的shell会生成Makefile,下面进行编译:
make
安装fastcgi-mono-server

sudo make install

安装好之后,输入 fastcgi-mono-server2 --help 和 fastcgi-mono-server --help 都会有相关选项出来
或者直接输入fastcgi-mono-server 连续按2个tab键也会列出两个fastcgi-mono-server和fastcgi-mono-server2命令,表示安装成功。
启动fast-cgi

要注意下面的目录/root/test/www与上面配置的目录是一致的:
sudo fastcgi-mono-server2 /socket=tcp:8000 /address=127.0.0.1 /applications=/:/root/test/www >/dev/null 2>&1 &

其实到此为止你的环境应该搭建好了,你可以在/root/test/www下面添加网页,例如Default.aspx,内容如下进行测试,这也是我的测试网页的内容。

<%@ Page Language="C#" %>
<%

int number = 0;
if(Application["number"]!=null)
{number = int.Parse(Application["number"].ToString());number ++;
}
Application["number"] = number;

%>

<%="Hello Mono.net "+number.ToString() %>
安装ftp服务器

我们使用的是vsftpd:

sudo apt-get update
sudo apt-get install vsftpd

启动与停止:
/etc/init.d/vsftpd start
/etc/init.d/vsftpd stop
/etc/init.d/vsftpd restart

ftp的配置:
vi /etc/vsftpd.conf

打开这么几个属性:
local_enable=YES #允许linux系统上的本机用户作为ftp账户访问ftp
write_enable=YES #允许写,这个是针对非匿名用户的
local_umask=022 # 本机用户的umask
connect_from_port_20=YES #使用20端口传递数据
idle_session_timeout=600 # 会话超时时间
data_connection_timeout=120 # 数据连接超时时间
chroot_local_user=YES #如果设为YES,本地用户登录后将被(默认地)锁定在虚根下,并被放在他的home目录下。

vsftpd的用户有几种,一种是使用linux操作系统的系统账户当作ftp用户使用,另一种是使用叫做ftp虚拟用户的用户,此用户是vsftpd识别的用户,但是不能登录系统,也不是系统本身的账户。当然所有这种虚拟用户登录到ftp之后对文件的读写权限是寄宿在一个真实的linux系统用户上面额。这里我们仅仅说明直接使用系统本身就有的账户去登录ftp,所以需要打开local_enbale选项。

添加一个系统账户专门用来操作ftp,ftp不能使用root登录。

useradd -d /home/ftpdir -s /sbin/nologin ftptest #添加一个叫做ftptest的系统账户,该用户不能通过ssh或者telnet登录系统,只能通过ftp访问其home目录,该home目录就是此用户

在ftp共享文件的目录,其home目录是/home/ftpdir ,这个可以自己指定,但是一定要对该目录有访问权限,否则ftp登陆的时候进不去.

passwd ftptest #为该用户指定密码

要注意的是:指定chroot_local_user=YES之后,必须设定ftp的虚根目录不能有写权限,这是新版的vsftpd为了安全设定的,否则会出现登录不进去的情况,报如下错误:
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
意思是,如果开启了chroot来控制用户路径,则用户不能再具有该用户根目录的写的权限。
解决办法:
去掉该用户根目录的写的权限,再新建一目录,以后用新目录

sudo chmod a-w /home/用户名

sudo mkdir /home/用户名/新目录名

其实很不方便,用户登陆进去会发现必须要再进一层目录才能找到自己的文件

/etc/init.d/vsftpd restart #重启vsftpd就可以了

提示:如果已经存在用户,但是需要禁止该用户登录liux系统,可以直接使用root用户编辑/etc/passwd文件,修改该用户对应的行的最后面的shell路径就可以了。

相关文章:

MongoDB分布式原理以及read-preference和readConcern解决读写一致性问题

MongoDB词汇表&#xff1a; https://docs.mongodb.com/manual/reference/glossary/#term-replica-set MongoDB分布式原理 primary In a replica set, the primary is the member that receives all write operations. See Primary. 在副本集中&#xff0c;主库是接收所有写…

Lua(Codea) 中 table.insert 越界错误原因分析

2019独角兽企业重金招聘Python工程师标准>>> Lua(Codea) 中 table.insert(touches, touch.id, touch) 越界错误原因分析 背景介绍 在 Codea 上运行其他人以前写的代码时, 发现某段处理 touch 事件的代码总是报错, 开始报浮点数没有整型的表示, 修改代码增加类型转换…

【MATLAB】符号数学计算(六):符号函数的操作

一、复合函数的操作 compose(f,g)&#xff1a;返回复合函数f(g(y))&#xff0c;此处ff(x)&#xff0c;gg(y)&#xff1b;compose(f,g,x,z)&#xff1a;返回自变量是z的复合函数f(g(z)) >> syms x y >> fsym(xx^-1); >> gsym(sin(x)); >> h(1y^2); >…

java中如何应对读改写场景

前言 volatile可以确保数据及时刷新到主存&#xff0c;但是对于读改写场景还是无能为力 举个例子 public class ConcurrentHashMapExample {public static void main(String[] args) throws InterruptedException {Map<String, Long> ordersMap new ConcurrentHashMap&l…

Apache Hudi的写时复制和读时合并

Apache Hudi http://hudi.apache.org/ http://hudi.apache.org/docs/quick-start-guide.html Hudi是什么 Hudi将流处理带到大数据&#xff0c;提供新数据&#xff0c;同时比传统批处理效率高一个数量级。 Hudi可以帮助你构建高效的数据湖&#xff0c;解决一些最复杂的底层…

顶尖程序员不同于常人的 5 个区别

2019独角兽企业重金招聘Python工程师标准>>> 《The Effective Engineer》的作者在写书的过程中&#xff0c;为了了解那些顶级程序员和普通程序员的区别&#xff0c;采访了很多硅谷顶级科技公司的顶尖软件工程师。他发现这些给世界带来巨大影响的的工程师们至少有以下…

【MATLAB】符号数学计算(七):符号微积分、符号微分方程求解、符号代数方程求解

一、符号表达式的极限 limit(F,x,a)&#xff1a;求当时&#xff0c;符号表达式F的极限。limit(F,a)&#xff1a;符号表达式F采用默认自变量&#xff08;可由函数findsym求得&#xff09;&#xff0c;该函数求F的自变量趋于a时的极限值。limit(F)&#xff1a;符号表达式采用默认…

Qt运行时中文乱码的解决办法

QT5的解决办法&#xff0c;在类之前添加&#xff1a;   #pragma execution_character_set("utf-8")QT4解决办法&#xff1a; QTextCodec::setCodecForLocale(QTextCodec::codecForLocale());转载于:https://www.cnblogs.com/bjxingch/articles/9992998.html

更换yum的源为阿里云或者网易

1.备份原本的yum源&#xff1a; #mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2.下载阿里云的yum源&#xff1a; CentOS6,CentOS7,CentOS8下对应的即可 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Ce…

socket编程:多路复用I/O服务端客户端之poll

一. 关于poll对于IO复用模型&#xff0c;其优点无疑是免去了对一个个IO事件就绪的等待&#xff0c;转而代之的是同时对多个IO数据的检测&#xff0c;当检测等待的事件中至少有一个就绪的时候&#xff0c;就会返回告诉用户进程“已经有数据准备好了&#xff0c;快看看是哪个赶紧…

【MATLAB】符号数学计算(八):符号分析可视化

一、funtool分析界面 在命令行窗口中输入&#xff1a; funtool 这里就说一下第四排&#xff1a; Insert&#xff1a;把当前激活窗的函数写入列表Cycle&#xff1a;依次循环显示fxlist中的函数Delete&#xff1a;从fxlist列表中删除激活窗的函数Reset&#xff1a;使计算器恢复…

java 根据实体对象生成 增删改的SQL语句 ModelToSQL

2019独角兽企业重金招聘Python工程师标准>>> java 根据实体对象生成 增删改的SQL语句 ModelToSQL 转载于:https://my.oschina.net/miaojiangmin/blog/2907010

深入浅出SpringBoot源码分析

Spring源码非常多,不要迷失在源码的汪洋大海里,抓住主要脉络,有需要再研究即可。 Bean的初始化 1.发现所有的bean ComponentScanAnnotationParser.parse()调用doScan()扫包 这里只是扫用户定义的bean,系统的自然不用扫 ClassPathBeanDefinitionScanner.doScan protected…

HBase基本知识

为什么80%的码农都做不了架构师&#xff1f;>>> 概述 HBase 特性&#xff1a; 强一致性读写: HBase 不是 "最终一致性(eventually consistent)" 数据存储. 这让它很适合高速计数聚合类任务。自动分片(Automatic sharding): HBase 表通过region分布在集群…

【编程题】猜年龄

题目标题: 猜年龄 美国数学家维纳(N.Wiener) 智力早熟&#xff0c;11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。 一次&#xff0c;他参加某个重要会议&#xff0c;年轻的脸孔引人注目。于是有人询问他的年龄&#xff0c;他回答说&#xff1a; “我年龄的立方是个…

XenServer和VMware vSphere技术比较

此次将Citrix XenServer7.1和VMware ESXi 6.5从技术角度进行比较&#xff0c;并从企业角度对企业关心的项进行比较。主要包含市场地位、服务器虚拟化底层稳定性、管理架构、兼容性上进行分析。 市场地位 VMware在虚拟化的地位类似于大型存储中的EMC、小型机中IBM、网络中的思科…

阿里巴巴开源的缓存框架JetCache创建缓存

官网:https://github.com/alibaba/jetcache/wiki/CacheAPI_CN ======================= 多层嵌套缓存无效的问题: https://github.com/alibaba/jetcache/issues/424 某个service的方法加缓存注解,然后引用同一个类的另一个加缓存注解service的方法,这样必须在类里面注入…

【Python】百度翻译的爬虫实现(前篇)

该程序只能实现中文到英文的翻译 import requestsimport jsonurl "http://fanyi.baidu.com/basetrans"query_str input("请输入要翻译成英文的内容&#xff1a;")data{ "query": query_str,"from": "zh","to"…

github每次推送都要输入用户名和密码

/****************************************************************************** github每次推送都要输入用户名和密码* 说明&#xff1a;* 今天开始使用github管理一些东西&#xff0c;但是每次提交都出现要输入用户名和密码&#xff0c;* 这简直让人…

ELASTIC SEARCH 性能调优

ELASTICSEARCH 性能调优建议 创建索引调优 1.在创建索引的使用使用批量的方式导入到ES。 2.使用多线程的方式导入数据库。 3.增加默认刷新时间。 默认的刷新时间是1秒钟&#xff0c;这样会产生太多小的SEGMENT&#xff0c;导致未来的合并压力&#xff0c;如果调整这个大小&…

Android开源中国客户端学习 (自定义View)左右滑动控件ScrollLayout

左右滑动的控件我们使用的也是非常多了,但是基本上都是使用的viewpager 等 android基础的控件,那么我们有么有考虑过查看他的源码进行定制呢?当然,如果你自我感觉非常好的话可以自己定制一个,osc的ScrollLayout就是自己定义的View 和Viewpager的区别还是不小的 代码不是很多不…

【Python】有道翻译的爬虫实现(前篇)

import requestsimport jsonurl "http://fanyi.youdao.com/translate_o?smartresultdict&smartresultrule"data {"i": "我喜欢学习", "from": "AUTO", "to": "AUTO", "smartresult":&q…

自动生成纯文本表格的工具

https://tableconvert.com/?outputtext 有时候需要写文档的时候生成这种纯文本表格&#xff0c;这个工具真的很方便&#xff0c;贴上数据就可以了。

《Java编程思想》笔记13.字符串

点击进入我的博客 字符串操作是计算机程序设计中最常见的行为 13.1 不可变String String底层是由char[]实现的&#xff0c;是不可变的。看起来会改变String的方法&#xff0c;实际上都是创建了一个新的String对象&#xff0c;任何指向它的引用都不可能改变它本身的值。 13.2 重…

【Python】有道翻译的爬虫实现(后篇)

前面说到&#xff0c;有道翻译和百度翻译不同 &#xff08;百度翻译是模拟iPhone手机&#xff0c;可能百度翻译用Pc端也会有类似的问题&#xff0c;有道翻译的User—Agent是Pc端&#xff09; 每一次的salt和sign都不一样&#xff0c;这是什么原因产生的呢&#xff1f; 一、每…

Redis客户端JetCache的单机版和集群版的配置

jetcache基础应用参考这个:阿里巴巴开源的缓存框架JetCache创建缓存 1.JetCache的jedis配置 https://github.com/alibaba/jetcache/wiki/Config_CN jedis配置:apollo版 jetcache.remote.default.type = redis jetcache.remote.default.keyConvertor = fastjson jetcache.r…

5 分钟一次理解 Spring IOC !

今天我们分析一下 spring 的 IOC&#xff0c;梳理一下 IOC 和 DI 的概念与原理。在网上看到开涛有篇文章写的不错&#xff0c;提取其中一部分精华内容并做一些解读。 1.1.IOC是什么&#xff1f; Ioc—Inversion of Control&#xff0c;即“控制反转”&#xff0c;不是什么技术&…

工作两年的编程感想

2019独角兽企业重金招聘Python工程师标准>>> 工作已有两年了&#xff0c;两年不长也不短了&#xff0c;程序员的辛酸苦乐也都体验了一些&#xff0c;故写此博客既为留念&#xff0c;也为接下来的两年留下一个参考点。 首先需要声明的是&#xff0c;本人的工作是Java…

微服务重构心得

现在都在做微服务,看起来就是做服务拆分比较简单,但是实际上真正重构起来又遇到许许多多的问题。 微服务重构常见问题 1.领域驱动模型的困扰 比如听到很多理论比如领域驱动,那么到底需要不需要学习或者使用领域驱动呢? 2.系统的复杂性 重构的时候发现系统之间调用非常…

【Python】百度翻译的爬虫实现(后篇)

这个程序可以实现中英文的自动识别然后进行翻译 看着程序就很好理解。 import requestsimport jsonclass Translation():翻译def __init__(self,content):self.content contentself.url "http://fanyi.baidu.com/basetrans"self.headers {"User-Agent"…