SAAS雲平臺搭建札記: (二) Linux Ubutu下.Net Core整套運行環境的搭建

    最近作的項目,因爲預算有限,公司決定不採購Windows服務器,而採購基於Linux的服務器。html

    通常的VPS服務器,若是使用Windows系統,那麼Windows Server2012\2016安裝好後,就佔用1GB的內存了;只要運行起來,2G的內存就用掉了;裝上SqlServer、跑個.net,4G內存是標配,用戶數量稍微多些4G內存也捉襟見肘了;分配2個VCpu,在桌面狀態下不運行任何程序,每一個核心的佔用率在15%~20%左右。java

    你們知道64位的CentOS7裝好後內存佔用是多少嗎,用free看了下,不到150兆;mysql

    64位的Ubutu16.04裝好後內存佔用多少?40MBlinux

    用過Linux Server,不由讚歎其系統的精簡和高效,沒有一點浪費內存和CPU的地方,全部的資源都用在刀刃上;難怪微軟在《.NET 微服務:適用於容器化 .NET 應用程序的體系結構》一書上說,基於.Net Core的ASP.net比傳統ASP.net要快10倍以上。開發和運維.NET Core,首推Linux下的Container環境。Windows Server不停的在作Server-Core和Nano-Server,也是在不斷地作減法,以適應形勢。多年以來.net一直幹不過java,操做系統也是個很大緣由。redis

    好了,先不扯開發,買了X裏雲的VPS,默認用root SSH遠程登陸上去的,這跟咱們平時本身裝的很不同,沒有第二個用戶,上去也不用su,也用不着sudo。sql

 

    這裏把整個流程記錄下來,方便你們配置和部署(若是本身找資料估計要配個1、兩天)mongodb

  • 安裝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命令行,編輯啓動文件ubuntu

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

    linux下能夠用vi,能夠用vim,也能夠用nano(估計有數十種編輯器)vim

    註釋 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,咱們以爲九、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
取消註釋
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雲平臺搭建札記: (三) AntDesign + .Net Core WebAPI權限控制、動態菜單的生成

相關文章
相關標籤/搜索