{"id":5052,"date":"2022-04-07T18:30:50","date_gmt":"2022-04-07T09:30:50","guid":{"rendered":"https:\/\/suzutukiblog.com\/?p=5052"},"modified":"2022-08-29T20:42:21","modified_gmt":"2022-08-29T11:42:21","slug":"ec2-2","status":"publish","type":"post","link":"https:\/\/suzutukiblog.com\/index.php\/2022\/04\/07\/ec2-2\/","title":{"rendered":"\u30dd\u30fc\u30c8\u30d5\u30a9\u30ea\u30aa\u3092\u30c7\u30d7\u30ed\u30a4\u3057\u305f\u3068\u304d\u306eEC2\u306e\u8a2d\u5b9a2(EC2+RDS+NGINX+Puma)"},"content":{"rendered":"<p><a href=\"https:\/\/suzutukiblog.com\/index.php\/2022\/03\/01\/ec2\/\">\u305d\u306e\uff11\u304b\u3089\u7d9a\u3044\u3066\u3044\u307e\u3059<\/a><\/p>\n<h3>16:Github\u3068SSH\u3092\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u9375\u3092\u4f5c\u6210<\/h3>\n<p>\u203bEC2\u5185\u3067\u884c\u3044\u307e\u3059\u3002(ssh\u30b3\u30de\u30f3\u30c9\u3067\u63a5\u7d9a\u3057\u3066\u304b\u3089\u3060\u3088)<\/p>\n<pre class=\"p1\">cd ~\/.ssh\r\n\r\nssh-keygen -t rsa\r\n\r\n\u4f8b\u3068\u3057\u3066rsa_portfolio\u3067\u4f5c\u6210<\/pre>\n<h3>17:\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210<\/h3>\n<pre>vim config\r\n\r\n#\u4ee5\u4e0b\u3092\u8a18\u8ff0\u3057\u3066\u30bb\u30fc\u30d6\r\n\r\n\u3053\u3053\u304b\u3089\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\r\nHost github\r\n\r\n<span class=\"Apple-converted-space\">\u00a0 <\/span>Hostname github.com\r\n\r\n<span class=\"Apple-converted-space\">\u00a0 <\/span>User git\r\n\r\n<span class=\"Apple-converted-space\">\u00a0 <\/span>IdentityFile ~\/.ssh\/rsa_portfolio\r\n\r\n\u3053\u3053\u307e\u3067\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d\uff1d<\/pre>\n<h3>18:\u516c\u958b\u9375\u3092\u767b\u9332\u3059\u308b<\/h3>\n<pre>#\u516c\u958b\u9375\u3092\u30b3\u30d4\u30fc\u3057\u3066\u63a7\u3048\u3066\u304a\u304f\u4e00\u756a\u3046\u3057\u308d\u306e\u90e8\u5206\u306f\u30b3\u30d4\u30fc\u3057\u306a\u304f\u3066\u826f\u3044\r\ncat rsa_portfolio.pub\r\n\r\n#Github\u3067\u516c\u958b\u9375\u3092\u767b\u9332\r\n\u2460GitHub\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u81ea\u5206\u306e\u30a2\u30a4\u30b3\u30f3\u304b\u3089Settings\u3092\u30af\u30ea\u30c3\u30af\r\n\u2461SSH and GPG keys\u3092\u30af\u30ea\u30c3\u30af\r\n\u2462SSHkey\u3092\u767b\u9332\u3059\u308b(rsa_portfolio.pub)<\/pre>\n<h3>19:GitHub\u3068SSH\u63a5\u7d9a\u3059\u308b<\/h3>\n<pre class=\"p1\">chmod 600 \/home\/newuser\/.ssh\r\n\r\nssh -T github\r\n\r\n#\u30a8\u30e9\u30fc\u3067\u63a5\u7d9a\u3067\u304d\u306a\u304b\u3063\u305f\u6642\u306b\u8a66\u3057\u307e\u3059(\u63a5\u7d9a\u3067\u304d\u305f\u3089\u3084\u3089\u306a\u304f\u3066\u3044\u3044\u3044\u3067\u3059)\r\nchmod 744 config<\/pre>\n<h3>20:GitHub\u304b\u3089\u30af\u30ed\u30fc\u30f3\u3057\u3066bundler\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059<\/h3>\n<p>GitHub\u306b\u3066\u30c7\u30d7\u30ed\u30a4\u3057\u305f\u3044\u81ea\u5206\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u306eCode\u2192SSH\u304b\u3089\u30b3\u30d4\u30fc\u3057\u3066<\/p>\n<pre class=\"p1\">git clone git@github.com:newuser\/\u30a2\u30d7\u30ea\u540d.git\r\n\r\ngem install bundler -v '2.0.2'<\/pre>\n<h3>21:gem\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059<\/h3>\n<pre class=\"p1\">cd \u30a2\u30d7\u30ea\u540d\/\r\n\r\nbundle install --path vendor\/bundle\r\n\r\n#\u30a8\u30e9\u30fc\u304c\u51fa\u305f\u5834\u5408\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u5408\u308f\u305b\u308b\r\n\r\nGemfile\uff0elock\u306e\u6700\u4e0b\u6bb5b\u306e BUNDLED WITH \u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3068\u5408\u308f\u305b\u308b(\u4f8b\uff1a1.16.6)\r\n\r\n#\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u301c\u3067\u884c\u3046\r\n\r\ncd ~\r\ngem install bundler -v '1.16.6'\r\nbundle install --path vendor\/bundle\r\n\r\n#\u30a8\u30e9\u30fc\u3067rmagik\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u51fa\u6765\u306a\u3044\u3068\u304d\u306e\u30b3\u30de\u30f3\u30c9 \r\n\r\nsudo yum -y install ImageMagick \r\nsudo yum -y install ImageMagick-devel\r\nbundle install --path vendor\/bundle\r\nyarn install<\/pre>\n<p class=\"p1\"><b>22:nginx\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b<\/b><\/p>\n<pre class=\"p3\"><b>sudo amazon-linux-extras install nginx1\r\n\r\n#\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u305f\u304b\u78ba\u8a8d\r\nnginx -v<\/b><\/pre>\n<h3>23:\u30a2\u30d7\u30ea\u540d.conf\u306e\u8a2d\u5b9a(Nginx)<\/h3>\n<pre>sudo vim \/etc\/nginx\/nginx.conf<\/pre>\n<pre>\uff03\u4ee5\u4e0b\u3092\u30b3\u30d4\u30fc\u3057\u3066\u8cbc\u308a\u4ed8\u3051\u307e\u3059\r\n\r\nuser nginx;\r\nworker_processes auto; \r\nerror_log \/var\/log\/nginx\/error.log; \r\npid \/run\/nginx.pid; \r\n# Load dynamic modules. See \/usr\/share\/doc\/nginx\/README.dynamic. \r\ninclude \/usr\/share\/nginx\/modules\/*.conf; \r\nevents { \r\nworker_connections 1024; \r\n} \r\n\r\nhttp { \r\nlog_format main '$remote_addr - $remote_user [$time_local] \"$request\" ' \r\n                '$status $body_bytes_sent \"$http_referer\" ' \r\n                '\"$http_user_agent\" \"$http_x_forwarded_for\"'; \r\n\r\naccess_log \/var\/log\/nginx\/access.log main; \r\n\r\nsendfile on; \r\ntcp_nopush on; \r\ntcp_nodelay on; \r\nkeepalive_timeout 65; \r\ntypes_hash_max_size 4096; \r\n\r\ninclude \/etc\/nginx\/mime.types; \r\ndefault_type application\/octet-stream; \r\n\r\n# Load modular configuration files from the \/etc\/nginx\/conf.d directory. \r\n# See http:\/\/nginx.org\/en\/docs\/ngx_core_module.html#include \r\n# for more information. \r\n\r\ninclude \/etc\/nginx\/conf.d\/*.conf; \r\ngzip on; \r\ngzip_http_version 1.0;\r\ngzip_proxied any; \r\ngzip_min_length 500; \r\ngzip_disable \"MSIE [1-6]\\.\"; \r\ngzip_types text\/plain text\/xml text\/css \r\n           text\/comma-separated-values \r\n           text\/javascript application\/x-javascript \r\n           application\/atom+xml; }<\/pre>\n<h3>24:nginx\u306e\u8a2d\u5b9a\u3092\u3059\u308b<\/h3>\n<pre>cd \/etc\/nginx\/conf.d\/ \r\nsudo vim \u30a2\u30d7\u30ea\u540d.conf\r\n\r\n#\u4ee5\u4e0b\u3092\u3059\u3079\u3066\u30b3\u30d4\u30fc\u3057\u3066\u8cbc\u308a\u4ed8\u3051\u307e\u3059\r\n# log directory\r\nerror_log \/var\/www\/LifeHack-Tools\/log\/nginx.error.log; #\u81ea\u5206\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u540d\u306b\u5909\u66f4\r\naccess_log \/var\/www\/LifeHack-Tools\/log\/nginx.access.log; #\u81ea\u5206\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u540d\u306b\u5909\u66f4\r\n# max body size\r\nclient_max_body_size 4G;\r\n\r\nupstream app_server {\r\n# for UNIX domain socket setups\r\nserver unix:\/\/var\/www\/LifeHack-Tools\/tmp\/sockets\/puma.sock fail_timeout=0; #\u81ea\u5206\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u540d\u306b\u5909\u66f4\r\n}\r\n\r\nserver {\r\nlisten 80;\r\nserver_name suzutuki-portfolio.com; #\u81ea\u5206\u306eElasticIP\r\n# nginx so increasing this is generally safe...\r\nkeepalive_timeout 5;\r\n# path for static files\r\nroot \/var\/www\/LifeHack-Tools\/public; #\u81ea\u5206\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u540d\u306b\u5909\u66f4\r\n# page cache loading\r\ntry_files $uri\/index.html $uri.html $uri @app;\r\nlocation @app {\r\n# HTTP headers\r\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\nproxy_set_header Host $http_host;\r\nproxy_redirect off;\r\nproxy_pass http:\/\/app_server;\r\n}\r\n# Rails error pages\r\nerror_page 500 502 503 504 \/500.html;\r\nlocation = \/500.html {\r\nroot \/var\/www\/LifeHack-Tools\/public; #\u81ea\u5206\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u540d\u306b\u5909\u66f4\r\n}\r\n}<\/pre>\n<h3>25:Nginx\u306e\u518d\u8d77\u52d5<\/h3>\n<pre>#Nginx\u306e\u518d\u8d77\u52d5\r\nsudo nginx -s reload\r\n\r\ncd \/var\/www\/\u30a2\u30d7\u30ea\u540d\/\r\ngit pull origin master<\/pre>\n<h3>26:puma\u306e\u8a2d\u5b9a\u3092\u3059\u308b<\/h3>\n<pre>#puma\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304c\u306a\u3044\u3068\u304d\u306fmkdir \/var\/www\/\u30a2\u30d7\u30ea\u540d\/config\/puma\u3067\u4f5c\u6210\u3059\u308b\r\ncd \/var\/www\/\u30a2\u30d7\u30ea\u540d\/config\/puma\/\r\nsudo vim production.rb<\/pre>\n<pre class=\"p1\">#\u3053\u3053\u304b\u3089\u30b3\u30d4\u30fc\u3060\u3088\u2193\r\n\r\n# bind \"unix:\/\/#{Rails.root.join('tmp\/sockets\/puma.sock')}\"\u3060\u3068pumactl\u30b3\u30de\u30f3\u30c9\u3067\u8aad\u307f\u8fbc\u307e\u306a\u3044\u305f\u3081\u7d76\u5bfe\u30d1\u30b9\u3067\u6307\u5b9a\r\n\r\nroot_dir = '\/var\/www\/\u30a2\u30d7\u30ea\u540d'\r\n\r\nmax_threads_count = ENV.fetch('RAILS_MAX_THREADS', 5)\r\n\r\nmin_threads_count = ENV.fetch('RAILS_MIN_THREADS', max_threads_count)\r\n\r\nthreads min_threads_count, max_threads_count\r\n\r\nworker_timeout 60\r\n\r\nbind \"unix:\/\/#{root_dir}\/tmp\/sockets\/puma.sock\"\r\n\r\nenvironment 'production'\r\n\r\npidfile File.expand_path('tmp\/pids\/server.pid')\r\n\r\nstdout_redirect File.expand_path('log\/puma_access.log'), File.expand_path('log\/puma_error.log'), true\r\n\r\n# worker\u306e\u6570\u306f\u9069\u5b9c\u5909\u66f4\u3059\u308b\u3002\u6307\u5b9a\u3057\u306a\u3044\u5834\u5408\u306fsingle mode\u3068\u306a\u308b\u304c\u3001\u6307\u5b9a\u3057\u305f\u5834\u5408\u306fcluster mode\u3068\u306a\u308b\u3002\r\n\r\nplugin :tmp_restart<\/pre>\n<h3>27:puma\u306e\u8d77\u52d5<\/h3>\n<pre>cd \/var\/www\/\u30a2\u30d7\u30ea\u540d\r\n\r\ngit pull origin master\r\n\r\nbundle exec rails s -e production<\/pre>\n<h3>28:\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u306e\u78ba\u8a8d<\/h3>\n<p>\u307e\u305a\u306fAWS\u3092\u958b\u304d\u3001RDS\u306e\u30e1\u30cb\u30e5\u30fc\u304b\u3089\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u9078\u629e\u3057\u3066<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-5044\" src=\"https:\/\/suzutukiblog.com\/wp-content\/uploads\/2022\/03\/9f1da4e960e0c326b7ca01db0ed0476f.png\" alt=\"\" width=\"2708\" height=\"1676\" srcset=\"https:\/\/suzutukiblog.com\/wp-content\/uploads\/2022\/03\/9f1da4e960e0c326b7ca01db0ed0476f.png 2708w, https:\/\/suzutukiblog.com\/wp-content\/uploads\/2022\/03\/9f1da4e960e0c326b7ca01db0ed0476f-300x186.png 300w, https:\/\/suzutukiblog.com\/wp-content\/uploads\/2022\/03\/9f1da4e960e0c326b7ca01db0ed0476f-1024x634.png 1024w, https:\/\/suzutukiblog.com\/wp-content\/uploads\/2022\/03\/9f1da4e960e0c326b7ca01db0ed0476f-768x475.png 768w, https:\/\/suzutukiblog.com\/wp-content\/uploads\/2022\/03\/9f1da4e960e0c326b7ca01db0ed0476f-1536x951.png 1536w, https:\/\/suzutukiblog.com\/wp-content\/uploads\/2022\/03\/9f1da4e960e0c326b7ca01db0ed0476f-2048x1268.png 2048w, https:\/\/suzutukiblog.com\/wp-content\/uploads\/2022\/03\/9f1da4e960e0c326b7ca01db0ed0476f-624x386.png 624w\" sizes=\"auto, (max-width: 2708px) 100vw, 2708px\" \/><\/p>\n<p>\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u3092\u30b3\u30d4\u30fc\u3057\u307e\u3059\u3002<\/p>\n<h3>29:Credential\u306e\u8a2d\u5b9a<\/h3>\n<pre>cd \/var\/www\/\u30a2\u30d7\u30ea\u540d\/config\r\n\r\ntouch master.key\r\n\r\nchmod 600 master.key\r\n\r\nvim master.key\r\n\r\n\uff03\u30ed\u30fc\u30ab\u30eb\u306b\u3042\u308bmaster.key\u306e\u4e2d\u8eab\u3092\u30b3\u30d4\u30fc\u3057\u3066\u8cbc\u308a\u4ed8\u3051\r\n# \u81ea\u5206\u3067\u4f5c\u6210\u3057\u305f\u30a2\u30d7\u30ea\u306econfig\u306bmaster.key\u304c\u3042\u308b\r\n# GitHub\u306b\u306f\u306a\u3044\u306e\u3067\u6ce8\u610f<\/pre>\n<h3>30:Credential\u306b\u66f8\u304d\u8fbc\u307f<\/h3>\n<pre>cd \/var\/www\/\u30a2\u30d7\u30ea\u540d\r\n\r\nEDITOR=\"vi\" bin\/rails credentials:edit\r\n# \u30a8\u30e9\u30fc\u3067\u3067\u304d\u306a\u3044\u5834\u5408\u306f\u3053\u3061\u3089\u3092\u8a66\u3059\r\n<code class=\"language-linux\">EDITOR='vi'<\/code><code class=\"language-linux\"> bundle exec rails<\/code><code class=\"language-linux\"> cr<\/code><code class=\"language-linux\">edentials:edit<\/code><\/pre>\n<p>username\u306f\u8a2d\u5b9a\u304b\u3089\u308f\u304b\u308b\u3002password\u306f\u308f\u304b\u3089\u306a\u304f\u306a\u3063\u305f\u3089\u5909\u66f4\u3067\u304d\u308b\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-5046\" src=\"https:\/\/suzutukiblog.com\/wp-content\/uploads\/2022\/03\/0c147fd4995ef9336b67be748bab1904.png\" alt=\"\" width=\"2700\" height=\"1072\" srcset=\"https:\/\/suzutukiblog.com\/wp-content\/uploads\/2022\/03\/0c147fd4995ef9336b67be748bab1904.png 2700w, https:\/\/suzutukiblog.com\/wp-content\/uploads\/2022\/03\/0c147fd4995ef9336b67be748bab1904-300x119.png 300w, https:\/\/suzutukiblog.com\/wp-content\/uploads\/2022\/03\/0c147fd4995ef9336b67be748bab1904-1024x407.png 1024w, https:\/\/suzutukiblog.com\/wp-content\/uploads\/2022\/03\/0c147fd4995ef9336b67be748bab1904-768x305.png 768w, https:\/\/suzutukiblog.com\/wp-content\/uploads\/2022\/03\/0c147fd4995ef9336b67be748bab1904-1536x610.png 1536w, https:\/\/suzutukiblog.com\/wp-content\/uploads\/2022\/03\/0c147fd4995ef9336b67be748bab1904-2048x813.png 2048w, https:\/\/suzutukiblog.com\/wp-content\/uploads\/2022\/03\/0c147fd4995ef9336b67be748bab1904-624x248.png 624w\" sizes=\"auto, (max-width: 2700px) 100vw, 2700px\" \/><\/p>\n<pre>db: \r\n\r\n<span class=\"Apple-converted-space\">\u00a0 <\/span>endpoint: ******************** #\u5148\u7a0b\u30b3\u30d4\u30fc\u3057\u305f\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u3092\u30b3\u30d4\u30fc\r\n\r\n<span class=\"Apple-converted-space\">\u00a0 <\/span>user_name: ***** # \u30de\u30b9\u30bf\u30fc\u30e6\u30fc\u30b6\u30fc\u540d\r\n\r\n<span class=\"Apple-converted-space\">\u00a0 <\/span>password: ****** # RDS\u4f5c\u6210\u3057\u305f\u6642\u306b\u4f5c\u3063\u305f\u30d1\u30b9\u30ef\u30fc\u30c9\r\n\r\n# Used as the base secret for all MessageVerifiers in Rails, including the one protecting cookies.\r\n\r\nsecret_key_base: *********** #\u3053\u3053\u306f\u7279\u306b\u624b\u3092\u52a0\u3048\u305a\u306b\u305d\u306e\u307e\u307e\u3067<\/pre>\n<h3 id=\"3.database.yml%E3%81%AE%E7%B7%A8%E9%9B%86\">31.database.yml\u306e\u7de8\u96c6<\/h3>\n<p>\u30ed\u30fc\u30ab\u30eb\u3067database.yml\u306e\u8a2d\u5b9a<br \/>\n\u5148\u307b\u3069\u306ecredentials\u306b\u8a18\u8f09\u3055\u308c\u305f\u60c5\u5831\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u306b\u306f\u00a0<code>Rails.application.credentials.db[:endpoint]<\/code>\u3068\u3044\u3046\u66f8\u304d\u65b9\u3092\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u3053\u308c\u3092\u5229\u7528\u3057\u3066production\u74b0\u5883\u7528\u306eDB\u306b\u95a2\u3057\u3066\u5b9a\u7fa9\u3002<\/p>\n<div class=\"code-block-container\">\n<div class=\"InsertCopyButtonToCodeBlock_codeBlockWrapper__XcDZh\">\n<pre><strong><span class=\"code-block-filename\">config\/database.yml<\/span><\/strong>\r\n\r\ndefault: &amp;default\r\n\r\n  adapter: mysql2\r\n \r\n  encoding: utf8mb4\r\n\r\n  pool: &lt;%= ENV.fetch(\"RAILS_MAX_THREADS\") { 5 } %&gt;\r\n\r\n  username: root\r\n\r\n  password: password\r\n\r\n  socket: \/tmp\/mysql.sock\r\n\r\n  host: db\r\n\r\ndevelopment:\r\n\r\n  &lt;&lt;: *default\r\n\r\n  database: \u30a2\u30d7\u30ea\u540d_development\r\n\r\nproduction:\r\n\r\n  &lt;&lt;: *default\r\n\r\n  database: \u30a2\u30d7\u30ea\u540d_production\r\n\r\n  adapter: mysql2\r\n\r\n  charset: utf8mb4\r\n\r\n  host: &lt;%= Rails.application.credentials.db[:endpoint] %&gt;\r\n\r\n  username: &lt;%= Rails.application.credentials.db[:user_name] %&gt;\r\n\r\n  password: &lt;%= Rails.application.credentials.db[:password] %&gt;<\/pre>\n<h3>32:\u5909\u66f4\u3057\u305f\u5dee\u5206\u3092\u53cd\u6620<\/h3>\n<pre>cd \/var\/www\/\u30a2\u30d7\u30ea\u540d\/\r\ngit pull origin master<\/pre>\n<h3>33:DB\u306e\u4f5c\u6210\u3068migrate<\/h3>\n<pre>bundle exec rake db:create RAILS_ENV=production\r\n\r\nbundle exec rake db:migrate RAILS_ENV=production\r\n\r\n#\u74b0\u5883\u306e\u8a2d\u5b9a\r\nexport RAILS_ENV=production\r\n\r\n<\/pre>\n<h3>34:\u30a2\u30bb\u30c3\u30c8\u30d7\u30ea\u30b3\u30f3\u30d1\u30a4\u30eb<\/h3>\n<pre class=\"p1\">bundle exec rake assets:precompile RAILS_ENV=production<\/pre>\n<h2 id=\"%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%81%A7%E7%A2%BA%E8%AA%8D\">35:\u30d6\u30e9\u30a6\u30b6\u3067\u78ba\u8a8d\u3059\u308b<\/h2>\n<pre>http:\/\/ElasticIP\u30a2\u30c9\u30ec\u30b9<\/pre>\n<h3>\u671f\u5f85\u3057\u3066\u3044\u305f\u901a\u308a\u306b\u306a\u3063\u3066\u3044\u305f\u3089OK\u3067\u3059\u3002<\/h3>\n<h3>36\uff1a\u672c\u756a\u74b0\u5883\u3067\u3082\u3061\u3083\u3093\u3068\u52d5\u3044\u3066\u3044\u308b\u304b\u78ba\u8a8d\u3057\u307e\u3059\u3002<\/h3>\n<p>\u30ec\u30a4\u30a2\u30a6\u30c8\u304c\u5d29\u308c\u3066\u3044\u306a\u3044\u304b<\/p>\n<p>\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u306a\u3044\u304b\u78ba\u8a8d\u3057\u307e\u3059\u3002<\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u305d\u306e\uff11\u304b\u3089\u7d9a\u3044\u3066\u3044\u307e\u3059 16:Github\u3068SSH\u3092\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u9375\u3092\u4f5c\u6210 \u203bEC2\u5185\u3067\u884c\u3044\u307e\u3059\u3002(ssh\u30b3\u30de\u30f3\u30c9\u3067\u63a5\u7d9a\u3057\u3066\u304b\u3089\u3060\u3088) cd ~\/.ssh ssh-keygen -t rsa \u4f8b\u3068\u3057\u3066rsa_portfo [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[30,27],"tags":[],"class_list":["post-5052","post","type-post","status-publish","format-standard","hentry","category-aws","category-programming-note"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/suzutukiblog.com\/index.php\/wp-json\/wp\/v2\/posts\/5052","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/suzutukiblog.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/suzutukiblog.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/suzutukiblog.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/suzutukiblog.com\/index.php\/wp-json\/wp\/v2\/comments?post=5052"}],"version-history":[{"count":16,"href":"https:\/\/suzutukiblog.com\/index.php\/wp-json\/wp\/v2\/posts\/5052\/revisions"}],"predecessor-version":[{"id":5568,"href":"https:\/\/suzutukiblog.com\/index.php\/wp-json\/wp\/v2\/posts\/5052\/revisions\/5568"}],"wp:attachment":[{"href":"https:\/\/suzutukiblog.com\/index.php\/wp-json\/wp\/v2\/media?parent=5052"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/suzutukiblog.com\/index.php\/wp-json\/wp\/v2\/categories?post=5052"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/suzutukiblog.com\/index.php\/wp-json\/wp\/v2\/tags?post=5052"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}