日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

[最全操作指南] 在线六个项目全部迁移Linux

發布時間:2023/12/4 linux 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [最全操作指南] 在线六个项目全部迁移Linux 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(書山有路勤為徑,學海無涯苦作舟)

開源也兩年了,沒想到自己在宣傳.NetCore全棧的時候,也慢慢的做出了幾個產品,畢竟也是一行一行的敲出來的,也是一天一夜的改出來的,希望每個人都能在自己學習中培養自己的踏實,穩健,成熟的品性。

這兩年也是見證著跨平臺和Docker容器化的迅速發展,恰逢這段時間打算找工作(有好的歡迎內推),看到NetCore、Linux、中間件、Docker、微服務的字樣已經出現在了很多求職公司的要求里,我的第一批粉絲中也有很多小伙伴找到了自己的NetCore公司,所以說,臨淵羨魚,不如退而結網,奧里給,現在還不晚。

很多小伙伴也問我,什么時候帶著講一講,玩一玩Docker,甚至是K8S,我只能說,先把基礎打好,把設計模式+DDD+授權認證好好鞏固。這段時間我慢慢的學了學Linux,以前雖然用過,但是用的著實不多,這次趁著Win服務器到期,還不給我優惠券的情況下,果斷拾起來了以前的Linux服務器,把上圖中的六個項目都遷過去,正好也踩踩坑,下邊是完整操作文檔。

1、購買服務器,安裝工具

既然要遷移,肯定需要服務器,我這里使用的是去年雙十一買的CentOS7.6x64位Linux服務器,配置是2C4G5M,當然如果你有錢,可以直接搞Azure,功能強大到飛起,如果是中等開銷,就買個這個配置就行,一年大概1k,節假日有優惠,如果還不行,就新用戶買個低配的吧,我是不建議,因為到最后你肯定會再買再換高配,所以現在沒必要買個低配的。

配置安全組和實例端口

如果是新買的服務器,端口實例還是要開放一些,特別是某里服務器。

我這里圖簡單,都開放了,你自己酌情處理。

安裝連接Linux工具

常見的好幾種:putty、SSHSecureShellClient、RealVNCMobaXtem

我使用的就是最后一種MobaXtem,挺方便:

2、安裝所有環境依賴與服務組件

因為我的六個項目中,有前端和后端,有守護進程,代理和源代碼管理等等,所以在整個遷移的過程中,需要安裝的東西還是比較多的,【如果你不需要安裝的,可以自行跳過】

1、安裝.NET Core SDK

https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-package-manager-centos7

這是官網地址,在安裝.NET之前,

  • 將 Microsoft ? ? 包簽名密鑰添加到受信任密鑰列表。

  • 將此存儲庫添加到包管理器。

  • 安裝必需的依賴項。

每臺計算機只需要執行一次此操作。

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

sudo yum install dotnet-sdk-3.1

安裝成功,測試一下版本:

dotnet --list-sdks


完成!

2、安裝Node 和 npm/cnpm

https://nodejs.org/en/download

你可以本地下載好后,上傳到服務器:

當然,你也可以直接在服務器里下載,解壓和安裝:

cd 到 /home 路徑(可自定義)

下載:

wget?https://nodejs.org/dist/v12.16.3/node-v12.16.3-linux-x64.tar.xz

解壓:

tar -xf node-v12.16.3-linux-x64.tar.xz

設置全局變量:

vim /etc/profile PATH=$PATH:/home/node-v12.16.3-linux-x64/bin/?

刷新配置文件:

source /etc/profile

測試結果:

npm -v node?-v

當然,想要更快,可以使用淘寶的國內鏡像cnpm:

npm?install?-g?cnpm --registry=https://registry.npm.taobao.org

3、安裝Git 源代碼管理

sudo yum -y install git

測試結果:

git --version

4、安裝 PM2 進程守護

cnpm install -g pm2

當然,你也可以用系統自帶的systemctl來操作,畢竟沒有界面,而且也不用配置各種服務文件,而且后邊在處理nuxt項目的時候,還是PM2可能更好些。

pm2常用命令記錄

$ pm2 start app.js # 啟動app.js應用程序

$ pm2 start app.js -i 4? ? ? ? # cluster mode 模式啟動4個app.js的應用實例

# 4個應用程序會自動進行負載均衡

$ pm2 start app.js --name="api" # 啟動應用程序并命名為 "api"

$ pm2 start app.js --watch? ? ? # 當文件變化時自動重啟應用

$ pm2 start script.sh? ? ? ? ? # 啟動 bash 腳本

$ pm2 list? ? ? ? ? ? ? ? ? ? ? # 列表 PM2 啟動的所有的應用程序

$ pm2 monit? ? ? ? ? ? ? ? ? ? # 顯示每個應用程序的CPU和內存占用情況

