这是一种方法(使用节点服务器作为apache服务器提供的react网站的API)。
您可以让nodejs在端口5000(远程服务器上)上运行,但请确保您没有使用
localhost
但是
0.0.0.0
.
IE.
app.listen(5000, "0.0.0.0")
;
现在,您应该能够通过该端口IE上的公共IP/DNS名称与节点服务器通信。
MyPublicIPordnsName:5000个
. (假设您已安装
nodejs
以及
npm
=>注意版本,
apt-get install nodejs
默认情况下,将获取旧版本)
如果您需要更新版本的
诺迪斯
然后您可以通过以下步骤获取它(您可以替换它
setup_8.x
与您的首选版本分离)。
cd ~
curl -sL https://deb.nodesource.com/setup_8.x -o nodesource_setup.sh
sudo bash nodesource_setup.sh
sudo apt-get install nodejs
使用Apache2服务器为静态(react,css,…)文件提供服务(不需要运行
create-react-app server
)
sudo apt-get update
sudo apt-get install apache2
使用
npm run build
然后将创建的文件放在
/build
文件夹(在React文件夹中)到
/var/www/html
(在远程服务器上)。请注意,您需要将文件和文件夹从
建造
文件夹,而不是
建造
文件夹本身。
现在,当您键入
MyPublicIPordnsName(MyPublicIPordnsName)
地址(假设Apache正在运行
sudo systemctl start apache2
)
为了让Apache正常工作(如果您使用的是前端路由-ie.
react-router-dom
)您需要转到
/etc/apache2/sites-enabled/000-default.conf
并放置此配置
RewriteEngine on
# Don't rewrite files or directories
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
# Rewrite everything else to index.html to allow html5 state links
RewriteRule ^ index.html [L]
在下面
文件中的节。(阿帕奇不知道你的反应路线。这将使它推送不知道如何处理根目录的每个请求,并留下react handle路由)
然后您需要确保rewriteengine正在运行(否则在重新启动Apache服务器时会出错)。
sudo a2enmod rewrite
最后,重新启动Apache服务器
sudo /etc/init.d/apache2 restart
现在,它应该起作用了。
请注意,您需要在使用新的公共IP/DNS时修改Ajax调用。