最近公司须要开发项目能在Linux系统上运行,示例开发项目采用.Net Core + Angular开发;理论上彻底支持跨平台。html
可是实践才是检验真理的惟一标准;那么仍是动手来验证明现下;过程当中万一出现什么问题也算是积累经验。前端
因为本次主要验证项目部署Linux环境,也不想去从新搭建一个虚拟机环境;就使用Win10中Linux子系统(WSL什么?)python
一、WSL启用步骤:nginx
最终肯定问题缘由:须要更新Linux内核包(更新包下载地址:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi)c++
下载安装后,CentOS系统环境准备好了。git
sudo yum update
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
sudo yum install dotnet-sdk-3.1
三、Nginx环境安装:(部署web项目) github
yum install gcc-c++ yum install pcre pcre-devel yum install zlib zlib-devel yum install openssl openssl--devel
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
sudo yum install nginx
目录结构:web
配置路径 | /etc/nginx/ |
错误日志 | /var/log/nginx/error.log |
访问日志 | /var/log/nginx/access.log |
默认站点目录 | /usr/share/nginx/html |
基本命令:json
部署项目到CentOS有多种方式:直接运行、Docker部署(前面学习文章已屡次使用),本次就采用直接运行方式来部署应用。因为项目采用先后端分离实现,须要分别部署vim
一、将服务端项目文件拷贝到CentOS目录中:本次部署路径为:/home/www/publish
二、修改配置文件:须要使用vim命令(须要单独安装)
经过命令进入配置文件编辑:
vim appsettings.json
编辑完成后采用如下命令退出
vim命令 :w 保存但不退出 :wq 保存并退出 :q 退出 :q! 强制退出,不保存 :e! 放弃全部修改,从上次保存文件开始再编辑命令历史
三、启动服务
进入项目目录执行命令:
[root@Coder supervisor]# cd /home/www/publish [root@Coder publish]# dotnet ZLSoft.UnifiedDS.Web.Host.dll --urls http://*:8220
一、将web项目拷贝到:/home/www/web
二、在Nginx配置文件目录中添加配置文件web.conf
server { listen 8221; server_name 192.168.243.86:8220; #charset koi8-r; #access_log /var/log/nginx/host.access.log main; location / { root /home/www/web; index index.html index.htm; try_files $uri $uri/ /index.html?$query_string; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
注意: 因为Angular项目中使用了路由重定向,则须要使用标记内容
三、更新Nginx配置文件:
/usr/sbin/nginx -s reload
服务端运行:
Web项目运行效果:
到此项目已成功运行,可是当我把CentOS命令结束运行,则web服务端中止运行,那么须要把建立服务实现守护进程
一、安装supervisor
#安装python的扩展 yum install python-setuptools #经过python的扩展安装supervisor easy_install supervisor #创建设置文件夹 mkdir /etc/supervisor mkdir /etc/supervisor/conf.d #设置文件 echo_supervisord_conf > /etc/supervisor/supervisord.conf #修改设置文件(supervisord.d 文件夹下的全部 ini 类型的文件都是配置文件) #在文件/etc/supervisor/supervisord.conf末端 ;files = relative/directory/*.ini 改成 files = conf.d/*.ini
二、建立配置文件:在/etc/supervisor/conf.d目录下建立publish.conf
[program:publish] command=dotnet ZLSoft.UnifiedDS.Web.Host.dll --urls http://192.168.243.86:8220 #运行命令 directory=/home/www/publish #程序路径 environment=ASPNETCORE__ENVIRONMENT=Production user=root stopsignal=INT autostart=true #自动启动 autorestart=true #3秒自动重启 startsecs=3 stderr_logfile=/var/log/ossoffical.err.log stdout_logfile=/var/log/ossoffical.out.log
三、启动服务
#进入supervisor目录 cd /etc/supervisor #启动supervisord 服务 supervisord -c supervisord.conf
四、开启守护进程的界面管理功能
#修改配置文件:
vim /etc/supervisord.conf
#取消注释内容
[inet_http_server] ; inet (TCP) server disabled by default
port=*:9001 ; ip_address:port specifier, *:port for all iface
username=user ; default is no username (open server)
password=123 ; default is no password (open server)
#从新加载配置文件
supervisorctl reload
五、supervisorctl 经常使用命令
$ sudo service supervisor stop 中止supervisor服务 $ sudo service supervisor start 启动supervisor服务 $ supervisorctl shutdown #关闭全部任务 $ supervisorctl stop|start program_name #启动或中止服务 $ supervisorctl status #查看全部任务状态
在CentOS系统中运行部署运行项目,主要是Linux相关内容是否熟练:如命令、权限、软件等相关内容,无论什么仍是须要孰能生巧,多加练习吧。
另外WSL中的Linux系统仍是不够全面,暂时没有服务、防火墙相关功能,因此若是在真实环境中,能够设置服务开机启动、以及防火墙相关处理。
因此仍是须要找个完整环境进行学习练习。