[英]Deploying a create-react-app to Plesk Onyx
這個問題不會特別詳細,因為這個問題非常基本,並且與 Plesk Onyx 如何實現節點支持的限制有關。
我正在嘗試將使用 create-react-app 創建的 react 應用程序部署到安裝了 Plesk Onyx 的服務器上托管的域。 我顯然不能亂搞核心服務器,因為我可能會破壞其他域。 因此,我需要以 Plesk 正確處理的方式安裝此應用程序。 我遇到的問題是我沒有找到如何在任何地方執行此操作的指南。
Plesk 需要一個非常不靈活的項目結構,它與 create-react-app 強加的結構完全不同。 例如,Plesk 要求文檔根目錄是應用程序根目錄的子節點,這與 create-react-app 設置項目的方式完全相反。
我沒有在這里顯示代碼,因為這是部署問題,而不是代碼問題,並且涉及項目的結構以及如何將圓釘塞入方孔中。
我遇到了類似的問題,但我想我有某種解決方法。 我還沒有真正嘗試過這是否有效,或者在 Plesk Onyx 中是否有效。
基本上,我想將 create-react-app 放到基於 plesk onyx 的托管並運行npm start
最終導致react-scripts start
,我意識到 Plesk 沒有能力做到這一點。 Plesk 不是 VPS...
相反,Plesk 運行一個 js 腳本文件來執行服務器,如App.js
或server.js
,它可以通過 Plesk NodeJS 控制面板進行設置。
要做到這一點,我安裝了express
運行: npm install express --save
,並提出了server.js
包含該代碼文件中:
const express = require('express');
const bodyParser = require('body-parser')
const path = require('path');
const app = express();
app.use(express.static(path.join(__dirname, 'build')));
app.get('/', function (req, res) {
res.sendFile(path.join(__dirname, 'build', 'index.html'));
});
app.listen(process.env.PORT || 8080);
我從這里得到了代碼: https : //dev.to/loujaybee/using-create-react-app-with-express
然后我運行npm run build
來創建一個生產版本,最后運行node server.js
。 我的應用程序(來自 react 教程的簡單井字游戲)在本地主機端口 8080 中可用。
如果我成功了,我會給你一個更新。
我發現一個非常簡單的方法是在不添加 express 或使用 node.js 的情況下做到這一點。 這也將使react-router
工作。
.htaccess
文件添加到create-react-app
文件夾中的public
文件夾中Options -MultiViews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.html [QSA,L]
npm run-script build
build
目錄的全部內容 FRP 到您在 Plesk 上的 Linux 服務器Valian 的解決方法確實適用於 SPA。 但是,如果您使用 react-router 創建多頁應用程序,則很容易解決。
您需要添加一個帶有通配符的額外 app.get() 以覆蓋您的所有路徑。
const express = require('express');
const bodyParser = require('body-parser')
const path = require('path');
const app = express();
app.use(express.static(path.join(__dirname, 'build')));
app.get('/', function (req, res) {
res.sendFile(path.join(__dirname, 'build', 'index.html'));
});
app.get('/*', function (req, res) {
res.sendFile(path.join(__dirname, 'build', 'index.html'));
});
app.listen(process.env.PORT || 8080);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.