Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to start Ghost in production mode with this repo/image? #2

Closed
JS1010111 opened this issue Mar 7, 2015 · 42 comments
Closed

How to start Ghost in production mode with this repo/image? #2

JS1010111 opened this issue Mar 7, 2015 · 42 comments

Comments

@JS1010111
Copy link

@JS1010111 JS1010111 commented Mar 7, 2015

I have tried the following with no success:

Here is the error when trying to 'docker run' the image:

ghost@0.5.9 start /usr/src/ghost
node index

ERROR: Unable to access Ghost's content path:
EACCES, permission denied '/usr/src/ghost/content/apps/283e85be3ed7c1c0'

Check that the content path exists and file system permissions are correct.
Help and documentation can be found at http://support.ghost.org.

@tianon
Copy link
Member

@tianon tianon commented Mar 13, 2015

When I was doing the initial pass at this image, I played a little with production mode but in my own testing found that it required some hand-tweaking of the configuration file (which is stored in the database directory /var/lib/ghost --

' "$GHOST_SOURCE/config.example.js" > "$GHOST_CONTENT/config.js"
).

http://support.ghost.org/config/#about-environments has some good information about both modes and why development mode is the default.

Of course, if there are things we can do in the image to make production mode simpler to use, we're definitely open to suggestions. 👍

@johnjelinek
Copy link

@johnjelinek johnjelinek commented Mar 16, 2015

I am getting this error too, the links above didn't help with troubleshooting. Still trying to work through it.

@johnjelinek
Copy link

@johnjelinek johnjelinek commented Mar 16, 2015

ahh, the issue is that it's trying to access /usr/src/ghost/content/apps/ instead of /var/lib/ghost/apps/. Maybe the entrypoint needs to symlink that.

@johnjelinek
Copy link

@johnjelinek johnjelinek commented Mar 16, 2015

I figured it out. Be sure to add this in your config.js to your production property:

        paths: {
            contentPath: path.join(process.env.GHOST_CONTENT, '/')
        }
@johnjelinek
Copy link

@johnjelinek johnjelinek commented Mar 16, 2015

It's strange that the paths property is set in development, but not in production.

@JS1010111
Copy link
Author

@JS1010111 JS1010111 commented Mar 16, 2015

Thanks you, @johnjelinek ! I'm using Ghost Pro now but I will try this on my VPS.

@yosifkit
Copy link
Member

@yosifkit yosifkit commented Mar 16, 2015

That seems strange that there is not a default paths section in the production config. It should be possible for an awk line to insert a paths section with this information. Would this be necessary or do people bring their own config and they will just need a note on the docs about the required path section?

@johnjelinek
Copy link

@johnjelinek johnjelinek commented Mar 16, 2015

It might actually be a bug/enhancement for ghost to address.


Sent from Mailbox

On Mon, Mar 16, 2015 at 4:45 PM, yosifkit notifications@github.com
wrote:

That seems strange that there is not a default paths section in the production config. It should be possible for an awk line to insert a paths section with this information. Would this be necessary or do people bring their own config and they will just need a note on the docs about the required path section?

Reply to this email directly or view it on GitHub:
#2 (comment)

@tianon
Copy link
Member

@tianon tianon commented Mar 16, 2015

@johnjelinek
Copy link

@johnjelinek johnjelinek commented Mar 16, 2015

It was a little weird having to change my directory structure from what I
had previously with the dockerfile/ghost container. It wasn't too big of
a change though.

On Mon, Mar 16, 2015 at 5:37 PM, Tianon Gravi notifications@github.com
wrote:

IMO, it would probably help if we documented clearly that "/var/lib/ghost"
is where the data is stored, and that the configuration file is sourced
from there as well.

Then, documenting how to change the configuration for switching a blog over
to production mode should be more straightforward (or pointing to the
configuration existing in that directory and directing users to upstream's
documentation from there).


Reply to this email directly or view it on GitHub
#2 (comment).

@darthbinamira
Copy link

@darthbinamira darthbinamira commented Mar 19, 2015

@tianon 👍 for mentioning /var/lib/ghost - took me awhile to know it was taking from there while i was copying my custom config.js to /usr/src/ghost. oops

thanks @johnjelinek for the paths tip. weird thing is that when I removed everything in config.js except for the production config, it still wasn't working. so I had to put everything back to get it to work.