$ pm2 show [app-name]? ? ? ? ? # 顯示應用程序的所有信息

$ pm2 logs? ? ? ? ? ? ? ? ? ? ? # 顯示所有應用程序的日志

$ pm2 logs [app-name]? ? ? ? ? # 顯示指定應用程序的日志

$ pm2 flush? ? ? ? ? ? ? ? ? ? ? ?# 清空所有日志文件

$ pm2 stop all? ? ? ? ? ? ? ? ? # 停止所有的應用程序

$ pm2 stop 0? ? ? ? ? ? ? ? ? ? # 停止 id為 0的指定應用程序

$ pm2 restart all? ? ? ? ? ? ? # 重啟所有應用

$ pm2 reload all? ? ? ? ? ? ? ? # 重啟 cluster mode下的所有應用

$ pm2 gracefulReload all? ? ? ? # Graceful reload all apps in cluster mode

$ pm2 delete all? ? ? ? ? ? ? ? # 關閉并刪除所有應用

$ pm2 delete 0? ? ? ? ? ? ? ? ? # 刪除指定應用 id 0

$ pm2 scale api 10? ? ? ? ? ? ? # 把名字叫api的應用擴展到10個實例

$ pm2 reset [app-name]? ? ? ? ? # 重置重啟數量

$ pm2 startup? ? ? ? ? ? ? ? ? # 創建開機自啟動命令

$ pm2 save? ? ? ? ? ? ? ? ? ? ? # 保存當前應用列表

$ pm2 resurrect? ? ? ? ? ? ? ? # 重新加載保存的應用列表

$ pm2 update? ? ? ? ? ? ? ? ? ? # Save processes, kill PM2 and restore processes

$ pm2 generate? ? ? ? ? ? ? ? ? # Generate a sample json configuration file

5、安裝文檔打包組件 Vuepress

cnpm?install?-g?vuepress


測試:

vuepress --version

6、安裝代理服務器 NGINX

sudo yum install nginx

啟用和啟動服務:

sudo systemctl enable nginx sudo systemctl start nginx

http://118.25.251.113/usr/share/nginx/html

通過ip地址即可查看對應的歡迎頁。

3、跑通NET Core的源代碼

這里為了更新的更快些,我直接用的碼云的地址(不要老問我是不是和GitHub同步的????)

1、git克隆源代碼

下載好了六個項目,剩下的就是打包發布了,很簡單,先說下三個后端項目:

這里就用Blog.Core舉例子,其他的都一樣:

在項目的根目錄,有一個 `Blog.Core.Publish.Linux.sh` 文件,直接執行這個,就可以打包發布了,其他兩個項目,DDD和Ids4也都有一個,我做這個的目的,就是以后使用Jenkins的時候,直接copy過去就行了(其實我講的東西都是為了以后做鋪墊的)。

只不過執行的時候,可能會提示權限不足,添加上777權限就行了。

chmod 777 Blog.Core.Publish.Linux.sh

然后執行這個這個sh文件,就可以看到創建了一個 .PublishFiles 的文件夾,然后我們cd進去/home/Blog.Core/.PublishFiles/,執行查看是否正常,注意是大小寫的:

dotnet Blog.Core.dll

,這里要說明下,如果使用Sqlite的話,可能會報錯:

這個問題這幾天會修復。

執行后,發現已經成功了,那接下來就需要在公網上查看是否可行,這個時候就需要Nginx代理了:

2、NGINX 服務代理

進入/etc/nginx/文件夾

修改nginx.conf文件,這里你可以使用 vim ,也可以下載到本地,修改,然后再提交上去,看自己的需要了,反正vim也很簡單,就是那幾個命令:

vim xxx

i

:wq!

如果看不懂,還是下載本地修改吧。

修改的內容如下:

###### apk begin #######server { listen 80;server_name apk.neters.club;location / {root html;proxy_pass http://localhost:8081;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection keep-alive;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_cache_bypass $http_upgrade;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;index index.html index.htm;}location /.doc/ {proxy_pass http://docs.neters.club/;}}server {listen 80;server_name docs.neters.club;location / {root /home/Blog.Core/.docs/contents/.vuepress/dist;index index.html index.htm;}}###### apk end #######

接下來就是重啟Nginx服務,首先可以檢測語法錯誤:

nginx -t

nginx -s reload

這個時候,如果沒報錯,那恭喜,項目啟動成功了,當然你需要配置自己的域名。

我們返回上一步,啟動Blog.Core.dll服務,就可以在公網查看效果了。

但是如果關閉窗口,那服務就停掉了,我們需要守護一下,上邊我們說到了,官方的也可以,我更喜歡用PM2來進程守護。

3、PM2 進程守護

剛剛我們說到了,我們已經進去了/home/Blog.Core/.PublishFiles/文件夾,通過執行dotnet名利判斷項目可以運行,那接下來我們換一種寫法,守護一下這個進程:

