惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
爱范儿
爱范儿
J
Java Code Geeks
L
LangChain Blog
V
V2EX
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
博客园 - Franky
Microsoft Azure Blog
Microsoft Azure Blog
Jina AI
Jina AI
Blog — PlanetScale
Blog — PlanetScale
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
The Cloudflare Blog
博客园 - 司徒正美
B
Blog
G
Google Developers Blog
Stack Overflow Blog
Stack Overflow Blog
罗磊的独立博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
Engineering at Meta
Engineering at Meta
MyScale Blog
MyScale Blog
有赞技术团队
有赞技术团队
Hugging Face - Blog
Hugging Face - Blog

博客园 - thanks

05. 搅拌站ERP系统 — 术语解析与技术备注 03. 搅拌站ERP系统 — 数据库表字段详解与示例数据 04. 搅拌站ERP系统 — 模块业务详解 02. 搅拌站ERP系统 — 核心业务流程 01. 搅拌站ERP系统 — 系统总览与架构 07-紧固件MES系统 — 中小企业实施部署指南 06-紧固件MES系统 — 术语与名词解析 05-紧固件MES系统 — 推荐技术架构与智能制造方案 04-紧固件MES系统 — 重构建议与待开发分析 03-紧固件MES系统 — 模块业务详解 02-紧固件MES系统 — 核心业务流程 01-紧固件MES系统 — 系统总览与架构 VsCode+DeepSeek的AI编程助手初体验 [大数据][机器学习]之Model Card(模型卡片)介绍 Bond——大数据时代的数据交换和存储格式 Spark中的那些坑... 为啥就业这么难——聊聊我在培训机构的所见所闻 微软外服工作札记③——窗口函数的介绍 微软外服工作札记②——聊聊微软的知识管理服务平台和一些编程风格 【非技术】试占12月10日后会发生什么 聊聊我在微软外服大数据分析部门的工作经历及一些个人见解 SAAS云平台搭建札记: (四) AntD For React使用react-router-dom路由接收不同参数页面不刷新的问题 [工作札记]03: 微软Winform窗体中设计上的Bug,会导致程序编译失败,影响范围:到最新的.net4.7.2都有 [工作札记]02: .Net Winform控件TreeView最简递归绑定方法 SAAS云平台搭建札记: (三) AntDesign + .Net Core WebAPI权限控制、动态菜单的生成 [工作札记]01: CS系统中分页控件的制作 【非技术】试占新型肺炎的情况与发展趋势 给培训学校讲解ORM框架的课件 SAAS云平台搭建札记: (一) 浅论SAAS多租户自助云服务平台的产品、服务和订单 开源三维地球GIS引擎Cesium常用功能的开发
SAAS云平台搭建札记: (二) Linux Ubutu下.Net Core整套运行环...
thanks · 2019-04-02 · via 博客园 - thanks

    最近做的项目,由于预算有限,公司决定不采购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-10 -y

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

sudo -u postgres psql

    配置pgsql可以远程访问

修改/etc/postgresql/11/main/postgresql.conf,将文件中的 listen_addresses=’localhost’ 替换成 listen_addresses=’*’;

修改 /etc/postgresql/11/main/pg_hba.conf,配置允许哪些IP可以访问,我配置的是允许所有ip

# ipv4 remote connections:
host all all 0.0.0.0/0 md5
保存以上配置之后重启数据库生效

   修改默认用户密码:

alter user postgres with password 'new password'; 

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

  • 安装Redis
apt-get install redis-server

     查看状态

/etc/init.d/redis-server status

    编辑redis配置文件

vi /etc/redis/redis.conf

    注释以下绑定的主机地址

# bind 127.0.0.1
protected-mode no

    设置远程连接密码,取消注释 requirepass foobared,将 foobared 改成任意密码,用于验证登录。

    使用 redis-cli -h xxx.xxx.xxx.xxx 进行远程登录,登录后进行操作如果出现如下错误:

   

     可以输入 auth xxx 进行解锁,xxx为配置文件中设置的密码。

    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

安装.net 5

wget https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb

sudo apt-get update; \
  sudo apt-get install -y apt-transport-https && \
  sudo apt-get update && \
  sudo apt-get install -y aspnetcore-runtime-5.0

 这里 展示了微软官方在不同linux版本上对.net的支持以及安装.net运行时的方法。( https://docs.microsoft.com/zh-cn/dotnet/core/install/linux

  • 安装VsFtp

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

apt-get install vsftpd
useradd FTP用户名 -g ftp -d /var/www
passwd FTP用户名

cd /
mkdir www
chmod 777 -R /var/www
usermod -s /sbin/nologin FTP用户名

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

nano /etc/vsftpd.conf
取消注释
vsftpd.chroot_list
取消注释write_enable=YES”

  chroot_local_user=NO
  chroot_list_enable=YES
  chroot_list_file=/etc/vsftpd.chroot_list

nano /etc/vsftpd.chroot_list

    只写入FTP用户名

    在有些版本上还需要进行如下修改

nano /etc/pam.d/vsftpd
将vsftpd文件中的pam_shells.so改为pam_nologin.so
 

    安装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云平台搭建札记: (三) AntDesign + .Net Core WebAPI权限控制、动态菜单的生成

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