@sandrokeil
Copy link

@sandrokeil sandrokeil commented Apr 6, 2015

@JoSpalding I run this image in production mode with the following docker-compose.yml. There is no need for pull request #5

ghost:
  image: ghost
  ports:
    - 2368:2368
  environment:
    - NODE_ENV=production
@johnjelinek
Copy link

@johnjelinek johnjelinek commented Apr 6, 2015

👍

@JS1010111
Copy link
Author

@JS1010111 JS1010111 commented Apr 6, 2015

Thanks for the tip @sandrokeil !

@JS1010111 JS1010111 closed this Apr 6, 2015
@frdmn
Copy link

@frdmn frdmn commented Apr 23, 2015

Same issue over here:

$ docker run --name="docker-ghost"  -p 8091:2368 -v /tmp/docker-ghost:/var/lib/ghost -e NODE_ENV=production ghost

> ghost@0.6.0 start /usr/src/ghost
> node index

ERROR: Unable to access Ghost's content path:
  EACCES, permission denied '/usr/src/ghost/content/apps/b19a6ce607ff34c3'

Check that the content path exists and file system permissions are correct.
Help and documentation can be found at http://support.ghost.org.

My file structure:

❯  docker-ghost git:(master) ✗ ls -la
total 40
drwxr-xr-x   9 friedmann  wheel   306 23 Apr 10:44 .
drwxrwxrwt  17 root       wheel   578 23 Apr 11:00 ..
drwxr-xr-x  13 friedmann  wheel   442 23 Apr 11:00 .git
-rw-r--r--   1 friedmann  wheel   384 23 Apr 08:52 .gitignore
-rw-r--r--   1 friedmann  wheel   483 23 Apr 08:23 LICENSE
-rw-r--r--   1 friedmann  wheel   981 23 Apr 10:58 Makefile
-rw-r--r--   1 friedmann  wheel   697 23 Apr 08:23 README.md
-rw-r--r--   1 friedmann  wheel  3774 23 Apr 10:58 config.js
drwxr-xr-x@  7 friedmann  wheel   238 23 Apr 08:25 content

And my config.js: http://paste.frd.mn/eqaca

Any ideas? Thanks in advance!

@johnjelinek
Copy link

@johnjelinek johnjelinek commented Apr 24, 2015

@frdmn: you're missing this property in your production section of the config:

paths: {
            contentPath: path.join(__dirname, '/content/')
        }

see above.

@frdmn
Copy link

@frdmn frdmn commented Apr 24, 2015

@johnjelinek Same issue with the appended path section: http://paste.frd.mn/kiyub

❯  docker-ghost git:(master) ✗ docker run --name="docker-ghost" -p 8091:2368 -v /tmp/docker-ghost:/var/lib/ghost -e NODE_ENV=production ghost

> ghost@0.6.0 start /usr/src/ghost
> node index

ERROR: Unable to access Ghost's content path:
  EACCES, permission denied '/usr/src/ghost/content/apps/3f5a4717b0d009f6'

Check that the content path exists and file system permissions are correct.
Help and documentation can be found at http://support.ghost.org.
@johnjelinek
Copy link

@johnjelinek johnjelinek commented Apr 24, 2015

What does your docker run look like?


Sent from Mailbox

On Fri, Apr 24, 2015 at 1:42 AM, Jonas Friedmann notifications@github.com
wrote:

❯  docker-ghost git:(master) ✗ docker run --name="docker-ghost" -p 8091:2368 -v /tmp/docker-ghost:/var/lib/ghost -e NODE_ENV=production ghost
> ghost@0.6.0 start /usr/src/ghost
> node index
ERROR: Unable to access Ghost's content path:
  EACCES, permission denied '/usr/src/ghost/content/apps/3f5a4717b0d009f6'
Check that the content path exists and file system permissions are correct.
Help and documentation can be found at http://support.ghost.org.

Reply to this email directly or view it on GitHub:
#2 (comment)

@frdmn
Copy link

@frdmn frdmn commented Apr 24, 2015

@johnjelinek You can see the command argument in my previous comment. At the moment (to check the stdout) I use:

$ docker run --name="docker-ghost" -p 8091:2368 -v /tmp/docker-ghost:/var/lib/ghost -e NODE_ENV=production ghost

