{"id":33315,"date":"2023-10-28T18:02:50","date_gmt":"2023-03-01T05:04:33","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8centos%e5%b0%86nginx%e5%92%8cpassenger%e5%bc%95%e5%85%a5%ef%bc%8c%e5%b9%b6%e5%b0%86%e5%85%b6%e4%b8%8erails%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e8%bf%9b%e8%a1%8c%e9%9b%86%e6%88%90\/"},"modified":"2024-05-04T06:27:45","modified_gmt":"2024-05-03T22:27:45","slug":"%e4%bd%bf%e7%94%a8centos%e5%b0%86nginx%e5%92%8cpassenger%e5%bc%95%e5%85%a5%ef%bc%8c%e5%b9%b6%e5%b0%86%e5%85%b6%e4%b8%8erails%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e8%bf%9b%e8%a1%8c%e9%9b%86%e6%88%90","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8centos%e5%b0%86nginx%e5%92%8cpassenger%e5%bc%95%e5%85%a5%ef%bc%8c%e5%b9%b6%e5%b0%86%e5%85%b6%e4%b8%8erails%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e8%bf%9b%e8%a1%8c%e9%9b%86%e6%88%90\/","title":{"rendered":"\u4f7f\u7528CentOS\u5c06nginx\u548cpassenger\u5f15\u5165\uff0c\u5e76\u5c06\u5176\u4e0eRails\u5e94\u7528\u7a0b\u5e8f\u8fdb\u884c\u96c6\u6210"},"content":{"rendered":"<h1>\u9996\u5148<\/h1>\n<p>\u6700\u8fd1\uff0c\u5f53\u5c06Rails\u5e94\u7528\u90e8\u7f72\u5230GKE\uff08Google\u5bb9\u5668\u5f15\u64ce\uff09\u65f6\uff0c\u6211\u4f7f\u7528\u4e86Passenger\uff0c\u5e76\u53d1\u73b0\u5b83\u80fd\u591f\u65b9\u4fbf\u5730\u5b9e\u73b0nginx\u548crails\u7684\u6574\u5408\u3002\u56e0\u6b64\uff0c\u6211\u5e0c\u671b\u8fdb\u4e00\u6b65\u4e86\u89e3Passenger\u3002<\/p>\n<p>\u53c2\u8003\u6587\u732e\uff1a\u5728 Qiita \u4e0a\u90e8\u7f72 GKE \u4e0a\u7684 Rails + nginx(+Phusion Passenger ) + CloudSQL \u5e94\u7528<\/p>\n<p>\u6211\u60f3\u5728\u8fd9\u7bc7\u6295\u7a3f\u4e2d\u5c06CentOS7\u4e2d\u5b89\u88c5nginx\u548cpassenger\u5e76\u8fd0\u884cRails\u5e94\u7528\u7684\u6b65\u9aa4\u8bb0\u5f55\u4e0b\u6765\uff0c\u4f5c\u4e3a\u5907\u5fd8\u5f55\u4fdd\u5b58\u3002<\/p>\n<h1>\u6709\u5173Phusion Passenger\u7684\u4fe1\u606f<\/h1>\n<p>Phusion Passenger\u662f\u7528\u4e8eApache HTTP Server\u548cnginx\u7684\u514d\u8d39\u6a21\u5757\u3002<\/p>\n<p>\u5c31\u6211\u7406\u89e3\u6765\u8bf4\uff0c\u901a\u5e38\u60c5\u51b5\u4e0b\u9700\u8981\u5c06nginx\u4e0erails(puma, unicorn)\u8fdb\u884c\u914d\u5408\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">nginx\u3092\u8d77\u52d5\u3057\u3066\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u3092port:80\u3067\u53d7\u3051\u4ed8\u3051\u308b<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">rails(puma, unicorn)\u3092\u8d77\u52d5\u3057\u3066\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u3092port:3000\u3067\u53d7\u3051\u4ed8\u3051\u308b<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\u30ea\u30af\u30a8\u30b9\u30c8\u3092nginx(port:80)\u304b\u3089rails(port:3000)\u306b\u30ea\u30d1\u30fc\u30b9\u30d7\u30ed\u30ad\u30b7\u3055\u305b\u308b<\/ul>\n<p>\u5047\u8bbe<br \/>\n\u5982\u679c\u4f7f\u7528Passenger\uff0c\u5219Rails\u53ef\u4ee5\u5728nginx\u4e0a\u8fd0\u884c\uff0c\u65e0\u9700\u53cd\u5411\u4ee3\u7406\u3002<\/p>\n<h1>&#8220;Rails\u6307\u5357&#8221;<\/h1>\n<p>\u5728 Rails \u5bfc\u5f15\u4e2d\u7684\u300a\u4f7f\u75283.15.1\u7248\u672c\u7684Passenger\u300b\u7ae0\u8282\u4e2d\uff0c\u4ecb\u7ecd\u4e86\u4f7f\u7528Passenger\u53ef\u4ee5\u8f7b\u677e\u5728\u5b50\u76ee\u5f55\u4e2d\u8fd0\u884c\u5e94\u7528\u7a0b\u5e8f\u3002<\/p>\n<h1>\u5f15\u5bfc\u7684\u6b65\u9aa4<\/h1>\n<p>\u5728Passenger\u7684\u5b98\u65b9\u7f51\u7ad9\u4e0a\uff0c\u5bf9\u5b89\u88c5\u6b65\u9aa4\u6709\u8be6\u7ec6\u7684\u89e3\u91ca\u3002<\/p>\n<p>\u8fd9\u6b21<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Select infrastructure: Generic Linux\/Unix deployment tutorial<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Pick integration mode : nginx<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Open source vs Enterprise : Passenger open Source<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">Operationg system : Red Hat 7 \/ CentOS 7<\/ul>\n<p>\u6211\u6839\u636e\u6240\u9009\u7684\u6b65\u9aa4\u8fdb\u884c\u4e86\u6784\u5efa\u3002<\/p>\n<p>\u53c2\u8003\uff1a\u4f7f\u7528Passenger\u5c06Ruby\u5e94\u7528\u90e8\u7f72\u5230\u751f\u4ea7\u73af\u5883 &#8211; Passenger\u56fe\u4e66\u9986<\/p>\n<h1>1. \u5f15\u5165Ruby\u548cRails<\/h1>\n<p>\u6b63\u5982\u4e58\u5ba2\u6559\u7a0b\u4e2d\u89e3\u91ca\u7684\u90a3\u6837\uff0c\u6211\u53c2\u8003\u4e86\u81ea\u5df1\u8fc7\u53bb\u7684\u5e16\u5b50\u6765\u5f15\u5165Ruby\u548cRails\u3002<\/p>\n<p>\u5728CentOS\u4e0a\u5b89\u88c5rbenv\u548cRuby &#8211; Qiita<br \/>\n\u5728CentOS\u4e0a\u5b89\u88c5Rails &#8211; Qiita<\/p>\n<h1>2. \u5f15\u5165Nginx\u548cPassenger<\/h1>\n<h2>\u5b89\u88c5EPEL<\/h2>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> <span class=\"nb\">sudo <\/span>yum <span class=\"nb\">install<\/span> <span class=\"nt\">-y<\/span> epel-release yum-utils\r\n<span class=\"gp\">$<\/span> <span class=\"nb\">sudo <\/span>yum-config-manager <span class=\"nt\">--enable<\/span> epel\r\n<span class=\"gp\">$<\/span> <span class=\"nb\">sudo <\/span>yum clean all <span class=\"o\">&amp;&amp;<\/span> <span class=\"nb\">sudo <\/span>yum update <span class=\"nt\">-y<\/span>\r\n<\/code><\/pre>\n<h2>\u5b89\u88c5Nginx\u548cPassenger<\/h2>\n<p>\u6309\u7167\u6559\u7a0b\u5b89\u88c5Nginx\u548cPassenger\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">#<\/span> \u4e8b\u524d\u6e96\u5099\u306e\u305f\u3081\u306bpygpgme,curl\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\r\n<span class=\"gp\">$<\/span> <span class=\"nb\">sudo <\/span>yum <span class=\"nb\">install<\/span> <span class=\"nt\">-y<\/span> pygpgme curl\r\n\r\n<span class=\"gp\">$<\/span> <span class=\"nb\">date<\/span>\r\n<span class=\"gp\">#<\/span> <span class=\"o\">=&gt;<\/span> Sat Sep 16 04:56:58 UTC 2017\r\n\r\n<span class=\"gp\">#<\/span> \u6642\u523b\u304c\u51fa\u529b\u3055\u308c\u306a\u3044\u5834\u5408\u306f\u3001ntp\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\r\n<span class=\"gp\">$<\/span> <span class=\"nb\">sudo <\/span>yum <span class=\"nb\">install<\/span> <span class=\"nt\">-y<\/span> ntp\r\n<span class=\"gp\">$<\/span> <span class=\"nb\">sudo <\/span>chkconfig ntpd on\r\n<span class=\"gp\">$<\/span> <span class=\"nb\">sudo <\/span>ntpdate pool.ntp.org\r\n<span class=\"gp\"> $<\/span><span class=\"nb\">sudo <\/span>service ntpd start\r\n\r\n<span class=\"gp\">#<\/span> \u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u8ffd\u52a0\u3059\u308b\r\n<span class=\"gp\">$<\/span> <span class=\"nb\">sudo <\/span>curl <span class=\"nt\">--fail<\/span> <span class=\"nt\">-sSLo<\/span> \/etc\/yum.repos.d\/passenger.repo https:\/\/oss-binaries.phusionpassenger.com\/yum\/definitions\/el-passenger.repo\r\n\r\n<span class=\"gp\">#<\/span> nginx,passenger\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\r\n<span class=\"gp\">$<\/span> <span class=\"nb\">sudo <\/span>yum <span class=\"nb\">install<\/span> <span class=\"nt\">-y<\/span> nginx passenger <span class=\"o\">||<\/span> <span class=\"nb\">sudo <\/span>yum-config-manager <span class=\"nt\">--enable<\/span> cr <span class=\"o\">&amp;&amp;<\/span> <span class=\"nb\">sudo <\/span>yum <span class=\"nb\">install<\/span> <span class=\"nt\">-y<\/span> nginx passenger\r\n<\/code><\/pre>\n<h2>\u6fc0\u6d3b\u4e58\u5ba2Nginx\u6a21\u5757\u3002<\/h2>\n<p>\u786e\u8ba4passenger.conf\u7684\u521d\u59cb\u503c\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> <span class=\"nb\">cat<\/span> \/etc\/nginx\/conf.d\/passenger.conf\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>#passenger_root \/usr\/share\/ruby\/vendor_ruby\/phusion_passenger\/locations.ini;\r\n#passenger_ruby \/usr\/bin\/ruby;\r\n#passenger_instance_registry_dir \/var\/run\/passenger-instreg;\r\n<\/code><\/pre>\n<p>\u8bf7\u786e\u8ba4\u6307\u5b9a\u5728 passenger.conf \u4e2d\u7684\u8def\u5f84\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">#<\/span> passenger_root\r\n<span class=\"gp\">$<\/span> passenger-config <span class=\"nt\">--root<\/span>\r\n<span class=\"go\">\/usr\/share\/ruby\/vendor_ruby\/phusion_passenger\/locations.ini\r\n\r\n<\/span><span class=\"gp\">$<\/span> passenger-config about ruby-command\r\n<span class=\"c\">...\r\n<\/span><span class=\"go\">To use in Nginx : passenger_ruby \/home\/xxxxx\/.rbenv\/versions\/2.4.2\/bin\/ruby\r\n<\/span><span class=\"c\">...\r\n<\/span><\/code><\/pre>\n<p>\u4fee\u6539passenger.conf<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> <span class=\"nb\">sudo <\/span>vi \/etc\/nginx\/conf.d\/passenger.conf\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code># \u2193\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u3092\u5916\u3059\r\npassenger_root \/usr\/share\/ruby\/vendor_ruby\/phusion_passenger\/locations.ini;\r\n\r\n# \u2193\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u3092\u5916\u3059\uff06rbenv\u3067Ruby\u3092\u5c0e\u5165\u3057\u305f\u5834\u5408\u306f\u30d1\u30b9\u3092\u66f8\u304d\u63db\u3048\u308b\r\npassenger_ruby \/home\/xxxxx\/.rbenv\/versions\/2.4.2\/bin\/ruby;\r\n\r\n# \u2193\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u3092\u5916\u3059\r\npassenger_instance_registry_dir \/var\/run\/passenger-instreg;\r\n<\/code><\/pre>\n<h2>\u9a8c\u8bc1\u914d\u7f6e\u6587\u4ef6<\/h2>\n<pre class=\"post-pre\"><code># sudo nginx -t\r\nnginx: the configuration file \/etc\/nginx\/nginx.conf syntax is ok\r\nnginx: configuration file \/etc\/nginx\/nginx.conf test is successful\r\n<\/code><\/pre>\n<h2>\u542f\u52a8nginx<\/h2>\n<pre class=\"post-pre\"><code>$ sudo service nginx start\r\nRedirecting to \/bin\/systemctl reload nginx.service\r\n<\/code><\/pre>\n<h2>\u786e\u8ba4\u8bbf\u95ee<\/h2>\n<p>\u901a\u8fc7\u6d4f\u89c8\u5668\u8bbf\u95ee\u670d\u52a1\u5668\u7684IP\u5730\u5740\uff0c\u786e\u8ba4nginx\u7684\u6b22\u8fce\u9875\u9762\u663e\u793a\u51fa\u6765<br \/>\nhttp:\/\/xxx.xxx.xxx.xxx<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d16b437434c4406c01e06\/41-0.png\" alt=\"nginx.png\" \/><\/div>\n<h1>3. \u90e8\u7f72Rails\u5e94\u7528\u7a0b\u5e8f<\/h1>\n<p>\u6839\u636e\u4e58\u5ba2\u7684\u6559\u7a0b\uff0c\u5c06\u5e94\u7528\u7a0b\u5e8f\u653e\u7f6e\u5728\/var\/www\/myapp\/code\u4e2d\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">#<\/span> \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u4f5c\u6210\r\n<span class=\"gp\">$<\/span> <span class=\"nb\">sudo mkdir<\/span> <span class=\"nt\">-p<\/span> \/var\/www\/myapp\r\n\r\n<span class=\"gp\">#<\/span> \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u6240\u6709\u8005\u306e\u5909\u66f4\r\n<span class=\"gp\">$<\/span> <span class=\"nb\">sudo chown<\/span> <span class=\"o\">[<\/span>USERNAME]: \/var\/www\/myapp\r\n\r\n<span class=\"gp\">#<\/span> \u30ab\u30ec\u30f3\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u5909\u66f4\r\n<span class=\"gp\">$<\/span> <span class=\"nb\">cd<\/span> \/var\/www\/myapp\r\n\r\n<span class=\"gp\">#<\/span> \u30a2\u30d7\u30ea\u306e\u914d\u7f6e\r\n<span class=\"gp\">#<\/span> Git\u304b\u3089Clone\u3059\u308b\u5834\u5408\r\n<span class=\"gp\">$<\/span> <span class=\"nb\">sudo<\/span> <span class=\"nt\">-u<\/span> <span class=\"o\">[<\/span>USERNAME] <span class=\"nt\">-H<\/span> git clone git:\/\/github.com\/username\/myapp.git code\r\n\r\n<span class=\"gp\">#<\/span> \u65b0\u305f\u306b\u30a2\u30d7\u30ea\u3092\u4f5c\u6210\u3059\u308b\u5834\u5408\r\n<span class=\"gp\">$<\/span> rails new code\r\n<\/code><\/pre>\n<h1>4. \u90e8\u7f72Rails\u5e94\u7528<\/h1>\n<h2>\u4fee\u6539nginx.conf<\/h2>\n<p>\u8bbe\u7f6e\u4f7f\u5f97\u5f53\u5728\u6d4f\u89c8\u5668\u4e2d\u8bbf\u95ee\u670d\u52a1\u5668\u7684IP\u5730\u5740\u65f6\uff0cRails\u5e94\u7528\u7a0b\u5e8f\u80fd\u591f\u663e\u793a\u51fa\u6765\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">#<\/span> nginx.conf\u306b\u5909\u66f4\u3092\u52a0\u3048\u308b\u524d\u306b\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3057\u3066\u304a\u304f\r\n<span class=\"gp\">$<\/span> <span class=\"nb\">sudo cp<\/span> \/etc\/nginx\/nginx.conf \/etc\/nginx\/nginx.conf.bk\r\n\r\n<span class=\"gp\">#<\/span> nginx.conf\u3092\u4fee\u6b63<span class=\"o\">(<\/span>server<span class=\"o\">{<\/span>...<span class=\"o\">}<\/span>\u3092\u524a\u9664<span class=\"o\">)<\/span>\r\n<span class=\"gp\">$<\/span> <span class=\"nb\">sudo <\/span>vi \/etc\/nginx\/nginx.conf\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"c1\"># For more information on configuration, see:<\/span>\r\n<span class=\"c1\">#   * Official English Documentation: http:\/\/nginx.org\/en\/docs\/<\/span>\r\n<span class=\"c1\">#   * Official Russian Documentation: http:\/\/nginx.org\/ru\/docs\/<\/span>\r\n\r\n<span class=\"k\">user<\/span>  <span class=\"s\">nginx<\/span><span class=\"p\">;<\/span>\r\n<span class=\"k\">worker_processes<\/span>  <span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\r\n\r\n<span class=\"k\">error_log<\/span>  <span class=\"n\">\/var\/log\/nginx\/error.log<\/span><span class=\"p\">;<\/span>\r\n<span class=\"c1\">#error_log  \/var\/log\/nginx\/error.log  notice;<\/span>\r\n<span class=\"c1\">#error_log  \/var\/log\/nginx\/error.log  info;<\/span>\r\n\r\n<span class=\"k\">pid<\/span>        <span class=\"n\">\/run\/nginx.pid<\/span><span class=\"p\">;<\/span>\r\n\r\n\r\n<span class=\"k\">events<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"kn\">worker_connections<\/span>  <span class=\"mi\">1024<\/span><span class=\"p\">;<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n\r\n<span class=\"k\">http<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"kn\">include<\/span>       <span class=\"n\">\/etc\/nginx\/mime.types<\/span><span class=\"p\">;<\/span>\r\n    <span class=\"kn\">default_type<\/span>  <span class=\"nc\">application\/octet-stream<\/span><span class=\"p\">;<\/span>\r\n\r\n    <span class=\"kn\">log_format<\/span>  <span class=\"s\">main<\/span>  <span class=\"s\">'<\/span><span class=\"nv\">$remote_addr<\/span> <span class=\"s\">-<\/span> <span class=\"nv\">$remote_user<\/span> <span class=\"s\">[<\/span><span class=\"nv\">$time_local<\/span><span class=\"s\">]<\/span> <span class=\"s\">\"<\/span><span class=\"nv\">$request<\/span><span class=\"s\">\"<\/span> <span class=\"s\">'<\/span>\r\n                      <span class=\"s\">'<\/span><span class=\"nv\">$status<\/span> <span class=\"nv\">$body_bytes_sent<\/span> <span class=\"s\">\"<\/span><span class=\"nv\">$http_referer<\/span><span class=\"s\">\"<\/span> <span class=\"s\">'<\/span>\r\n                      <span class=\"s\">'\"<\/span><span class=\"nv\">$http_user_agent<\/span><span class=\"s\">\"<\/span> <span class=\"s\">\"<\/span><span class=\"nv\">$http_x_forwarded_for<\/span><span class=\"s\">\"'<\/span><span class=\"p\">;<\/span>\r\n\r\n    <span class=\"kn\">access_log<\/span>  <span class=\"n\">\/var\/log\/nginx\/access.log<\/span>  <span class=\"s\">main<\/span><span class=\"p\">;<\/span>\r\n\r\n    <span class=\"kn\">sendfile<\/span>        <span class=\"no\">on<\/span><span class=\"p\">;<\/span>\r\n    <span class=\"c1\">#tcp_nopush     on;<\/span>\r\n\r\n    <span class=\"c1\">#keepalive_timeout  0;<\/span>\r\n    <span class=\"kn\">keepalive_timeout<\/span>  <span class=\"mi\">65<\/span><span class=\"p\">;<\/span>\r\n\r\n    <span class=\"c1\">#gzip  on;<\/span>\r\n\r\n    <span class=\"kn\">index<\/span>   <span class=\"s\">index.html<\/span> <span class=\"s\">index.htm<\/span><span class=\"p\">;<\/span>\r\n\r\n    <span class=\"c1\"># Load modular configuration files from the \/etc\/nginx\/conf.d directory.<\/span>\r\n    <span class=\"c1\"># See http:\/\/nginx.org\/en\/docs\/ngx_core_module.html#include<\/span>\r\n    <span class=\"c1\"># for more information.<\/span>\r\n    <span class=\"kn\">include<\/span> <span class=\"n\">\/etc\/nginx\/conf.d\/*.conf<\/span><span class=\"p\">;<\/span>\r\n\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<h2>\u589e\u52a0\u670d\u52a1\u5668\u8bbe\u7f6e<\/h2>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> <span class=\"nb\">sudo <\/span>vi \/etc\/nginx\/conf.d\/myapp.conf\r\n<\/code><\/pre>\n<p>\u5728\u6559\u7a0b\u4e2d\uff0c\u5982\u4e0b\u6240\u793a\uff1a<\/p>\n<pre class=\"post-pre\"><code>server {\r\n    listen 80;\r\n    server_name yourserver.com;\r\n\r\n    # Tell Nginx and Passenger where your app's 'public' directory is\r\n    root \/var\/www\/myapp\/code\/public;\r\n\r\n    # Turn on Passenger\r\n    passenger_enabled on;\r\n    passenger_ruby \/path-to-ruby;\r\n}\r\n<\/code><\/pre>\n<p>\u53c2\u8003\u4e86\u8fd9\u4e2a\u5b58\u50a8\u5e93\u5e76\u8fdb\u884c\u4e86\u4e00\u4e9b\u4fee\u6539\u3002<\/p>\n<pre class=\"post-pre\"><code>server {\r\n    listen 80;\r\n    server_name localhost;\r\n\r\n    root \/var\/www\/myapp\/code\/public;\r\n\r\n    passenger_enabled on;\r\n    passenger_app_env development;\r\n\r\n    client_max_body_size 100m;\r\n\r\n    location ^~ \/assets\/ {\r\n        access_log off;\r\n        gzip_static on;\r\n        expires 0;\r\n        add_header Cache-Control public;\r\n        add_header ETag \"\";\r\n        add_header Access-Control-Allow-Origin *;\r\n        add_header Access-Control-Request-Method *;\r\n    }\r\n}\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"gp\">#<\/span> \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u8a3c\r\n<span class=\"gp\">$<\/span> <span class=\"nb\">sudo <\/span>nginx <span class=\"nt\">-t<\/span>\r\n<span class=\"go\">nginx: the configuration file \/etc\/nginx\/nginx.conf syntax is ok\r\nnginx: configuration file \/etc\/nginx\/nginx.conf test is successful\r\n\r\n<\/span><span class=\"gp\">#<\/span> \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u518d\u8aad\u8fbc\r\n<span class=\"gp\">$<\/span> <span class=\"nb\">sudo <\/span>service nginx reload\r\n<span class=\"go\">Redirecting to \/bin\/systemctl reload nginx.service\r\n<\/span><\/code><\/pre>\n<h2>\u786e\u8ba4\u8bbf\u95ee<\/h2>\n<p>\u4f7f\u7528\u6d4f\u89c8\u5668\u8bbf\u95ee\u670d\u52a1\u5668\u7684IP\u5730\u5740\uff1ahttp:\/\/xxx.xxx.xxx.xxx<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d16b437434c4406c01e06\/59-0.png\" alt=\"rails.png\" \/><\/div>\n<h1>\u6dfb\u52a0\uff1a\u6539\u53d8\u52a8\u4f5c\u73af\u5883<\/h1>\n<p>\u901a\u8fc7\u66f4\u6539passenger_app_env\uff0c\u53ef\u4ee5\u5207\u6362\u64cd\u4f5c\u73af\u5883\u3002<\/p>\n<pre class=\"post-pre\"><code># \u958b\u767a\u74b0\u5883\r\npassenger_app_env development;\r\n# \u672c\u756a\u74b0\u5883\r\npassenger_app_env production;\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"gp\">#<\/span> \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u8a3c\r\n<span class=\"gp\">$<\/span> <span class=\"nb\">sudo <\/span>nginx <span class=\"nt\">-t<\/span>\r\n\r\n<span class=\"gp\">#<\/span> \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u518d\u8aad\u8fbc\r\n<span class=\"gp\">$<\/span> <span class=\"nb\">sudo <\/span>service nginx reload\r\n<\/code><\/pre>\n<h1>\u88dc\u5145\uff1a\u8a2a\u554f\u6642\u51fa\u73b0\u9519\u8bef<\/h1>\n<h2>\u4e94\u767e\u9519\u8bef<\/h2>\n<p>\u9519\u8bef\u65e5\u5fd7\uff1a (Error log)<\/p>\n<p>nginx\u7528\u6237\u65e0\u6cd5\u8bbf\u95eeconfig.ru\u662f\u95ee\u9898\u7684\u6839\u6e90\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> <span class=\"nb\">sudo tail<\/span> \/var\/log\/nginx\/error.log\r\n<span class=\"gp\">2017\/09\/16 06:02:56 [alert] 22400#<\/span>0: <span class=\"k\">*<\/span>3 Cannot <span class=\"nb\">stat<\/span> <span class=\"s1\">'\/var\/www\/myapp\/code\/config.ru'<\/span>: Permission denied <span class=\"o\">(<\/span><span class=\"nv\">errno<\/span><span class=\"o\">=<\/span>13<span class=\"o\">)<\/span><span class=\"p\">;<\/span> \r\n<span class=\"go\">This error means that the Nginx worker process (PID 22400, running as UID 996) does not have permission to access t\r\nhis file. Please read this page to learn how to fix this problem: https:\/\/www.phusionpassenger.com\/library\/admin\/ng\r\n<\/span><span class=\"gp\">inx\/troubleshooting\/?a=upon-accessing-the-web-app-nginx-reports-a-permission-denied-error;<\/span> Extra info, client: 111.\r\n<span class=\"go\">216.58.83, server: localhost, request: \"GET \/ HTTP\/1.1\", host: \"xx.xxx.xxx.xxx\"\r\n<\/span><\/code><\/pre>\n<p>\u89e3\u51b3\u65b9\u6cd5\uff1a<\/p>\n<p>\u7981\u7528 SELinux<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">#<\/span> SELinux\u7121\u52b9\u5316\r\n<span class=\"gp\">$<\/span> <span class=\"nb\">sudo <\/span>setenforce 0\r\n\r\n<span class=\"gp\">#<\/span> \u6c38\u7d9a\u5316\u3059\u308b\r\n<span class=\"gp\">$<\/span> <span class=\"nb\">sudo <\/span>vi \/etc\/selinux\/config\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>SELINUX=disabled\r\n<\/code><\/pre>\n<h2>\u5806\u6808\u8ddf\u8e2a<\/h2>\n<p>\u5728\u8bbe\u7f6e\u5f00\u53d1\u65f6\uff0c\u7531\u4e8e\u5806\u6808\u8ddf\u8e2a\u663e\u793a\u7684\u754c\u9762\u4e0e\u5e38\u89c1\u7684\u754c\u9762\u4e0d\u540c\uff0c\u53ef\u80fd\u4f1a\u6709\u4e9b\u56f0\u60d1\uff0c\u4f46\u662f\u53ea\u8981\u67e5\u770b\u8be6\u7ec6\u4fe1\u606f\uff0c\u5c31\u5f88\u5bb9\u6613\u786e\u5b9a\u539f\u56e0\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d16b437434c4406c01e06\/75-0.png\" alt=\"passenger_error.png\" \/><\/div>\n<h1>\u8865\u5145\uff1a\u4e58\u5ba2\u76f8\u5173\u547d\u4ee4<\/h1>\n<h2>\u9a8c\u8bc1Passenger\u7684\u5b89\u88c5<\/h2>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> <span class=\"nb\">sudo<\/span> \/usr\/bin\/passenger-config validate-install\r\n<span class=\"go\">\r\nWhat would you like to validate?\r\n<\/span><span class=\"gp\">Use &lt;space&gt;<\/span> to <span class=\"k\">select<\/span><span class=\"nb\">.<\/span>\r\n<span class=\"go\">If the menu doesn't display correctly, press '!'\r\n \u2023 \u2b22  Passenger itself\r\n   \u2b21  Apache\r\n\r\n-------------------------------------------------------------------------\r\n * Checking whether this Passenger install is in PATH... \u2713\r\n * Checking whether there are no other Passenger installations... \u2713\r\nEverything looks good. :-)\r\n<\/span><\/code><\/pre>\n<h2>\u786e\u8ba4\u4e58\u5ba2\u7684\u72b6\u6001\u3002<\/h2>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> <span class=\"nb\">sudo<\/span> \/usr\/sbin\/passenger-memory-stats\r\n<span class=\"go\">Version: 5.1.8\r\nDate   : 2017-09-16 05:21:08 +0000\r\n------------- Apache processes -------------\r\n*** WARNING: The Apache executable cannot be found.\r\nPlease set the APXS2 environment variable to your 'apxs2' executable's filename, or set the HTTPD environment varia\r\nble to your 'httpd' or 'apache2' executable's filename.\r\n---------- Nginx processes -----------\r\nPID    PPID   VMSize    Private  Name\r\n--------------------------------------\r\n19213  1      110.8 MB  0.3 MB   nginx: master process \/usr\/sbin\/nginx\r\n19214  19213  111.2 MB  0.7 MB   nginx: worker process\r\n<\/span><span class=\"gp\">#<\/span><span class=\"c\">## Processes: 2<\/span>\r\n<span class=\"gp\">#<\/span><span class=\"c\">## Total private dirty RSS: 1.04 MB<\/span>\r\n<span class=\"go\">----- Passenger processes -----\r\nPID    VMSize    Private  Name\r\n-------------------------------\r\n19186  417.8 MB  1.0 MB   Passenger watchdog\r\n19189  857.5 MB  3.4 MB   Passenger core\r\n19197  425.9 MB  1.0 MB   Passenger ust-router\r\n<\/span><span class=\"gp\">#<\/span><span class=\"c\">## Processes: 3<\/span>\r\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u9996\u5148 \u6700\u8fd1\uff0c\u5f53\u5c06Rails\u5e94\u7528\u90e8\u7f72\u5230GKE\uff08Google\u5bb9\u5668\u5f15\u64ce\uff09\u65f6\uff0c\u6211\u4f7f\u7528\u4e86Passenger\uff0c\u5e76\u53d1\u73b0\u5b83\u80fd\u591f [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-33315","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u4f7f\u7528CentOS\u5c06nginx\u548cpassenger\u5f15\u5165\uff0c\u5e76\u5c06\u5176\u4e0eRails\u5e94\u7528\u7a0b\u5e8f\u8fdb\u884c\u96c6\u6210 - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528centos\u5c06nginx\u548cpassenger\u5f15\u5165\uff0c\u5e76\u5c06\u5176\u4e0erails\u5e94\u7528\u7a0b\u5e8f\u8fdb\u884c\u96c6\u6210\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u4f7f\u7528CentOS\u5c06nginx\u548cpassenger\u5f15\u5165\uff0c\u5e76\u5c06\u5176\u4e0eRails\u5e94\u7528\u7a0b\u5e8f\u8fdb\u884c\u96c6\u6210\" \/>\n<meta property=\"og:description\" content=\"\u9996\u5148 \u6700\u8fd1\uff0c\u5f53\u5c06Rails\u5e94\u7528\u90e8\u7f72\u5230GKE\uff08Google\u5bb9\u5668\u5f15\u64ce\uff09\u65f6\uff0c\u6211\u4f7f\u7528\u4e86Passenger\uff0c\u5e76\u53d1\u73b0\u5b83\u80fd\u591f [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528centos\u5c06nginx\u548cpassenger\u5f15\u5165\uff0c\u5e76\u5c06\u5176\u4e0erails\u5e94\u7528\u7a0b\u5e8f\u8fdb\u884c\u96c6\u6210\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-03-01T05:04:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-03T22:27:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d16b437434c4406c01e06\/41-0.png\" \/>\n<meta name=\"author\" content=\"\u79d1, \u9896\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u79d1, \u9896\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8centos%e5%b0%86nginx%e5%92%8cpassenger%e5%bc%95%e5%85%a5%ef%bc%8c%e5%b9%b6%e5%b0%86%e5%85%b6%e4%b8%8erails%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e8%bf%9b%e8%a1%8c%e9%9b%86%e6%88%90\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8centos%e5%b0%86nginx%e5%92%8cpassenger%e5%bc%95%e5%85%a5%ef%bc%8c%e5%b9%b6%e5%b0%86%e5%85%b6%e4%b8%8erails%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e8%bf%9b%e8%a1%8c%e9%9b%86%e6%88%90\/\",\"name\":\"\u4f7f\u7528CentOS\u5c06nginx\u548cpassenger\u5f15\u5165\uff0c\u5e76\u5c06\u5176\u4e0eRails\u5e94\u7528\u7a0b\u5e8f\u8fdb\u884c\u96c6\u6210 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-03-01T05:04:33+00:00\",\"dateModified\":\"2024-05-03T22:27:45+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/8ca01ba7f7362ad4edb7da206a12f29e\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8centos%e5%b0%86nginx%e5%92%8cpassenger%e5%bc%95%e5%85%a5%ef%bc%8c%e5%b9%b6%e5%b0%86%e5%85%b6%e4%b8%8erails%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e8%bf%9b%e8%a1%8c%e9%9b%86%e6%88%90\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8centos%e5%b0%86nginx%e5%92%8cpassenger%e5%bc%95%e5%85%a5%ef%bc%8c%e5%b9%b6%e5%b0%86%e5%85%b6%e4%b8%8erails%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e8%bf%9b%e8%a1%8c%e9%9b%86%e6%88%90\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8centos%e5%b0%86nginx%e5%92%8cpassenger%e5%bc%95%e5%85%a5%ef%bc%8c%e5%b9%b6%e5%b0%86%e5%85%b6%e4%b8%8erails%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e8%bf%9b%e8%a1%8c%e9%9b%86%e6%88%90\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u4f7f\u7528CentOS\u5c06nginx\u548cpassenger\u5f15\u5165\uff0c\u5e76\u5c06\u5176\u4e0eRails\u5e94\u7528\u7a0b\u5e8f\u8fdb\u884c\u96c6\u6210\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/8ca01ba7f7362ad4edb7da206a12f29e\",\"name\":\"\u79d1, \u9896\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8a6fb3cc7ba2f69d2189ba532aec4633ea7ed75ac0af162ec367cb3abc0fb2af?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8a6fb3cc7ba2f69d2189ba532aec4633ea7ed75ac0af162ec367cb3abc0fb2af?s=96&d=mm&r=g\",\"caption\":\"\u79d1, \u9896\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/keying\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8centos%e5%b0%86nginx%e5%92%8cpassenger%e5%bc%95%e5%85%a5%ef%bc%8c%e5%b9%b6%e5%b0%86%e5%85%b6%e4%b8%8erails%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e8%bf%9b%e8%a1%8c%e9%9b%86%e6%88%90\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u4f7f\u7528CentOS\u5c06nginx\u548cpassenger\u5f15\u5165\uff0c\u5e76\u5c06\u5176\u4e0eRails\u5e94\u7528\u7a0b\u5e8f\u8fdb\u884c\u96c6\u6210 - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528centos\u5c06nginx\u548cpassenger\u5f15\u5165\uff0c\u5e76\u5c06\u5176\u4e0erails\u5e94\u7528\u7a0b\u5e8f\u8fdb\u884c\u96c6\u6210\/","og_locale":"zh_CN","og_type":"article","og_title":"\u4f7f\u7528CentOS\u5c06nginx\u548cpassenger\u5f15\u5165\uff0c\u5e76\u5c06\u5176\u4e0eRails\u5e94\u7528\u7a0b\u5e8f\u8fdb\u884c\u96c6\u6210","og_description":"\u9996\u5148 \u6700\u8fd1\uff0c\u5f53\u5c06Rails\u5e94\u7528\u90e8\u7f72\u5230GKE\uff08Google\u5bb9\u5668\u5f15\u64ce\uff09\u65f6\uff0c\u6211\u4f7f\u7528\u4e86Passenger\uff0c\u5e76\u53d1\u73b0\u5b83\u80fd\u591f [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528centos\u5c06nginx\u548cpassenger\u5f15\u5165\uff0c\u5e76\u5c06\u5176\u4e0erails\u5e94\u7528\u7a0b\u5e8f\u8fdb\u884c\u96c6\u6210\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-03-01T05:04:33+00:00","article_modified_time":"2024-05-03T22:27:45+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d16b437434c4406c01e06\/41-0.png"}],"author":"\u79d1, \u9896","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u79d1, \u9896","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"5 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8centos%e5%b0%86nginx%e5%92%8cpassenger%e5%bc%95%e5%85%a5%ef%bc%8c%e5%b9%b6%e5%b0%86%e5%85%b6%e4%b8%8erails%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e8%bf%9b%e8%a1%8c%e9%9b%86%e6%88%90\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8centos%e5%b0%86nginx%e5%92%8cpassenger%e5%bc%95%e5%85%a5%ef%bc%8c%e5%b9%b6%e5%b0%86%e5%85%b6%e4%b8%8erails%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e8%bf%9b%e8%a1%8c%e9%9b%86%e6%88%90\/","name":"\u4f7f\u7528CentOS\u5c06nginx\u548cpassenger\u5f15\u5165\uff0c\u5e76\u5c06\u5176\u4e0eRails\u5e94\u7528\u7a0b\u5e8f\u8fdb\u884c\u96c6\u6210 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-03-01T05:04:33+00:00","dateModified":"2024-05-03T22:27:45+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/8ca01ba7f7362ad4edb7da206a12f29e"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8centos%e5%b0%86nginx%e5%92%8cpassenger%e5%bc%95%e5%85%a5%ef%bc%8c%e5%b9%b6%e5%b0%86%e5%85%b6%e4%b8%8erails%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e8%bf%9b%e8%a1%8c%e9%9b%86%e6%88%90\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8centos%e5%b0%86nginx%e5%92%8cpassenger%e5%bc%95%e5%85%a5%ef%bc%8c%e5%b9%b6%e5%b0%86%e5%85%b6%e4%b8%8erails%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e8%bf%9b%e8%a1%8c%e9%9b%86%e6%88%90\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8centos%e5%b0%86nginx%e5%92%8cpassenger%e5%bc%95%e5%85%a5%ef%bc%8c%e5%b9%b6%e5%b0%86%e5%85%b6%e4%b8%8erails%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e8%bf%9b%e8%a1%8c%e9%9b%86%e6%88%90\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u4f7f\u7528CentOS\u5c06nginx\u548cpassenger\u5f15\u5165\uff0c\u5e76\u5c06\u5176\u4e0eRails\u5e94\u7528\u7a0b\u5e8f\u8fdb\u884c\u96c6\u6210"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/8ca01ba7f7362ad4edb7da206a12f29e","name":"\u79d1, \u9896","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8a6fb3cc7ba2f69d2189ba532aec4633ea7ed75ac0af162ec367cb3abc0fb2af?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8a6fb3cc7ba2f69d2189ba532aec4633ea7ed75ac0af162ec367cb3abc0fb2af?s=96&d=mm&r=g","caption":"\u79d1, \u9896"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/keying\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8centos%e5%b0%86nginx%e5%92%8cpassenger%e5%bc%95%e5%85%a5%ef%bc%8c%e5%b9%b6%e5%b0%86%e5%85%b6%e4%b8%8erails%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e8%bf%9b%e8%a1%8c%e9%9b%86%e6%88%90\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/33315","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=33315"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/33315\/revisions"}],"predecessor-version":[{"id":96668,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/33315\/revisions\/96668"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=33315"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=33315"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=33315"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}