NetCore部署到Linux服务器+Supervisor的步骤及过程中踩过的坑

本文作备忘使用

服务器配置:

 

下面是所有操作的具体步骤:

1.安装nginx   参考

1.1 添加源:默认情况Centos7中没有Nginx源,最近Nginx官网提供了Centos的源地址。
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
注:上面的命令执行后不确定是否需要update一下yum,我没有update也能安装成功

1.2 安装Nginx:通过yum search nginx看看是否已经添加源成功。如果成功则执行下列命令安装Nginx。
sudo yum install -y nginx
1.3 启动Nginx并设置开机自动运行
sudo systemctl start nginx.service
sudo systemctl enable nginx.service
1.4 浏览查看效果
在浏览器中输入您的服务器地址:http://x.x.x.x/

2.安装supervisor   参考

 2.1 执行以下命令以安装supervisor

yum install python-setuptools
easy_install supervisor
注:据说会发生无法安装的情况,不过我没有遇到,看来还是幸运的。还有很多方法,还没有尝试其他的方法。懒~~

 2.2 配置supervisor

  2.2.1 创建配置文件目录及文件

#mkdir -p /etc/supervisor  
#mkdir -p /etc/supervisor/conf.d
#echo_supervisord_conf > /etc/supervisor/supervisord.conf
#vim /etc/supervisor/supervisord.conf

  2.2.2 配置内容如下(参考)

# 启用访问web控制界面,inet_http_server区段修改为
[inet_http_server]         
port=*:9001        

# 修改log路径
[supervisord]
logfile=/var/log/supervisord.log

# 修改 unix_http_server file 路径,避免被系统删除
[unix_http_server]
file=/var/lock/supervisor.sock

# 和unix_http_server file保持一致
[supervisorctl]
serverurl=unix:///var/lock/supervisor.sock

# include区段修改为
[include]
files = /etc/supervisor/conf.d/*.conf

  2.3 配置supervisor的开机服务

#vim /etc/rc.d/init.d/supervisord

 2.3.1 文件内容如下:

#!/bin/sh
#
# /etc/rc.d/init.d/supervisord
#
# Supervisor is a client/server system that
# allows its users to monitor and control a
# number of processes on UNIX-like operating
# systems.
#
# chkconfig: - 64 36
# description: Supervisor Server
# processname: supervisord

# Source init functions
. /etc/init.d/functions

RETVAL=0
prog="supervisord"
pidfile="/tmp/supervisord.pid"
lockfile="/var/lock/supervisor.sock"

start()
{
        echo -n $"Starting $prog: "
        daemon --pidfile $pidfile supervisord -c /etc/supervisor/supervisord.conf
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && touch ${lockfile}
}

stop()
{
        echo -n $"Shutting down $prog: "
        killproc -p ${pidfile} /usr/bin/supervisord
        RETVAL=$?
        echo
        if [ $RETVAL -eq 0 ] ; then
                rm -f ${lockfile} ${pidfile}
        fi
}

case "$1" in

  start)
    start
  ;;

  stop)
    stop
  ;;

  status)
        status $prog
  ;;

  restart)
    stop
    start
  ;;

  *)
    echo "Usage: $0 {start|stop|restart|status}"
  ;;

esac

保存退出

增加开机服务

chmod +x /etc/rc.d/init.d/supervisord
chkconfig --add supervisord
chkconfig supervisord on

启动服务并验证

service supervisord start

如果服务器启动了防火墙

firewall-cmd --zone=public --add-port=9001/tcp --permanent
firewall-cmd --reload

 

 

 

 

3.安装netcore SDK    跳转

 

添加dotnet产品Feed

 

在安装.NET之前,您需要注册Microsoft密钥,注册产品存储库并安装所需的依赖项。这只需要每台机器完成一次。

 

打开终端并运行以下命令:

 

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

 

安装.NET SDK

更新可用于安装的产品,然后安装.NET SDK。

在终端中,运行以下命令:

 

sudo yum update
sudo yum install dotnet-sdk-2.2

 

4.安装chrome+chromedriver(参考

 4.1 利用 yum 命令安装 google-chrome 超级简单(安装最新版):

yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm

 4.2 查看chrome版本

google-chrome --version

 4.3 下载chromedirver

*********目前搜集到的有两个下载地址*********
************看你喜欢,任君选择************
官网提供 http://chromedriver.storage.googleapis.com/index.html
淘宝镜像 http://npm.taobao.org/mirrors/chromedriver/

注:1.需要下载与chrome版本对应的版本,每个版本里面有一个notes.txt文本,里面有支持的chrome版本。
  2.下载后上传到服务器/usr/bin目录

 

5.配置supervisor进程

 在/etc/supervisor/conf.d目录下面新建一个你项目名的配置文件,如:MyDotNetName.conf

 内容如下:

[program:MyDotNetName]
command=/bin/bash -c "dotnet MyDotNetName.dll"
directory=/usr/PublishOutput/
stderr_logfile=/var/log/MyDotNetName.error.log
stdout_logfile=/var/log/MyDotNetName.stdout.log
environment=ASPNETCORE_ENVIRONMENT=Production
user=root
stopsignal=INT
autostart=true
autorestart=true
startsecs=3

:wq保存退出编辑当前配置文件

注:我在操作完上面这步后,进程并没有及时启动,后来查找了一翻资料后,执行了附里面的第一二条命令后才正常启动,具体是先执行的哪条不太记得了。不过我想这个影响应该不大吧。

附:supervisor的运维命令

# 读取有更新(增加)的配置文件,不会启动新添加的程序
supervisorctl reread
# 重启配置文件修改过的程序
supervisorctl update
# 查看程序状态
supervisorctl status

# 关闭程序
supervisorctl stop app-name

# 启动程序
supervisorctl start app-name

# 重启
supervisorctl restart app-name

 补充:每次替换新发布的项目文件内容后,发现都会报错。查看后应该是chromedriver没有执行权限,我的操作是执行如下所示的命令,对当前项目文件所在目录赋予执行权限

chmod -R 777 /usr/youpath

 如果有哪位大能有更好的解决方案欢迎留言指教,谢谢!

 

2019年3月19日 补充

  发现使用9001端口远程管理进行多次重启进程后就出现了各种报错,后来查看资料后的解决办法就是:结束掉chrome及chromedriver的所有进程

 批量结束某个应用的所有进程命令如下(例如结束掉所有chrome进程)

ps -aux|grep chrome|awk '{print $2}'|xargs kill -9

  后来在supervisor子进程配置文件中添加配置(目前正在试着运行)

#vim /etc/supervisor/supervisord.conf
killasgroup = true stopasgroup = true

 

posted @ 2019-03-16 22:46  Mr.Gethin  阅读(738)  评论(0编辑  收藏  举报