最近做的项目,由于预算有限,公司决定不采购Windows服务器,而采购基于Linux的服务器。

一般的VPS服务器,如果使用Windows系统,那么Windows Server2012\2016安装好后,就占用1GB的内存了;只要运行起来,2G的内存就用掉了;装上SqlServer、跑个.net,4G内存是标配,用户数量稍微多些4G内存也捉襟见肘了;分配2个VCpu,在桌面状态下不运行任何程序,每个核心的占用率在15%~20%左右。

大家知道64位的CentOS7装好后内存占用是多少吗,用free看了下,不到150兆;

64位的Ubutu16.04装好后内存占用多少?40MB

用过Linux Server,不禁赞叹其系统的精简和高效,没有一点浪费内存和CPU的地方,所有的资源都用在刀刃上;难怪微软在《.NET 微服务:适用于容器化 .NET 应用程序的体系结构》一书上说,基于.Net Core的ASP.net比传统ASP.net要快10倍以上。开发和运维.NET Core,首推Linux下的Container环境。Windows Server不停的在做Server-Core和Nano-Server,也是在不断地做减法,以适应形势。多年以来.net一直干不过java,操作系统也是个很大原因。

好了,先不扯开发,买了X里云的VPS,默认用root SSH远程登录上去的,这跟我们平时自己装的很不一样,没有第二个用户,上去也不用su,也用不着sudo。

这里把整个流程记录下来,方便大家配置和部署(如果自己找资料估计要配个一、两天)

  • 安装Mysql
apt-get update
apt-get install mysql-server
apt-get install mysql-client
apt-get install libmysqlclient-dev
安全选项:mysql_secure_installation
测试状态:systemctl status mysql.service

以root登录后,添加mysql远程访问用户:

GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
flush privileges;

退出mysql命令行,编辑启动文件

 vi /etc/mysql/mysql.conf.d/mysqld.cnf

linux下可以用vi,可以用vim,也可以用nano(估计有数十种编辑器)

注释 bind-address = 127.0.0.1
    重启服务或系统

登录mysql,建库

CREATE DATABASE `数据库名` /*!40100 COLLATE 'utf8_unicode_ci' */;

开发的同学注意了,在Windows下,Mysql不管是是5.7还是8.0,数据库表名默认都是不区分大小写的,而Linux下数据库表名都是区分大小写的,会导致用脚本导出的数据库在Linux无法正常使用。需要改Windows下Mysql的配置。

  • 安装Postgresql

为什么要用Postgresql?Linux下可以安装SqlServer2017/2019嘛,但是SqlServer On Linux的系统需求是内存大于3.25G。而且非商业授权的Express版本只能用到1G内存多一点,可想而知用户数量多了后会是怎样一个状况。安装多个实例?

Postgresql是最接近Oracle框架的Sql,不管从表空间、语法、Schema、函数都无比类似Oracle,据说还有个特别的企业版本完全兼容Oracle,可以无缝的把Oracle应用迁移过来,帮企业省数十万$;它的性能、事务、扩展支持等都十分强大(支持几乎所有语言的扩展但是不支持.net的扩展),采用比较奇葩的多进程工作方式。开发社区里有不少中国人。最新版本11,我们觉得9、10的版本也够了。

wget -q -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
apt update
apt install postgresql- -y

装好后使用postgres管理用户登录

sudo -u postgres psql

配置、管理用户等。

使用Mysql还是Postgresql根据自己的业务需要,如果是一般的互联网项目,单表读/写比较多的,开发人员水平参差不齐的,建议使用Mysql;如果是企级项目、云平台管理项目,使用Postgresql,里面有大量的扩展和特性以及事务属性供使用,以后招OracleDBA方便维护。关于Postgresql里面的一些特殊使用技巧我另外还有文章来描述。

  • 安装Redis
apt-get install redis-server

查看状态

/etc/init.d/redis-server status

编辑redis配置文件

vi /etc/redis/redis.conf

Redis和Postgreql在Linux下的安装包只有几MB,SqlServerOnLinux的实际安装包也就一百多兆。

  • 安装.Net Core
apt-get install curl
wget -q https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb
dpkg -i packages-microsoft-prod.deb
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-sdk-2.2
  • 安装VsFtp

建立一个只能通过ftp登录的用户,固定目录,其他用户不能登录

apt-get install vsftpd
useradd FTP用户名 -g ftp -d /var/www
passwd FTP用户名 密码 cd /
mkdir www
chmod -R /var/www
usermod -s /sbin/nologin FTP用户名

编辑vi vsftpd.conf,需要启用名单用户

nano /etc/vsftpd.conf
取消注释vsftpd.chroot_list nano /etc/vsftpd.chroot_list

只写入FTP用户名

安装Iptables

apt-get install iptables-persistent
iptables -A INPUT -p tcp --dport 端口号 -j ACCEPT
netfilter-persistent save
netfilter-persistent reload
  • 运行.NET Core程序

用FTP用户上传你的代码,运行

dotnet xxx.dll

网站能打开,说明一切OK

curl http://xxxxxxxxx:xx

把你的ASP.net程序配置成服务启动:

nano /etc/systemd/system/kestrel-xxx.service

内容如下:

[Unit]
Description=Example .NET Web API App running on Ubuntu [Service]
WorkingDirectory=/var/www
ExecStart=/usr/bin/dotnet /var/www/WebApplication3.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-example
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false [Install]
WantedBy=multi-user.target

检测这个服务的状态:

systemctl enable kestrel-xxx.service
systemctl start kestrel-xxx.service
systemctl stop kestrel-xxx.service
systemctl status kestrelel-xxx.service
  • 安装MongoDb