But in production:

$ docker run --name="docker-ghost" --restart=always -d -p 8091:2368 -v /tmp/docker-ghost:/var/lib/ghost -e NODE_ENV=production ghost
@rarkins
Copy link

@rarkins rarkins commented May 4, 2015

Same problem here. To "solve", I run it once in development mode, update the files (e.g. config.js as described above) and then run again with NODE_ENV=production. This definitely should be solved so that path is added to the default config.js that's created.

@kumavis
Copy link

@kumavis kumavis commented Jul 21, 2015

I was excited about the docker image, but that was excessively unintuitive.
for others, here's my config as a reference:

I'm providing PUBLIC_URL and PORT, others are injected by the image

// # Ghost Configuration
// Setup your Ghost install for various [environments](http://support.ghost.org/config/#about-environments).

// Ghost runs in `development` mode by default. Full documentation can be found at http://support.ghost.org/config/

const path = require('path')
const PUBLIC_URL = process.env.PUBLIC_URL
const PORT = process.env.PORT || '2368'
const GHOST_CONTENT = process.env.GHOST_CONTENT
const GHOST_SOURCE = process.env.GHOST_SOURCE


console.log('using this config!')
console.log('GHOST_CONTENT:', GHOST_CONTENT) //  /var/lib/ghost
console.log('GHOST_SOURCE:', GHOST_SOURCE)   //  /usr/src/ghost



var config = {
    // ### Production
    // When running Ghost in the wild, use the production environment.
    // Configure your URL and mail settings here
    production: {
        url: PUBLIC_URL,
        paths: {
            contentPath: GHOST_CONTENT,
        },
        mail: {},
        database: {
            client: 'sqlite3',
            connection: {
                filename: path.join(GHOST_CONTENT, '/data/ghost.db'),
            },
            debug: true,
        },

        server: {
            host: '0.0.0.0',
            port: PORT,
        }
    }
}

module.exports = config

I'm using VIRTUAL_HOST and VIRTUAL_PORT outside of Ghost, not needed.

blog:
  image: library/ghost
  environment:
    VIRTUAL_HOST: "blog.metamask.io"
    VIRTUAL_PORT: "9000"
    PORT: "9000"
    NODE_ENV: "production"
    PUBLIC_URL: "https://blog.metamask.io"
  volumes:
    - /var/data/blog:/var/lib/ghost
  ports:
    - "9000"
@RomkeVdMeulen
Copy link

@RomkeVdMeulen RomkeVdMeulen commented Aug 5, 2015

Thanks @kumavis! That was a big help.

👍

@thizzle
Copy link

@thizzle thizzle commented Oct 18, 2015

Spent quite a bit of time batting with this image as well. Thanks for the thorough summary, @kumavis – helped get me to the finish line.

@bohanyang
Copy link

@bohanyang bohanyang commented Nov 21, 2015

Thanks! +10087

@FSerg
Copy link

@FSerg FSerg commented Dec 15, 2015

@kumavis Thanks a lot!

@youxiachai
Copy link

@youxiachai youxiachai commented Feb 23, 2016

@kumavis Thanks!

@stephan-nordnes-eriksen

I was having issues with this and i found this: #15

Specifically the comment from @mustafaakin which states this:

I have modified the Dockerfile to allow production and it seems to work:

 RUN chown -R user:user /usr/src/ghost/
 CMD ["npm", "start", "--production"]

I skipped the CMD part, but running the chown -R user:user /usr/src/ghost/ solved the problem for me.

@totmann
Copy link

@totmann totmann commented Nov 30, 2016

Thanks for the solutions!

@dwin
Copy link

@dwin dwin commented Jan 6, 2017

