用安装包吧,不用费时费力了,https://bitnami.com/stack/ruby/installer
Ubuntu Server 10.10 安装配置 Ruby Rails3 passenger nginx MySQL
新换****,现在重新弄了个开发环境:
这回不用RVM,降低复杂性。
Ruby
1.
sudo apt-get update
sudo apt-get upgrade
2.
sudo apt-get install curl git
3. 安装编译工具, c相关的工具都安装了,也不差那点磁盘空间
sudo apt-get install build-essential
4. 到ruby官网获取下载地址,用wget下载
wget http://ftp.ruby-lang.org//pub/ruby/1.9/ruby-1.9.2-p180.tar.gz
5.
sudo ./configure -prefix=/usr/local/ruby #指定需要安装路径
make && make install
(
这一步碰到了权限的问题:
Permission denied - /usr/local/ruby (Errno::EACCES)
)
解决方法是将一步分成两步:
sudo make
sudo make install
或者sudo make && sudo make install
sudo ln -s /usr/local/ruby/bin/ruby /usr/bin/ruby
sudo ln -s /usr/local/ruby/bin/gem /usr/bin/gem
Rails
6.
问题:
:~$ sudo gem install rails
ERROR: Loading command: install (LoadError)
no such file to load -- zlib
ERROR: While executing gem ... (NameError)
uninitialized constant Gem::Commands::InstallCommand
解决:
下载zlib
sudo apt-get install zlib1g-dev
到ruby源代码:
#:~/software/ruby-1.9.2-p180/ext/zlib$ ruby extconf.rb
sudo make
sudo make install
重新:sudo gem install rails
rails -v没有反应,同样的问题,需要建立链接:
sudo ln -s /usr/local/ruby/bin/rails /usr/bin/rails
然后运行:
:~$ rails -v
Rails 3.0.5
这样就会有相应的问题,Rails 3 相关的指令都需要建立链接吗?
如果这样的话,还不如使用RVM来的方便了!
那怎么办呢? 简单,设置系统环境变量:
sudo gedit /etc/environment
#环境变量PATH值如下:
PATH="/usr/local/ruby/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
可以运行ri试试,应该感觉不错吧! good,go ahead!
顺带说一下ubuntu的环境变量
在Ubuntu中有如下几个文件可以设置环境变量
1、/etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。
2、/etc/environment:在登录时操作系统使用的第二个文件,系统在读取你自己的profile前,设置环境文件的环境变量。
3、~/.bash_profile:在登录时用到的第三个文件是.profile文件,每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变游戏量,执行用户的.bashrc文件。/etc/bashrc:为每一个运行bashshell的用户执行此文件.当bash shell被打开时,该文件被读取.
4、~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。5. /etc/rc.local:自动执行的脚本
可以用命令:env查看
1、Ubuntu专有方式
编辑 /etc/ld.so.conf 文件,如果以下语句不存在,则加入:
include /etc/ld.so.conf.d/*.conf
然后在/etc/ld.so.conf.d下边新建一个以 .conf 结尾的文件。
在新建的 .conf 文件中写入需要设置的 path,例如:
~/mypath/bin
2、用户目录下的 .bashrc 文件
在用户主目录下,有一个 .bashrc 文件,编辑该文件:
$gedit ~/.bashrc
在最后边加入需要设置变量的shell语句,例如:
export PATH=~/mypath/bin:$PATH
该文件编辑保存后,可立即在新打开的终端窗口内生效。
该方式添加的变量只能当前用户使用。
3、系统目录下的 profile 文件
在系统的 etc 目录下,有一个 profile 文件,编辑该文件:
$gedit /etc/profile
在最后边加入需要设置变量的shell语句,例如:
export PATH=~/mypath/bin:$PATH
该文件编辑保存后,重启系统,变量生效。
该方式添加的变量对所有的用户都有效。
4、系统目录下的 environment 文件
在系统的 etc 目录下,有一个 environment 文件,编辑该文件:
$gedit /etc/environment
找到以下的 PATH 变量:
PATH="<......>"
修改该 PATH 变量,在其中加入自己的path即可,例如:
PATH="~/mypath/bin:<......>"
各个path之间用冒号分割。该文件也是重启生效,影响所有用户。
or source /etc/environment 生效
根据需要选择合适的吧!
7.安装MYSQL吧
sudo apt-get install mysql-server mysql-client
设置MQSQL的UTF-8编码方式:
$sudo gedit /etc/mysql/my.cnf ,编辑添加如下内容
[mysql]
default-character-set = utf8
[mysqld]
default-character-set = utf8
init_connect = 'SET NAMES utf8'
[client]
default-character-set = utf8
运行:sudo /etc/init.d/mysql restart
检查;sudo netstat -tap | grep mysql
检查MYSQL查看编码
MYSQL命令: show variables like'character%';
或者:
#mysql -u root -p
Enter password: ******
> /s # 查看是否配置成功
Client characterset: utf8
Server characterset: utf8
>quit
8. Install nginx+passenger
sudo gem install passenger
passenger-install-nginx-module
这里需要一些required softwares,可以按照提示完成;
例如:
le@leUbt:~$
sudo apt-get install libopenssl-ruby
sudo apt-get install libcurl4-openssl-dev
sudo apt-get install libssl-dev
这个步骤有个问题,死活提示:
* OpenSSL support for Ruby... not found
手动安装了,但是死活找不到! 问题在哪里呢? 在irb里运行,require 'openssl' 确实是找不到。
哪问题在哪里呢?
解决方法:
(1)重新编译Ruby一下,问题解决了
(2)又一解决方法,未经过验证:http://hideto.javaeye.com/blog/99521 or
一开始尝试使用
sudo apt-get install libopenssl-ruby1.8
安装是安装成功了,但是仍然提示找不到openssl。还是决定从源码安装,首先确保ubuntu安装了openssl:
sudo apt-get install openssl
sudo apt-get install libssl-dev
sudo apt-get install libssl0.9.8
然后进入ruby源码目录下的/ext/openssl
cd RUBY_SOURCE/ext/openssl
ruby extconf.rb
make
sudo make install
新问题又出现了:
Permission problems
This installer must be able to write to the following directory:
/usr/local/ruby/lib/ruby/gems/1.9.1/gems/passenger-3.0.5
But it can't do that, because you're running the installer as ***.
Please re-run this installer as root.
方法一,釜底抽薪的方法:
注意:如果你想把nginx安装在非个人目录,如/usr/local/nginx或者/opt/nginx你需要以root身份执行以下命令
sudo /usr/local/ruby/lib/ruby/gems/1.9.1/gems/passenger-3.0.5/bin/passenger-install-nginx-module
方法二,灵活的方法----------->如果你喜欢被虐的话:
修改权限:chmod 777 /usr/local/ruby/lib/ruby/gems/1.9.1/gems/passenger-3.0.5
安装过程中又有其他的权限问题,则继续给予相应的权限。
另外 附带安装Nginx,需要建立文件夹:mkdir /opt/nginx;
修改文件夹权限:chmod 777 /opt/nginx
可以验证一下Nginx。 启动Nignx
9.配置MySQL
rails new helloMySQL -d mysql
cd ./helloMySQL
bundle update
进入应用程序目录,将root的密码添加到database.yml
问题:
Installing mysql2 (0.2.7) with native extensions /usr/local/ruby/lib/ruby/1.9.1/rubygems/installer.rb:483:in `rescue in block in build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)
/usr/local/ruby/bin/ruby extconf.rb
checking for rb_thread_blocking_region()... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lz... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lsocket... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lnsl... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lmygcc... no
checking for mysql_query() in -lmysqlclient... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
解决方法:
sudo apt-get install libmysql-ruby libmysqlclient-dev
bundle update
可以看到MySQL适配器mysql2被重新安装:
Using activeresource (3.0.5)
Using bundler (1.0.10)
Installing mysql2 (0.2.7) with native extensions
Using thor (0.14.6)
验证MySQL配置工作:
rake db:create
rails server
打开:http://127.0.0.1:3000/, 查看环境配置参数;
10. 配置nignx服务器
配置:/opt/nginx/conf/nginx.conf
http {
passenger_root /home/leslin123/.rvm/gems/ruby-1.9.2-p180/gems/passenger-3.0.3;
passenger_ruby /home/leslin123/.rvm/wrappers/ruby-1.9.2-p180/ruby;
include mime.types;
default_type application/octet-stream;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
gzip on;
server {
listen 80;
server_name localhost;
root /home/leslin123/rorails/helloMySQL/public; #设置app目录
passenger_enabled on;
rails_env development; #设置为开发环境,默认是生产环境
#charset koi8-r;
#access_log logs/host.access.log main;
#location / {
# root /home/leslin123/rorails/helloMySQL/public;
# index index.html index.htm;
#}
配置Nginx为启动项:
curl -L http://bit.ly/nginx-ubuntu-init-file > /etc/init.d/nginx
leslin123@ubuntuServerofLeslin:~$ sudo chmod +x /etc/init.d/nginx
leslin123@ubuntuServerofLeslin:~$ sudo /usr/sbin/update-rc.d -f nginx defaults
System start/stop links for /etc/init.d/nginx already exist.
leslin123@ubuntuServerofLeslin:~$ sudo /etc/init.d/nginx start
* Starting Nginx Server.
进入项目,建立脚手架:
~/rorails/helloMySQL$ rails generate scaffold Post name:string title:string content:text
rake db:create
rake db:migrate
http://localhost/
http://localhost/posts