sudo apt-get install mongodb
mongo
use admin
db.createUser( {user: "admin",pwd: "123456",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]})

  

SAAS云平台搭建札记系列文章:

SAAS云平台搭建札记: (一)浅论SAAS多租户自助云服务平台的产品、服务和订单

SAAS云平台搭建札记: (二)Linux Unbutu下.Net Core整套运行环境的搭建

SAAS云平台搭建札记: (二) Linux Ubutu下.Net Core整套运行环境的搭建的更多相关文章

  1. WebAssembly学习(二):Windows10下WebAssembly C/C++编译环境的搭建与Hello World尝试

    首先,不论是在Windows.Linux还是Mac上,Webassembly的编译都是主要依赖于Emscripten SDK这个工具的.但是,在这里必须要吐槽一下,不论是WebAssembly官网.W ...

  2. SAAS云平台搭建札记: (一) 浅论SAAS多租户自助云服务平台的产品、服务和订单

    最近在做一个多租户的云SAAS软件自助服务平台,途中遇到很多问题,我会将一些心得.体会逐渐分享出来,和大家一起探讨.这是本系列的第一篇文章. 大家知道,要做一个全自助服务的SAAS云平台是比较复杂的, ...

  3. linux系统下Nagios+rrdtool+Pnp4nagios监控环境的搭建

    环境中的软件版本>>>>>>>>>>>>>>>>>>nagios版本:3.5.1rrdtoo ...

  4. SAAS云平台搭建札记: (三) AntDesign + .Net Core WebAPI权限控制、动态菜单的生成

    我们知道,当下最火的前端框架,非蚂蚁金服的AntDesign莫属,这个框架不仅在国内非常有名,在国外GitHub上React前端框架也排名第一.而且这个框架涵盖了React.Vue.Angular等多 ...

  5. SAAS云平台搭建札记: (四) AntD For React使用react-router-dom路由接收不同参数页面不刷新的问题

    在.net开发员眼里,如果使用MVC,根据路由匹配原则,可以通过各种方式接收参数,比如 /Post/List/1, /Post/List/2,或者 /Post/List?id=1,/Post/List ...

  6. Linux学习心得之 Linux下命令行Android开发环境的搭建

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Linux学习心得之 Linux下命令行Android开发环境的搭建 1. 前言2. Jav ...

  7. Java开发和运行环境的搭建

    Java开发需要准备的东西? JDK+Eclipse 其中JDK的意思是Java开发工具包,Eclipse是进行用于做Java程序开发的工具(当然你也可以用记事本什么的去做). 其他开发工具:JCre ...

  8. Cocos发展Visual Studio下一个libcurl图书馆开发环境的搭建

    我们解释win32在Visual Studio下一个libcurl图书馆开发环境的搭建.Cocos2d-x发动机实际上与Win32在访问libcurl库.Cocos2d-x 3.x在libcurl库文 ...

  9. 《算法》第四版 IDEA 运行环境的搭建

    <算法>第四版 IDEA 运行环境的搭建 新建 模板 小书匠 在搭建之初,我是想不到会出现如此之多的问题.我看了网上的大部分教程,都是基于Eclipse搭建的,还没有使用IDEA搭建的教程 ...

随机推荐

  1. 3.网络编程-tcp的服务器简单实现

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/1/13 22:03 # @Author : ChenAdong # @ema ...

  2. EF 排序扩展

    public static class LinqOrderEx { private static IOrderedQueryable<T> OrderingHelper<T>( ...

  3. 常用Linux 服务器命令--各种性能指标命令

    如果你想知道你的服务器正在做干什么,你就需要了解一些基本的命令,一旦你精通了这些命令,那你就是一个专业的 Linux 系统管理员. 监控命令## iostat### iostat命令用来显示存储系统的 ...

  4. fedora 28 , firewalld 防火墙控制,firewall-cmd 管理防火墙规则

    今天,在使用fedora时,需要修改防火墙规则,一时间忘记了命令是什么,这里进行记录一下. 目前 fedora 28/ centos 7 使用 firewalld 作为防火墙软件:下面我就怎么简单管理 ...

  5. nginx1.14的安装

    编译安装nginx1.14.2 #拷贝指定文件到当前目录下[root@localhost ~]# find /usr/share -iname "*.jpg" -exec cp { ...

  6. oracle数据库用户基本操作

    每个数据库都有一系列的用户,为了访问数据库,用户必须使用用户名等信息先连接上数据库实例,oracle数据库提供了多种方式来管理用户安全.创建用户的时候,可以通过授权等操作来限制用户能访问的资源以及一些 ...

  7. VS2015安装与C++进行简单单元测试

    1:VS2015是微软最新发布的编译器,http://www.itellyou.cn/这是我们的北航大神助教提供的下载网址,以前我们都是自己在网上找,找到的总不是那么如意,这下大神助教提供的网址就好好 ...

  8. Alpha版本 - 测试报告

    Alpha版本 - 测试报告 总体测试计划 前端 模块 子模块 测试项 预期结果 测试工具 执行人 登录/注册模块 无网络 提示无网异常 robolectric 陈龙江 登录 输入用户名/密码为空,点 ...

  9. NetCore开源项目集合

    具体见:https://github.com/thangchung/awesome-dotnet-core 半年前看到的,今天又看到了,记录下. 框架类: ZKWeb ABP General ASP. ...

  10. Python 使用 xlwings 往 excel中写入一列数据的两种方法

    1.准备一个二维列表,然后再range后面不指定任何选项,可以输出该二维列表中数据在一列中显示,如下代码: # -*- coding:utf-8 -*- import xlwings as xw li ...