【申明】:本人.NET Core小白、Linux小白、MySql小白、nginx小白。而今天要說是讓你精通Linux ... 的開機與關機、nginx安裝與部署、Core的Hello World ...等。
首先,入門文章園子里面已經很多了。這里再做個整理和備忘。您也可以根據目錄挑着看。(親測多次可行,以下多圖預警!)
vmware虛擬機安裝
vmware哪里下載?360軟件管家就可以下載。然后網上找個序列號。
我這里安裝的是12.1.1
安裝很簡單一直下一步就好了。
CentOS7.3安裝
下載CentOS http://isoredirect.centos.org/centos/7/isos/x86_64/ 我們可以選擇163或阿里雲的節點,速度會快點。
下載完成后打開vmware准備安裝
菜鳥可以選擇有界面的
選好后然后開始安裝,然后設置密碼,然后重啟就好了。
Windows的客戶端軟件
下載安裝Xshell https://www.baidu.com/baidu?word=Xshell
下載安裝WinSCP https://www.baidu.com/baidu?word=WinSCP (你也可以使用Xftp,記得選sftp,不然需要服務器支持ftp)
進入CentOS,右鍵
開始第一個命令。查看IP
ifconfig -a
接下來,可以全部由Xshell操作。
打開Xshell
然后輸入用戶名密碼登錄。(使用root登錄)
.NET Core1.1安裝
根據微軟資料 https://www.microsoft.com/net/core#linuxcentos
在命令行執行:
sudo yum install libunwind libicu #(安裝libicu依賴)
curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?linkid=848821 #(下載sdk壓縮包) 根據網速,可能快可能慢
sudo mkdir -p /opt/dotnet && sudo tar zxf dotnet.tar.gz -C /opt/dotnet #(解壓縮)
sudo ln -s /opt/dotnet/dotnet /usr/local/bin #(創建鏈接)
dotnet new console -o hwapp # 我們初始化一個示例Hello World應用程序 (這里稍微耗時點)
cd hwapp
dotnet restore
dotnet run #運行應用程序
看到打印的hello world證明 .net core的環境已經裝好了。
【小白技巧】
- "#"是注釋
- shirf + insert 粘貼 (不能ctrl + c v 有點不習慣)
- ctrl + insert 復制
nginx1.12.1安裝
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的開機啟動
然后登錄 CentOs系統 打開瀏覽器 輸入 :192.168.233.129 (之前查到的IP)
看到這個頁面就代表安裝成功了。
配置防火牆
如果你在物理機的瀏覽器訪問,你會發現訪問不了。
那是因為CentOs的防火牆攔截了,我們打開端口。
firewall-cmd --zone=public --add-port=80/tcp --permanent #(開放80端口)
systemctl restart firewalld #(重啟防火牆以使配置即時生效)
然后訪問成功。
部署ASP.NET Core應用程序
打開VS2017 新建一個.net core 項目
右鍵發布(發布之前最好先在本地跑下看正常不)
然后打開我們的WinSCP(前面下載的)
點擊登錄,然后就可以看到CentOs系統的文件目錄了。然后隨便建個文件夾,准備放我們發布發好的程序。
右鍵上傳
然后命令運行
cd /home/NetCoreDemo #這個目錄 要輸入你自己對應放的目錄
dotnet netcoreDemo.dll # netcoreDemo.dll 這個對應你建的項目生成的dll
看到了5000 端口的一個網址,證明部署好了。
然后在虛擬機里面訪問 http://localhost:5000 ,ok。
nginx 配置
前面我們只說了nginx,並沒有說是干嘛的。nginx的作用有點先iis,是個web服務器。做轉發。
我們發現http://localhost:5000 可以訪問。但是通過ip卻不能訪問。那么我們現在就可以通過80訪問nginx,然后nginx再幫我們訪問5000。
打開路徑 /etc/nginx/conf.d
編輯default.conf 文件內容替換為
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;
}
}
將nginx添加至SELinux的白名單,否則會報502錯誤。
nginx -s reload #使其即時生效
【注意】然后這里訪問下 http://192.168.233.130/ (對應你自己的centos ip,這一步好重要。應該是要先主動觸發這個502錯誤吧。)
yum install policycoreutils-python #(選y)
cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx
semodule -i mynginx.pp
SELinux 對nginx訪問目錄的影響
https://www.cnblogs.com/mywebnumber/p/5572984.html
然后我們就可以在物理機上通過ip訪問了(不用帶端口了,直接80 然后 nginx 轉到了5000)。
配置守護服務(Supervisor)
yum install python-setuptools
easy_install supervisor #安裝Supervisor
mkdir /etc/supervisor
echo_supervisord_conf > /etc/supervisor/supervisord.conf #配置Supervisor
文件的最后
;[include]
;files = relative/directory/*.ini
改成(【注意】去掉;且不能有空格)
[include]
files = conf.d/*.conf
進入目錄 /etc/supervisor/
新建 conf.d
文件夾,conf.d
文件夾下新建 netcoreDemo.conf
文件
內容(【注意】看 第二行 第三行的 注釋,根據實際名字填入)
[program:netcoreDemo]
command=dotnet netcoreDemo.dll ; (注意)運行程序的命令
directory= /home/NetCoreDemo/ ; (注意 注意)對應的你的項目的存放目錄,這個地方好多初學者搞錯!!!
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 -c /etc/supervisor/supervisord.conf
ps -ef | grep netcoreDemo #【注意】netcoreDemo是上面 program:netcoreDemo 的命名
supervisorctl reload #重新加載
然后就好了,現在關掉那個5000界面也可以訪問。
配置Supervisor開機啟動
打開目錄 /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 #來驗證是否為開機啟動
systemctl stop supervisord #關閉
systemctl disable supervisord #禁用
到此,完工。現在重新電腦什么都不用管,直接可以訪問部署好的網站。
MySql5.6.37安裝
http://www.cnblogs.com/starof/p/4680083.html (我用的方法二)
安裝rar壓縮
下載 http://www.rarsoft.com/download.htm
把文件放服務器上。然后cd到這個目錄執行
tar -zxvf rarlinux-x64-5.4.0.tar.gz # rarlinux-x64-5.4.0.tar.gz是你下載的文件名
cd rar
make
rar #安裝
安裝好了后我們就可以打命令解壓文件了
cd #跳到壓縮文件目錄
rar x ceshi.rar #解壓到當前文件夾 ceshi.rar是壓縮文件名
rar a abc.rar ceshi #壓縮文件夾 到 abc.rar
在CentOS中安裝完rar命令,會自動安裝zip命令
cd /home #進入/home目錄
zip -r mydata.zip mydata #把/home目錄下面的mydata目錄壓縮為mydata.zip
unzip mydata.zip -d mydatabak #把/home目錄下面的mydata.zip解壓到mydatabak目錄里面
zip -r abc123.zip abc 123.txt #把/home目錄下面的abc文件夾和123.txt壓縮成為abc123.zip
unzip wwwroot.zip #把/home目錄下面的wwwroot.zip直接解壓到/home目錄里面
unzip abc\*.zip #把/home目錄下面的abc12.zip、abc23.zip、abc34.zip同時解壓到/home目錄里面
unzip -v wwwroot.zip #查看把/home目錄下面的wwwroot.zip里面的內容
unzip -t wwwroot.zip #驗證/home目錄下面的wwwroot.zip是否完整
unzip -j wwwroot.zip #把/home目錄下面wwwroot.zip里面的所有文件解壓到第一級目錄
常用linux命令
cd #目錄跳轉
cd / #回到上一個目錄
ls #查看目錄下的文件
df -h #查看文件使用情況
mkdir #創建文件夾文件夾
vi # 編輯文件
:wq! #強制保存文件,並退出vi
ifconfig -a #查看ip
free #查看系統資源使用情況 http://blog.csdn.net/zhongluhuaok/article/details/52804187
firewall-cmd --zone=public --add-port=80/tcp --permanent #開放80端口,也可以是其他端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent # 關閉端口
systemctl restart firewalld #重啟防火牆,使其生效
service mysqld restart #重啟mysql
nginx -s reload # nginx 生效
reboot # 重啟系統
supervisorctl start program_name #啟動某個進程(program_name=你配置中寫的程序名稱)
supervisorctl stop program_name #停止某一進程 (program_name=你配置中寫的程序名稱)
supervisorctl reload #重新啟動配置中的所有程序
supervisorctl stop all #停止全部進程
supervisorctl update #更新新的配置到supervisord
supervisorctl restart program_name #重啟某一進程 (program_name=你配置中寫的程序名稱)
supervisorctl #查看正在守候的進程
http://blog.csdn.net/shudaqi2010/article/details/51153961
clear #刷新終端屏幕 (或者 ctrl + l)
exit #退出
shift + insert #粘貼
ctrl + insert #復制
補充
centos上升級 .net core 2.0 需要先執行官網命令
curl -sSL -o dotnet.tar.gz https://aka.ms/dotnet-sdk-2.0.0-linux-x64
mkdir -p ~/dotnet && tar zxf dotnet.tar.gz -C ~/dotnet
export PATH=$PATH:$HOME/dotnet
然后再刪除原有文件夾
rm -rf /opt/dotnet #刪除原有文件夾
rm -rf /usr/local/bin/dotnet #刪除原來定義的dotnet命令
sudo ln -s /root/dotnet/dotnet /usr/local/bin #重新定義dotnet命令
且,項目程序也要升級到2.0,不然dotnet dll不能成功。
結束
這幾天給我的感受就是,CentOS帶我進入了一個更開闊的世界!!!開啟我們的.net core吧,你會覺得很好玩的。
打算重寫Hi-Blogs系統
訪問地址:http://haojima.net (剛入手做了一個留言板、聊天室快去體驗下吧。.net core 跑在阿里雲linux上的。)
開源地址:https://github.com/zhaopeiym/Hi-Blogs
參考