pm2 start "dotnet Blog.Core.dll" --name apk.dll

自動出現這個結果,表示我們已經守護成功了,當然我們也可以通過命令來查看,重啟,刪除等等,比如我們以后更新了代碼,然后發布了結果,直接重啟下PM2就行了,比如我們重啟下上邊剛剛創建id=3的進程:

pm2?restart 3

這一列,從圖標上我們也可以看出來,這是重啟次數,如果某一個項目error了,或者服務器重啟了,pm2會幫助我們自動重啟所有的項目服務,保證項目能正常運行,這個可方便多了。

這個時候,我們在外網訪問下,一切正常了,很棒,這就是開放的整體流程:

pull 代碼

publish批處理文件執行發布

dotnet xxx.dll測試發布是否正常

重啟pm2

修改nginx(可選)

重啟nginx(可選)

外網查看

剩下的DDD和Ids4兩個項目,是一模一樣的,不贅述。

4、如何用自帶服務守護進程

這里我不使用這種方式,僅僅是作為內容的擴展和備份:

在/etc/systemd/system 下新建文件文件名以.service結尾,配置內容為:

?

[Unit]Description=blog.core[Service] WorkingDirectory=/home/Blog.Core/.PublishFiles ExecStart=/usr/bin/dotnet/home/Blog.Core/.PublishFiles/Blog.Core.dll Restart=always RestartSec=25 SyslogIdentifier=blog.core User=root Environment=ASPNETCORE_ENVIRONMENT=Production [Install] WantedBy=multi-user.target

?

2、寫完配置文件后保存,輸入指令確認服務:

systemctlenable blog.core.service

然后啟動服務? systemctl start blog.core.service

然后查看一下服務狀態:systemctlstatus blog.core

4、跑通Nuxt項目

我們都知道Nuxt.js是一個SSR渲染的Vue框架,所以我們必須要守護這個進程,也是很簡單,和net core有相似之處。

1、下載并打包項目

cnpm?i cnpm run build

2、運行項目

如果是服務端渲染的話,需要我們start我們的服務,而不是通過generate的命令,生成dist靜態文件的形式:

npm?run?start

這個時候,服務端進程就啟動了,那我們也需要守護他。

3、守護進程

很簡單,還是在當前文件目錄下,執行

pm2 start npm --name "tibug" -- run start

是不是和上邊的命令很像。

到這里就守護好了進程:

4、配置Nginx代理轉發

###### tibug begin #######upstream nodenuxt {server 127.0.0.1:3089; keepalive 64;}server {listen 80;server_name tibug.neters.club;location / {proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";proxy_set_header Host $host;proxy_set_header X-Nginx-Proxy true;proxy_cache_bypass $http_upgrade;proxy_pass http://nodenuxt;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}###### tibug end #######

很簡單,肯定都能看得懂,這里服務端的部署就告一段落了,剩下就是很簡單的js前端的部署了。

5、部署Vue.js前端項目

這里就簡單的不能再簡單了,下載好代碼后,

打包生成dist靜態文件,

配置nginx服務代理轉發,

搞定。

###### vueadmin begin #######server {listen 80;server_name vueadmin.neters.club;location / {try_files $uri $uri/ /index.html;root /home/Blog.Admin/dist;index index.html index.htm;}location /api/ {rewrite ^.+apb/?(.*)$ /$1 break;include uwsgi_params;proxy_pass http://localhost:8081;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}location /api2/ {rewrite ^.+apb/?(.*)$ /$1 break;include uwsgi_params;proxy_pass http://localhost:8081;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}location /images/ {include uwsgi_params;proxy_pass http://localhost:8081;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;#proxy_set_header Connection "upgrade";#proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}location /.doc/ {proxy_pass http://docsadmin.neters.club/;}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 html;}}server {listen 80;server_name docsadmin.neters.club;location / {root /home/Blog.Admin/.doc/contents/.vuepress/dist;index index.html index.htm;}} ###### vueadmin end #######

重點的就是要進行反向代理,其他的就是簡單的部署一個靜態html頁面而已。

6、難點與結論

其實通過上邊的操作,一般四五個小時肯定能搞定,快的話三個小時就完全能搞定前后端發部署和發布,我幾乎沒有遇到太多的問題,可能得益于NETCore本身就是跨平臺的,雖然以前都是在window服務器運行,但是也有Linux的影子,當然,可能有部分難點:

1、文件大小寫和路徑問題;

2、文件權限問題;

3、net core本地正常,服務器不行的問題(多半是少文件,看日志);

4、nginx代理失敗問題(參考我的就行);

5、多項目聯調問題(不好調,盡量本地沒問題了再提交);

6、等等其他

最后,祝大家學有所成吧。

總結

以上是生活随笔為你收集整理的[最全操作指南] 在线六个项目全部迁移Linux的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。