This issue still existed for me. The above fix, (#2 (comment)) worked for me.

@babatundebusari
Copy link

@babatundebusari babatundebusari commented Feb 15, 2017

is this issue resolved? or why is it closed?
I am still getting the same issue

@weipah
Copy link

@weipah weipah commented Mar 4, 2017

I don't see why the fix in 2nd Comment is still not part of the default config? Will it do any harm if present for other scenarios?

This issue is two years old now and still there is no well documented workaround on the docker hub.

@SISheogorath
Copy link

@SISheogorath SISheogorath commented Mar 5, 2017

For non-existent configs it's solved and part of the image. Existing config has to edit like this. If you want it documented open a pull request for documentation. Should be possible in less than 5 minutes. Check the entrypoint script.

@weipah
Copy link

@weipah weipah commented Mar 14, 2017

Seems not fixed for non-existent, because the entry-point script copies from the sample config which does not include the paths entry discussed in 2nd comment. At least for 0.11.7 that is the case.

@JREAM
Copy link

@JREAM JREAM commented Mar 31, 2017

Can someone share their config? I can't run this locally, I stumped.
My config must be wrong. I removed test also, I had problems prior to that though.

  • Docker version 17.03.1-ce, build c6d412e
  • ghost:0.11.7

I tried @kumavis suggestion which does help (just dont declare config twice if ya do).
I am getting the variables below too.

Run

docker run  -p 8080:2368 -v $PWD/:/var/lib/ghost ghost:0.11.7
npm info it worked if it ends with ok
npm info using npm@2.15.11
npm info using node@v4.8.1
npm info prestart ghost@0.11.7
npm info start ghost@0.11.7

> ghost@0.11.7 start /usr/src/ghost
> node index

using this config!
GHOST_CONTENT: /var/lib/ghost
GHOST_SOURCE: /usr/src/ghost
ERROR: Cannot find the configuration for the current NODE_ENV: development

Ensure your config.js has a section for the current NODE_ENV value and is formatted properly.
[...]
$ tree -L 1
.
├── apps
├── config.js
├── content
├── data
├── images
├── readme.md
└── themes

./config.js

// # Ghost Configuration

// Ghost runs in `development` mode by default.
// Full documentation can be found at http://support.ghost.org/config/

const path = require('path')
const PUBLIC_URL = process.env.PUBLIC_URL
const PORT = process.env.PORT || '2368'
const GHOST_CONTENT = process.env.GHOST_CONTENT
const GHOST_SOURCE = process.env.GHOST_SOURCE


console.log('using this config!')
console.log('GHOST_CONTENT:', GHOST_CONTENT) //  /var/lib/ghost
console.log('GHOST_SOURCE:', GHOST_SOURCE)   //  /usr/src/ghost

// var path = require('path'),
//     config;

config = {
    // ### Production
    // When running Ghost in the wild, use the production environment.
    // Configure your URL and mail settings here
    production: {
        url: 'http://blog.jream.com',
        mail: {},
        database: {
            client: 'sqlite3',
            connection: {
                filename: path.join(process.env.GHOST_CONTENT, '/data/ghost.db')
            },
            debug: false
        },

        server: {
            host: '0.0.0.0',
            port: '2368'
        },

        paths: {
            contentPath: path.join(__dirname, '/content/'),
        }
    },

    // ### Development **(default)**
    development: {
        // The url to use when providing links to the site, E.g. in RSS and email.
        // Change this to your Ghost blog's published URL.
        url: 'http://localhost:2368',

        // Example refferer policy
        // Visit https://www.w3.org/TR/referrer-policy/ for instructions
        // default 'origin-when-cross-origin',
        // referrerPolicy: 'origin-when-cross-origin',

        // Example mail config
        // Visit http://support.ghost.org/mail for instructions
        // ```
        //  mail: {
        //      transport: 'SMTP',
        //      options: {
        //          service: 'Mailgun',
        //          auth: {
        //              user: '', // mailgun username
        //              pass: ''  // mailgun password
        //          }
        //      }
        //  },
        // ```

        // #### Database
        // Ghost supports sqlite3 (default), MySQL & PostgreSQL
        database: {
            client: 'sqlite3',
            connection: {
                filename: path.join(process.env.GHOST_CONTENT, '/data/ghost-dev.db')
            },
            debug: false
        },
        // #### Server
        // Can be host & port (default), or socket
        server: {
            // Host to be passed to node's `net.Server#listen()`
            host: '0.0.0.0',
            // Port to be passed to node's `net.Server#listen()`, for iisnode set this to `process.env.PORT`
            port: '2368'
        },
        // #### Paths
        // Specify where your content directory lives
        paths: {
            contentPath: path.join(__dirname, '/content/'),
        }
    },
};
@weipah
Copy link

@weipah weipah commented Apr 12, 2017

@JREAM
There is no need to remove testing. You can just delete your current config and restart the container to get a fresh config. Then add the paths part as mentioned before.

I think there is no comma after contentPath line and also my config shows a different path:

paths: {
            contentPath: path.join(process.env.GHOST_CONTENT, '/')
        }
@stevenaldinger
Copy link

@stevenaldinger stevenaldinger commented Apr 22, 2017

Thanks so much to @tianon for making it super clear /var/lib/ghost is where it had to be. I installed in /var/www/ghost cause that's what the install guide said to do :/ Appreciate the hard work anyway guys, thanks for making this available

@stevenaldinger
Copy link

@stevenaldinger stevenaldinger commented Apr 22, 2017

@JREAM you still struggling? Are you a .js dev? Your config looks super wonky. You've got process.env.GHOST_CONTENT half the time and __dirname joined for the rest, kinda assuming thats your issue. Here's a working config, make sure to chown to ghost or whatever user you're running as and make sure config.js is in var/lib/ghost/config.js. Don't hesitate to message me if you need a hand. Had to upload a .txt cause .js isn't supported.
config.txt

@iShawnWang
Copy link

@iShawnWang iShawnWang commented Nov 19, 2017

What's going on here ?
It's still not solved !!!

:(

@weipah
Copy link

@weipah weipah commented Nov 19, 2017

What exactly do you mean? There is a newer image already.

@iShawnWang
Copy link

@iShawnWang iShawnWang commented Nov 19, 2017

I just deployed a latestghost:alpine image with Host Volume /var/lib/ghost/content and when I try to upload a new Publication cover,
I got this error :

2017-11-20 02:10:24:�[31m
2017-11-20 02:10:24:�[31mNAME: InternalServerError�[39m
2017-11-20 02:10:24:�[31mCODE: EACCES�[39m
2017-11-20 02:10:24:�[31mMESSAGE: EACCES: permission denied, open '/var/lib/ghost/content/images/2017/11/allef-vinicius-180699-1.jpg'�[39m
2017-11-20 02:10:24:
2017-11-20 02:10:24:�[37mlevel:�[39m�[37mnormal�[39m
2017-11-20 02:10:24:
2017-11-20 02:10:24:�[37mInternalServerError: EACCES: permission denied, open '/var/lib/ghost/content/images/2017/11/allef-vinicius-180699-1.jpg'
2017-11-20 02:10:24:    at new GhostError (/var/lib/ghost/versions/1.17.3/core/server/errors.js:9:26)
2017-11-20 02:10:24:    at prepareError (/var/lib/ghost/versions/1.17.3/core/server/middleware/error-handler.js:40:19)
2017-11-20 02:10:24:    at Layer.handle_error (/var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/layer.js:71:5)
2017-11-20 02:10:24:    at trim_prefix (/var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/index.js:315:13)
2017-11-20 02:10:24:    at /var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/index.js:284:7
2017-11-20 02:10:24:    at Function.process_params (/var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/index.js:335:12)
2017-11-20 02:10:24:    at next (/var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/index.js:275:10)
2017-11-20 02:10:24:    at Layer.handle_error (/var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/layer.js:67:12)
2017-11-20 02:10:24:    at trim_prefix (/var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/index.js:315:13)
2017-11-20 02:10:24:    at /var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/index.js:284:7
2017-11-20 02:10:24:    at Function.process_params (/var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/index.js:335:12)
2017-11-20 02:10:24:    at next (/var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/index.js:275:10)
2017-11-20 02:10:24:    at /var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/index.js:635:15
2017-11-20 02:10:24:    at next (/var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/index.js:260:14)
2017-11-20 02:10:24:    at next (/var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/route.js:127:14)
2017-11-20 02:10:24:    at onAPIError (/var/lib/ghost/versions/1.17.3/core/server/api/index.js:286:13)
2017-11-20 02:10:24:    at tryCatcher (/var/lib/ghost/versions/1.17.3/node_modules/bluebird/js/release/util.js:16:23)
2017-11-20 02:10:24:    at Promise._settlePromiseFromHandler (/var/lib/ghost/versions/1.17.3/node_modules/bluebird/js/release/promise.js:512:31)
2017-11-20 02:10:24:    at Promise._settlePromise (/var/lib/ghost/versions/1.17.3/node_modules/bluebird/js/release/promise.js:569:18)
2017-11-20 02:10:24:    at Promise._settlePromise0 (/var/lib/ghost/versions/1.17.3/node_modules/bluebird/js/release/promise.js:614:10)
2017-11-20 02:10:24:    at Promise._settlePromises (/var/lib/ghost/versions/1.17.3/node_modules/bluebird/js/release/promise.js:689:18)
2017-11-20 02:10:24:    at Async._drainQueue (/var/lib/ghost/versions/1.17.3/node_modules/bluebird/js/release/async.js:133:16)
2017-11-20 02:10:24:
2017-11-20 02:10:24:Error: EACCES: permission denied, open '/var/lib/ghost/content/images/2017/11/allef-vinicius-180699-1.jpg'
2017-11-20 02:10:24:    at Error (native)�[39m
2017-11-20 02:10:24:�[39m
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:02] "GET /ghost/" �[32m200�[39m 7ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:03] "GET /ghost/api/v0.1/configuration/" �[32m200�[39m 4ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:03] "GET /ghost/api/v0.1/users/me/?include=roles" �[32m200�[39m 42ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:03] "GET /ghost/api/v0.1/configuration/private/" �[32m200�[39m 15ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:03] "GET /ghost/api/v0.1/settings/?type=blog%2Ctheme%2Cprivate" �[32m200�[39m 33ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:03] "GET /ghost/api/v0.1/notifications/" �[32m200�[39m 26ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:03] "GET /ghost/api/v0.1/configuration/timezones/" �[32m200�[39m 19ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:03] "GET /ghost/api/v0.1/settings/?type=blog%2Ctheme%2Cprivate" �[32m200�[39m 30ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:08] "GET /ghost/" �[32m200�[39m 4ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:08] "GET /ghost/api/v0.1/configuration/" �[32m200�[39m 4ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:08] "GET /ghost/api/v0.1/configuration/private/" �[32m200�[39m 17ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:09] "GET /ghost/api/v0.1/settings/?type=blog%2Ctheme%2Cprivate" �[32m200�[39m 34ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:09] "GET /ghost/api/v0.1/users/me/?include=roles" �[32m200�[39m 57ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:09] "GET /ghost/api/v0.1/notifications/" �[32m200�[39m 16ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:09] "GET /ghost/api/v0.1/configuration/timezones/" �[32m200�[39m 17ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:09] "GET /ghost/api/v0.1/settings/?type=blog%2Ctheme%2Cprivate" �[32m200�[39m 30ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:16] "GET /public/ghost-sdk.min.js?v=71a3c02404" �[32m200�[39m 13ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:16] "GET /" �[32m200�[39m 213ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:16] "GET /assets/built/screen.css?v=2ab82c0260" �[32m200�[39m 3ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:16] "GET /public/ghost-sdk.min.js?v=2ab82c0260" �[32m200�[39m 0ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:16] "GET /assets/js/jquery.fitvids.js?v=2ab82c0260" �[32m200�[39m 2ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:16] "GET /assets/js/infinitescroll.js?v=2ab82c0260" �[32m200�[39m 5ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:19] "GET /content/images/2017/07/Unknown.jpeg" �[32m200�[39m 2677ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:23] "GET /content/images/2017/07/hello-2015466_1920.jpg" �[32m200�[39m 6161ms
2017-11-20 02:10:24:�[31mERROR�[39m [2017-11-19 18:07:24] "GET /favicon.png" �[31m500�[39m 30ms
2017-11-20 02:10:24:�[31m
2017-11-20 02:10:24:�[31mNAME: InternalServerError�[39m
2017-11-20 02:10:24:�[31mCODE: ENOENT�[39m
2017-11-20 02:10:24:�[31mMESSAGE: Could not read image: /var/lib/ghost/content/images/2017/11/UNADJUSTEDNONRAW_small.png�[39m
2017-11-20 02:10:24:
2017-11-20 02:10:24:�[37mlevel:�[39m�[37mnormal�[39m

and then search engine lead me to here.
I was struggling, because I don't know how to solve this issue, or may be this actually not related to issue #2

@weipah

@weipah
Copy link

@weipah weipah commented Nov 19, 2017

Yeah, this looks rather like a permissions issue and is not related to the original here.
You should open a new issue then.

@iShawnWang
Copy link

@iShawnWang iShawnWang commented Nov 19, 2017

Ok ~ thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
You can’t perform that action at this time.