VPSでCakePHP① CentOSセットアップ
備忘録。
環境
さくらのVPS
CentOS7
アップデート
とりあえず全体アップデートをかける。
# yum update
ユーザ作成
平常作業時はrootを使わないのが基本、らしい。
# useradd americandog # passwd americandog
二回パスワードを打つ。
これで作成は完了。
それから作成ユーザにsudo権限を持たせておく。
# usermod -G wheel americandog
以後作成ユーザで操作していく。
# su americandog
セキュリティ
サーバーをセキュアにするために以下の設定を行う。
最初からrootログインできないように設定。
sshログインに使うポートを変更(22はあまりに有名なため攻撃を受けやすい)。
パスワードログインを不可にして鍵ログインするように設定。
鍵生成、公開鍵のサーバーへの受け渡しはここを参考に。
ssh公開鍵認証設定まとめ - Qiita
$ sudo vi /etc/ssh/sshd_config
# /etc/ssh/sshd_config - #Port 22 + Port 22222 - #PermitRootLogin yes + PermitRootLogin no - #PasswordAuthentication yes + PasswordAuthentication no
再起動して設定反映。
$ sudo systemctl restart sshd
ファイアウォールのポートも合わせる。
<!-- /user/lib/firewalld/services/ssh.xml --> - <port protocol="tcp" port="22"/> + <port protocol="tcp" port="22222"/>
再起動で設定反映。
$ sudo firewall-cmd --reload
Railsで本番環境だけpostgresql使いたい設定したら怒られた
ここ数日、自分で環境作ってのRailsアプリ開発に挑戦している。
予想はしてたが、ハマりまくる。
Cloud9って楽だったんだなあ。
Gemfile
source 'https://rubygems.org' gem 'rails', '5.0.3' gem 'puma', '3.9.1' gem 'bootstrap-sass', '3.3.6' gem 'sass-rails', '5.0.6' gem 'uglifier', '3.2.0' gem 'coffee-rails', '4.2.2' gem 'jquery-rails', '4.3.1' gem 'turbolinks', '5.0.1' gem 'jbuilder', '2.6.1' gem 'therubyracer' group :development, :test do gem 'sqlite3', '1.3.13' gem 'byebug', '9.0.6', platform: :mri end group :development do gem 'web-console', '3.5.1' gem 'listen', '3.0.8' end group :test do gem 'rails-controller-testing', '1.0.2' gem 'minitest-reporters', '1.1.14' end group :production do gem 'pg', '0.18.4' end
開発環境ではsqliteで、って設定。
これでbundle installしたらpgないぞコラって怒られた。
対処
色々試したのでどれが効いたか正直あやふやなのだけど、
まずおとなしくpostgresqlを入れてみた。
# wget yum.postgresql.org/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-2.noarch.rpm # rpm -ivh pgdg-centos95-9.5-2.noarch.rpm # yum -y install postgresql95-server postgresql95-devel postgresql95-contrib
が、だめ。
次に--without productionを試した。
$ bundle install --without production
bundle updateしろと出てきたらその通り従う。
これでいけた。
rails gしたら`method_missing': undefined method `load_defaults' ってエラー出た
Gemfile
source 'https://rubygems.org' gem 'rails', '5.0.3' gem 'puma', '3.9.1' gem 'bootstrap-sass', '3.3.6' gem 'sass-rails', '5.0.6' gem 'uglifier', '3.2.0' gem 'coffee-rails', '4.2.2' gem 'jquery-rails', '4.3.1' gem 'turbolinks', '5.0.1' gem 'jbuilder', '2.6.1' gem 'therubyracer' group :development, :test do gem 'sqlite3', '1.3.13' gem 'byebug', '9.0.6', platform: :mri end group :development do gem 'web-console', '3.5.1' gem 'listen', '3.0.8' end group :test do gem 'rails-controller-testing', '1.0.2' gem 'minitest-reporters', '1.1.14' end group :production do gem 'pg', '0.18.4' end
CentOS環境にはRails 5.1〜, GemfileにはRails 5.0〜を指定してbundle update, bundle installした。
その結果rails gした際に以下のエラー発生。
# webyaji=筆者の開発アプリ [vagrant@localhost webyaji]$ rails g model test /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.3/lib/rails/railtie/configuration.rb:95:in `method_missing': undefined method `load_defaults' for #<Rails::Application::Configuration:0x007fa562795108> (NoMethodError) from /home/vagrant/app/webyaji/config/application.rb:12:in `<class:Application>' from /home/vagrant/app/webyaji/config/application.rb:10:in `<module:Webyaji>' from /home/vagrant/app/webyaji/config/application.rb:9:in `<top (required)>' from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.3/lib/rails/commands/commands_tasks.rb:156:in `require' from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.3/lib/rails/commands/commands_tasks.rb:156:in `require_application_and_environment!' from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.3/lib/rails/commands/commands_tasks.rb:143:in `generate_or_destroy' from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.3/lib/rails/commands/commands_tasks.rb:60:in `generate' from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.3/lib/rails/commands/commands_tasks.rb:49:in `run_command!' from /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.3/lib/rails/commands.rb:18:in `<top (required)>' from bin/rails:9:in `require' from bin/rails:9:in `<main>'
たぶんload_defaultsとかいうメソッドしらねーよって怒られてる。
一時間ほどハマったが調べていくとload_defaultsがRails5.1系から使えるようになったメソッドと判明。
# config/application.rb require_relative 'boot' require 'rails/all' # Require the gems listed in Gemfile, including any gems # you've limited to :test, :development, or :production. Bundler.require(*Rails.groups) module Webyaji class Application < Rails::Application # Initialize configuration defaults for originally generated Rails version. - config.load_defaults 5.1 + # config.load_defaults 5.1 # Settings in config/environments/* take precedence over those specified here. # Application configuration should go into files in config/initializers # -- all .rb files in that directory are automatically loaded. end end
コメントアウト後、再度rails gして大丈夫になったことを確認。
[vagrant@localhost webyaji]$ rails g model test Expected string default value for '--jbuilder'; got true (boolean) invoke active_record create db/migrate/20170725131230_create_tests.rb create app/models/test.rb invoke test_unit create test/models/test_test.rb create test/fixtures/tests.yml
Vagrantで立ち上げた仮想CentOSのファイルをCyberduckから操作したい
環境
OSX EICapitan
Vagrant 1.9.7
VirtualBox 5.1.24
CentOS7
下準備
さくらVPS(CentOS7)をWebサーバ化してHelloWorldする
環境
さくらのVPS CentOS7
ログイン
$ ssh root@[IPアドレス]
パスワード入力欄が出てくるので入力してrootで入る。
Apacheを入れる
# yum -y install httpd # systemctl start httpd.service # systemctl enable httpd.service
起動と自動起動設定もしておく。
ファイアウォール設定
ポート開放コマンド。
# firewall-cmd --zone=public --add-service=http --permanent # firewall-cmd --add-port=80/tcp --zone=public --permanent # firewall-cmd --reload
これでブラウザで見に行った際に拒否されない。
htmlファイル作成
# vi /var/www/html/index.html
< !-- /var/www/html/index.html -- >
Hello World
表示確認
ブラウザのアドレスバーにVPSのIPアドレスを打ち込みENTER。
Hello World表示が見えたら成功。
VagrantでCentOS7立ち上げてみる
筆者環境
OSX EICapitan
VirtualBoxをインストール
Vagrant by HashiCorp
ここから。
pkg開くときに検証中と出て進まないときは以下のコマンドで対応。
$ sudo installer -package /Volumes/VirtualBox/VirtualBox.pkg -target /
Vagrantインストール
Vagrant by HashiCorp
ここから。
同上の現象で進めなくなった場合は以下コマンド。
$ sudo installer -package /Volumes/Vagrant/Vagrant.pkg -target /
Box追加
Discover Vagrant Boxes - Vagrant Cloud
ここから好きな環境を選んで落としてくればいいっぽい(自己責任)。
CentOS7が欲しいのでこれをチョイス。
$ vagrant box add centos/7
エラー起きたら以下参照。
vagrant 1.8.7 でboxを追加しようとするとエラーになる時の対処法 - Qiita
ボックスはあくまでテンプレート。鋳型のようなもん(たぶん)。
続いてボックスを実体として立ち上げていく。
CentOS7 mysqlがインストールできない
$ sudo yum install mysql-server 読み込んだプラグイン:fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: ftp.iij.ad.jp * epel: ftp.riken.jp * extras: ftp.iij.ad.jp * updates: centosk3.centos.org パッケージ mysql-server は利用できません。 エラー: 何もしません
エラーの原因は正確にはわからないが、デフォルトで入ってるmariaDBと競合する場合があるという記事を発見。
下記の通りに実施したら無事インストールできた。
$ sudo yum remove mariadb-libs $ sudo rm -rf /var/lib/mysql/ $ sudo yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm $ sudo yum -y install mysql-community-server $ mysqld --version mysqld Ver 5.7.19 for Linux on x86_64 (MySQL Community Server (GPL))