dotnetcore/install.sh

raw link view readme
1
2 yum install firewalld -y
3 systemctl start firewalld
4 systemctl enable firewalld
5 firewall-cmd --permanent --zone=public --add-interface=eth0
6 firewall-cmd --permanent --add-service=http --add-service=https --zone=public
7 firewall-cmd --reload
8
9 # Just for nginx testing...
10
11 cat > /srv/robots.txt << EOF
12 User-agent: ia_archiver
13 Disallow: /
14 EOF
15
16 yum install epel-release -y
17 yum install supervisor -y
18
19 cat > /etc/supervisord.d/sample.ini << EOF
20 [program:sample]
21 command=/usr/bin/dotnet /srv/sample/bin/Debug/netcoreapp1.0/publish/sample.dll
22 directory=/srv/sample
23 autostart=true
24 autorestart=true
25 stderr_logfile=/var/log/sample.err.log
26 stdout_logfile=/var/log/sample.out.log
27 environment=ASPNETCORE_ENVIRONMENT=Production
28 user=nginx
29 stopsignal=INT
30 EOF
31
32 # App
33
34 yum install libunwind libicu -y
35 curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?LinkID=809131
36 mkdir -p /opt/dotnet && sudo tar zxf dotnet.tar.gz -C /opt/dotnet
37 ln -s /opt/dotnet/dotnet /usr/bin
38
39 cd /srv
40 mkdir sample
41 cd sample
42
43 cat > project.json << EOF
44 {
45 "version": "1.0.0-*",
46 "buildOptions": {
47 "debugType": "portable",
48 "emitEntryPoint": true
49 },
50 "dependencies": {},
51 "frameworks": {
52 "netcoreapp1.0": {
53 "dependencies": {
54 "Microsoft.NETCore.App": {
55 "type": "platform",
56 "version": "1.0.0"
57 },
58 "Microsoft.AspNetCore.Server.Kestrel": "1.0.0"
59 },
60 "imports": "dnxcore50"
61 }
62 }
63 }
64 EOF
65
66 cat > Startup.cs << EOF
67 using System;
68 using Microsoft.AspNetCore.Builder;
69 using Microsoft.AspNetCore.Hosting;
70 using Microsoft.AspNetCore.Http;
71 namespace sample
72 {
73 public class Startup
74 {
75 public void Configure(IApplicationBuilder app)
76 {
77 app.Run(context =>
78 {
79 return context.Response.WriteAsync("This verbose monstrosity works.");
80 });
81 }
82 }
83 }
84 EOF
85
86 cat > Program.cs << EOF
87 using System;
88 using Microsoft.AspNetCore.Hosting;
89 namespace sample
90 {
91 public class Program
92 {
93 public static void Main(string[] args)
94 {
95 var host = new WebHostBuilder()
96 .UseUrls("http://unix:/srv/sample/run.sock")
97 .UseKestrel()
98 .UseStartup()
99 .Build();
100 host.Run();
101 }
102 }
103 }
104 EOF
105
106 dotnet restore
107 dotnet publish
108
109 #Nginx
110
111 cat > /etc/yum.repos.d/nginx.repo << EOF
112 [nginx]
113 name=nginx repo
114 baseurl=http://nginx.org/packages/mainline/centos/\$releasever/\$basearch/
115 gpgcheck=0
116 enabled=1
117 EOF
118
119 yum install -y nginx
120
121 export PUBLIC_IP=$(ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1 -d'/')
122
123 mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.disabled
124 cat > /etc/nginx/conf.d/webapi.conf << EOF
125 server {
126 listen $PUBLIC_IP:80;
127
128 location /robots.txt {
129 alias /srv/robots.txt;
130 }
131
132 location / {
133 proxy_pass http://unix:/srv/sample/run.sock;
134
135 proxy_redirect off;
136 proxy_set_header Host \$host;
137 proxy_set_header X-Real-IP \$remote_addr;
138 proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
139 proxy_set_header X-Forwarded-Host \$server_name;
140 }
141 }
142 EOF
143
144 chown -R nginx:nginx /srv
145 restorecon -R -v /srv
146
147 systemctl start supervisord
148 systemctl enable supervisord
149
150 systemctl start nginx
151 systemctl enable nginx
152