做爲.neter,看到.net core 2.0的正式發佈,內心是有點小激動的,火燒眉毛的體驗了一把,發現速度確實是快了不少,其中也遇到一些小問題,因此整理了一些學習筆記:html
服務器系統:CentOS 7.3 64位mysql
相關工具:putty、Xftplinux
服務器軟件軟件:.netcore、nginx、supervisor、mysqlnginx
這個就不細說了,網上教程不少,我這邊是阿里雲的ecs服務器,操做系統爲centos 7.3 x64git
sudo yum install libunwind libicu(安裝libicu依賴) curl -sSL -o dotnet.tar.gz https://aka.ms/dotnet-sdk-2.0.0-linux-x64 (下載sdk壓縮包) mkdir -p ~/dotnet && tar zxf dotnet.tar.gz -C ~/dotnet 解壓縮) sudo ln -s /opt/dotnet/dotnet /usr/local/bin(建立連接)
參見官方文檔, 須要注意的地方是第四行跟官方文檔有點出入,這是創建鏈接,而官方文檔的是添加path(只在當前session有效:export PATH=$PATH:$HOME/dotnet)github
,執行這些操做以前請務必卸載舊版本及預覽版本(我是直接刪除舊版本的文件,執行 dotnet --info 能夠查看已安裝版本信息),當執行dotnet --version xianshi 2.0.0時表示安裝.net core 2.0成功web
參考資料: https://www.microsoft.com/net/core#linuxcentossql
一、以管理員(root)身份執行如下命令shell
二、設置開機啓動vsftpd ftp服務
三、啓動vsftpd服務
管理vsftpd相關命令:
中止vsftpd: service vsftpd stop
重啓vsftpd: service vsftpd restart
在 CentOS 7.3中
暫時開放 ftp 服務
# firewall-cmd --add-service=ftp
永久開放 ftp 服務
# firewall-cmd --add-service=ftp --permanent
永久關閉
# firewall-cmd --remove-service=ftp --permanent
success
讓設定生效
# systemctl restart firewalld
下面是添加ftpuser用戶,設置根目錄爲/home/wwwroot/ftpuser,禁止此用戶登陸SSH的權限,並限制其訪問其它目錄(當不存在指定目錄時須要建立相關目錄)。
1、修改/etc/vsftpd/vsftpd.conf
vim /etc/vsftpd/vsftpd.conf
如需禁用匿名登陸把第一行的 anonymous_enable=YES ,改成NO
將底下三行
改成
三、增長用戶farmhome,指向目錄/home/wwwroot/farmhome,禁止登陸SSH權限。
useradd -d /home/wwwroot/farmhome -g ftp -s /sbin/nologin farmhome
四、設置用戶口令
passwd farmhome
五、編輯文件chroot_list:
內容爲ftp用戶名,每一個用戶佔一行,如:
farmhome
六、從新啓動vsftpd
service vsftpd restart
7.用xftp等客戶端軟件應該就能訪問到該目錄了;
1、官網下載mysql
# wget https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm (去mysql官網獲取最新的rpm包 https://dev.mysql.com/downloads/repo/yum/) # rpm -ivh mysql-community-release-el7-5.noarch.rpm # yum install mysql-community-server
安裝完成後重啓mysql服務
service mysqld restart
2、mysql相關配置
初次安裝mysql,root帳戶沒有密碼。
[root@yl-web yl]# mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.6.26 MySQL Community Server (GPL) Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ rows in set (0.01 sec) mysql>
設置密碼
mysql> set password for 'root'@'localhost' =password('password'); Query OK, 0 rows affected (0.00 sec) mysql>
不須要重啓數據庫便可生效。
mysql新建用戶(用戶farmhome,密碼123456):
mysql>create user 'farmhome'@'%' identified by '123';
mysql遠程鏈接設定(把在全部數據庫的全部表的全部權限賦值給位於全部IP地址的root用戶)
1 mysql> grant all privileges on *.* to root@'%'identified by 'password';
1.防火牆配置
運行、中止、禁用firewalld
啓動:# systemctl start firewalld
查看狀態:# systemctl status firewalld 或者 firewall-cmd --state
中止:# systemctl disable firewalld
禁用:# systemctl stop firewalld
將接口添加到區域,默認接口都在public
# firewall-cmd --zone=public --add-interface=eth0 --permanent
永久生效再加上 --permanent 而後reload防火牆
設置默認接口區域
# firewall-cmd --set-default-zone=public --permanent
當即生效無需重啓
打開端口
加入一個端口到區域:
# firewall-cmd --zone=public --add-port=5000/tcp --permanent
# firewall-cmd --zone=public --add-port=80/tcp --permanent
查看全部打開的端口:
# firewall-cmd --zone=dmz --list-ports
2.用xftp上傳程序到指定目錄即上的
進入指定目錄運行程序
如出現不能綁定ipv6等錯誤時,請修改Program.cs,添加UseUrls("http://0.0.0.0:50");
curl -o nginx.rpm http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
rpm -ivh nginx.rpm
yum install nginx
安裝成功!
輸入:systemctl start nginx 來啓動nginx。
輸入:systemctl enable nginx 來設置nginx的開機啓動(linux宕機、重啓會自動運行nginx不須要連上去輸入命令)。
修改
將文件內容替換爲
server {
listen 80;
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}}
再次運行程序
donet /home/wwwroot/farmhome/famrhome.dll
如出現502錯誤時因爲SELinux保護機制所致使,咱們須要將nginx添加至SELinux的白名單。
接下來咱們經過一些命令解決這個問題:
yum install policycoreutils-python
sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx sudo semodule -i mynginx.pp
目前存在三個問題
問題1:ASP.NET Core應用程序運行在shell之中,若是關閉shell則會發現ASP.NET Core應用被關閉,從而致使應用沒法訪問,這種狀況固然是咱們不想遇到的,並且生產環境對這種狀況是零容忍的。
問題2:若是ASP.NET Core進程意外終止那麼須要人爲連進shell進行再次啓動,每每這種操做都不夠及時。
問題3:若是服務器宕機或須要重啓咱們則仍是須要連入shell進行啓動。
爲了解決這個問題,咱們須要有一個程序來監聽ASP.NET Core 應用程序的情況。在應用程序中止運行的時候當即從新啓動。這邊咱們用到了Supervisor這個工具,Supervisor使用Python開發的。
yum install python-setuptools
easy_install supervisor
mkdir /etc/supervisor
echo_supervisord_conf > /etc/supervisor/supervisord.conf
修改supervisord.conf文件,
vim /etc/supervisor/supervisord.conf
將文件尾部的配置(表示加載配置文件目錄下的配置文件)
修改成
ps:若是服務已啓動,修改配置文件可用「supervisorctl reload」命令來使其生效
建立一個 farmhomeapp.conf文件
,內容大體以下
[program:farmhomewebapp] command=dotnet farmhome.dll ; 運行程序的命令 directory=/home/wwwroot/farmhome/ ; 命令執行的目錄 autorestart=true ; 程序意外退出是否自動重啓 stderr_logfile=/var/log/WebApplication1.err.log ; 錯誤日誌文件 stdout_logfile=/var/log/WebApplication1.out.log ; 輸出日誌文件 environment=ASPNETCORE_ENVIRONMENT=Production ; 進程環境變量 user=root ; 進程執行的用戶身份 stopsignal=INT
運行supervisord,查看是否生效
supervisord -c /etc/supervisor/supervisord.conf ps -ef
如存在指定進程表示成功
至此關於ASP.NET Core應用程序的守護即配置完成。
新建一個「supervisord.service」文件
vim /usr/lib/systemd/system/supervisord.service
內容以下
# dservice for systemd (CentOS 7.0+) # by ET-CS (https://github.com/ET-CS) [Unit] Description=Supervisor daemon [Service] Type=forking ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf ExecStop=/usr/bin/supervisorctl shutdown ExecReload=/usr/bin/supervisorctl reload KillMode=process Restart=on-failure RestartSec=42s [Install] WantedBy=multi-user.target
執行命令:systemctl enable supervisord 設定開機啓動
執行命令:systemctl is-enabled supervisord #來驗證是否爲開機啓動
本文是環境搭建完後依據記憶寫的博客,可能會有錯誤,歡迎指正,不知不覺已經凌晨了,明天繼續上asp.net core2 及EF Core Fluent API 及 EF Core for MySql 相關介紹
相關內容參考: