最近做的项目, 由于预算有限, 公司决定不采购 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
配置, 管理用户等.
使用 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 777 -R /var/www
usermod -s /sbin/nologin FTP 用户名
编辑 vi vsftpd.conf, 需要启用名单用户
- nano /etc/vsftpd.conf
- 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 的安装配置.
SAAS 云平台搭建札记系列文章:
SAAS 云平台搭建札记: (一) 浅论 SAAS 多租户自助云服务平台的产品, 服务和订单
SAAS 云平台搭建札记: (二)Linux Unbutu 下. Net Core 整套运行环境的搭建
来源: https://www.cnblogs.com/thanks/p/10643643.html