Sundar
Sundar

Reputation: 4650

create-react-app build deploy on LAMP/XAMPP/WAMP

How to deploy the build on Apache WAMP/XAMPP server?

I have an app created with create-react-app and I have two pages on this application

When I execute yarn start or npm start it's working fine and all the pages are rendering properly on the URL navigation or button click

I executed the build command

npm run build

It's generating all the static and index.html files on build folder.

I moved this build folder content to www of wamp folder and execute on the url http://localhost its showing only the home page. and the next page gives 404 not found error

But when I am executing the serve module of npm command it's working fine on http://localhost:5000

serve build

Please help me how to resolve this?

I have to deploy my application on wamp server all are static pages there is no rest api contents

Upvotes: 10

Views: 25059

Answers (4)

speedy.user
speedy.user

Reputation: 31

Create a folder in htdocs (xampp) named react.

add "homepage": "./", (for relative path) or "homepage": "http://localhost/react/", (absolute path) in package.json file.

And on App.js file

<BrowserRouter basename='/react'>
  <Switch>
    <Route exact path="/">
      Hello
    </Route>
    <Route path="*" render={() => "404 Not found!"} />
  </Switch>
</BrowserRouter>

After configuring package.json and App.js run build command

npm run build

Then copy all files from build folder to react folder in htdocs.

And also create an .htaccess in react folder in htdocs.

Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.html [QSA,L]

If your sub folder name is different then replace /react with your folder name.

Example - rename /react from

"homepage": "http://localhost/react/"  
<BrowserRouter basename='/react'>

to

"homepage": "http://localhost/your_folder_name/"
<BrowserRouter basename='/your_folder_name'>

Upvotes: 2

Miraj Khandaker
Miraj Khandaker

Reputation: 1082

Set the basename attribute on the .

<Router basename={'/directory-name'}>
    <Route path='/' component={Home} />
</Router>

directory-name is the folder name under your xampp htdocs folder

Upvotes: 1

vess
vess

Reputation: 523

By default, your react project is built to be deployed directly into your server 'www' (root) folder. Hence you may copy the contents of your project 'build' folder to the WAMP 'www' folder and then go to http://localhost/ in your browser. Your project will be displayed.

Alternatively, you may want to use a WAMP root subfolder, e.g. 'www/react/'. In this case add to your package.json file a homepage key:

"homepage": "http://localhost/react/",

Then build your project again:

npm run build

Finally, copy the contents of your project 'build' folder to 'www/react/'. To display your project visit http://localhost/react/

You may get more information in How to deploy a React App on Apache web server

Upvotes: 9

EltraEden
EltraEden

Reputation: 111

You need to configure homepage for your build.

Upvotes: 0

Related Questions