[英]'rails server' command returns error: `mkdir': Permission denied @ dir_s_mkdir
I am trying to run a rails server sample that I downloaded. 我正在尝试运行我下载的Rails服务器示例。 But, I am getting a permissions error: 但是,我收到一个权限错误:
I run: 我跑:
rails server
I get: 我得到:
=> Booting Puma
=> Rails 4.2.4 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
Exiting
/usr/share/rvm/rubies/ruby-2.1.7/lib/ruby/2.1.0/fileutils.rb:250:in `mkdir': Permission denied @ dir_s_mkdir - /home/username/web-app/tmp (Errno::EACCES)
from /usr/share/rvm/rubies/ruby-2.1.7/lib/ruby/2.1.0/fileutils.rb:250:in `fu_mkdir'
from /usr/share/rvm/rubies/ruby-2.1.7/lib/ruby/2.1.0/fileutils.rb:224:in `block (2 levels) in mkdir_p'
from /usr/share/rvm/rubies/ruby-2.1.7/lib/ruby/2.1.0/fileutils.rb:222:in `reverse_each'
from /usr/share/rvm/rubies/ruby-2.1.7/lib/ruby/2.1.0/fileutils.rb:222:in `block in mkdir_p'
from /usr/share/rvm/rubies/ruby-2.1.7/lib/ruby/2.1.0/fileutils.rb:208:in `each'
from /usr/share/rvm/rubies/ruby-2.1.7/lib/ruby/2.1.0/fileutils.rb:208:in `mkdir_p'
from /home/username/.rvm/gems/ruby-2.1.7/gems/railties-4.2.4/lib/rails/commands/server.rb:134:in `block in create_tmp_directories'
from /home/username/.rvm/gems/ruby-2.1.7/gems/railties-4.2.4/lib/rails/commands/server.rb:133:in `each'
from /home/username/.rvm/gems/ruby-2.1.7/gems/railties-4.2.4/lib/rails/commands/server.rb:133:in `create_tmp_directories'
from /home/username/.rvm/gems/ruby-2.1.7/gems/railties-4.2.4/lib/rails/commands/server.rb:77:in `start'
from /home/username/.rvm/gems/ruby-2.1.7/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:80:in `block in server'
from /home/username/.rvm/gems/ruby-2.1.7/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:75:in `tap'
from /home/username/.rvm/gems/ruby-2.1.7/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:75:in `server'
from /home/username/.rvm/gems/ruby-2.1.7/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
from /home/username/.rvm/gems/ruby-2.1.7/gems/railties-4.2.4/lib/rails/commands.rb:17:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'
Seeing that it was a permissions error I tried: 看到这是我尝试的权限错误:
sudo rails server
But I only received this error 但是我只收到这个错误
Your Ruby version is 1.9.3, but your Gemfile specified 2.1.7
How do I overcome the permissions problem when the root user seems to be using a different version of ruby? 当root用户似乎正在使用其他版本的ruby时,如何解决权限问题?
EDIT 1: 编辑1:
ruby --version
returns: 收益:
ruby 2.1.7p400 (2015-08-18 revision 51632) [i686-linux]
EDIT 2: 编辑2:
sudo ruby --version
returns: 收益:
ruby 1.9.3p484 (2013-11-22 revision 43786) [i686-linux]
EDIT 3: 编辑3:
There is no tmp file in my web-app directory. 我的网络应用程序目录中没有tmp文件。 When I type ls -la
I get: 当我输入ls -la
我得到:
drwxr-xr-x 12 root root 4096 Nov 15 10:32 .
drwxr-xr-x 31 username username 4096 Nov 17 04:23 ..
drwxr-xr-x 10 root root 4096 Nov 15 10:32 app
drwxr-xr-x 2 root root 4096 Nov 15 10:32 bin
-rw-r--r-- 1 root root 126 Nov 15 10:32 browserslist
-rw-r--r-- 1 root root 363 Nov 15 10:32 Capfile
drwxr-xr-x 6 root root 4096 Nov 15 10:32 config
-rw-r--r-- 1 root root 153 Nov 15 10:32 config.ru
drwxr-xr-x 3 root root 4096 Nov 15 10:32 db
-rw-r--r-- 1 root root 1301 Nov 15 10:32 Gemfile
-rw-r--r-- 1 root root 10953 Nov 15 10:32 Gemfile.lock
drwxr-xr-x 8 root root 4096 Nov 15 10:32 .git
-rw-r--r-- 1 root root 470 Nov 15 10:32 .gitignore
drwxr-xr-x 4 root root 4096 Nov 15 10:32 lib
drwxr-xr-x 2 root root 4096 Nov 15 10:32 log
drwxr-xr-x 2 root root 4096 Nov 15 10:32 public
-rw-r--r-- 1 root root 249 Nov 15 10:32 Rakefile
-rw-r--r-- 1 root root 478 Nov 15 10:32 README.rdoc
-rw-r--r-- 1 root root 8 Nov 15 10:32 .rspec
drwxr-xr-x 3 root root 4096 Nov 15 10:32 spec
drwxr-xr-x 3 root root 4096 Nov 15 10:32 vendor
First one must create the tmp directory, then give it the necessary permissions. 首先,必须创建tmp目录,然后为其赋予必要的权限。 This can be done with the following code: 可以使用以下代码完成此操作:
sudo mkdir tmp
sudo chmod 777 tmp
Because every time you run rails server it create new file called server.pid
in your tmp/pids
folder. 因为每次运行Rails Server时,它都会在tmp/pids
文件夹中创建一个名为server.pid
新文件。 In your case when you run the server , it tries to create pid but you don't have the permission to create any file under this folder . 在您运行服务器的情况下,它会尝试创建pid,但您无权在此文件夹下创建任何文件。 you need to provide write permission to tmp
directory. 您需要提供对tmp
目录的写许可权。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.