实现同台服务器同时运行WORDPRESS与DISCOURSE

简思录站点就是通过一台服务器同时运行WordPressDiscourse项目的。今天是简思录搭建成功上线的第二天,刚好有时间,顺便整理一下如何部署这两个项目,同时也希望能帮到一些需要的站长们!要实现同一台服务器同时运行WordPress和Discourse有2种方式,一种是全新安装(即服务器上并没有运行WordPress和Discourse的项目),另一种则是已经有Discourse项目运行着了。

@keyboardstaff / 2017-10-28 / CC-BY-SA-3.0

这里就说说全新安装方式:

服务器配置清单

简思录站点服务器托管在Qcloud。购于2017年10月26号,当时看到双十一广告,一口气买了3年,花费1534.60元,还是挺划算的,需要购买的请猛戳该链接

Linux Server [2 Core CPU, 4G Memory, 50G Disk, 64 位] - Debian Server 9.0 64 位

WordPress部署

WordPress运行需要LNMP环境(Linux + Nginx+ MySQL+ PHP),这里我们可以采用LNMP一键安装包,推荐OneinStack,官网链接:https://oneinstack.com/

OneinStack安装这里就不详细阐述了,如果不明白安装的可以去OneinStack官网查看安装教程,非常详细。那么下面的步骤我就权当你已经成功运行WordPress了。

Nginx配置

如果是通过oneinstack一键安装包的,Nginx的配置文件路径为:/usr/local/nginx/conf/vhost
进入该目录后,修改你绑定域名的配置文件,参考代码如下:

server {
  listen 80;
  listen 443 ssl http2;
  ssl_certificate /usr/local/nginx/conf/ssl/jiansilu.com.crt;  #修改为你证书的路径
  ssl_certificate_key /usr/local/nginx/conf/ssl/jiansilu.com.key;  #修改为你证书的路径
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
  ssl_prefer_server_ciphers on;
  ssl_session_timeout 10m;
  ssl_session_cache builtin:1000 shared:SSL:10m;
  ssl_buffer_size 1400;
  add_header Strict-Transport-Security max-age=15768000;
  ssl_stapling on;
  ssl_stapling_verify on;
  server_name jiansilu.com www.jiansilu.com;  #修改为你的域名
  location / {
    access_log /data/wwwlogs/jiansilu.com_nginx.log combined;
    index index.html index.htm index.php;
    root /data/wwwroot/jiansilu.com;  #修改为你站点的目录
    if ($ssl_protocol = "") { return 301 https://$host$request_uri; }
    if ($host != jiansilu.com) {  return 301 $scheme://jiansilu.com$request_uri;  }  #修改为你的域名
    include /usr/local/nginx/conf/rewrite/wordpress.conf;
    #error_page 404 /404.html;
    #error_page 502 /502.html;
  
    location ~ [^/]\.php(/|$) {
        #fastcgi_pass remote_php_ip:9000;
        fastcgi_pass unix:/dev/shm/php-cgi.sock;
        fastcgi_index index.php;
        include fastcgi.conf;
    }

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
        expires 30d;
        access_log off;
    }
    location ~ .*\.(js|css)?$ {
        expires 7d;
        access_log off;
    }
    location ~ /\.ht {
        deny all;
    }
  }
  location /community/ { # /community/ 为站点子目录名称,例如:https://jiansilu.com/community
    proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock:;
    proxy_set_header Host $http_host;
    proxy_http_version 1.1;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto https;
  }
}

然后,执行如下命令:

root@localhost:~# sudo nginx -t # 测试配置文件
# 重要:如果 nginx -t 返回了错误,请一定要修正配置!
root@localhost:~# sudo service nginx reload #加载配置文件
root@localhost:~# sudo service nginx restart #重启nginx

好了,到这里WordPress和Nginx配置就可以了,接下来就可以部署Discourse了。

Discourse部署

运行命令安装docker

root@localhost:~# curl -sSL https://get.docker.com/ | sh

运行命令创建discourse目录与克隆项目,并进入discourse目录

root@localhost:~# sudo -s
root@localhost:~# mkdir /var/discourse
root@localhost:~# git clone https://github.com/discourse/discourse_docker.git /var/discourse
root@localhost:~# cd /var/discourse

创建app.yml配置文件,并上传至/var/discourse/containers ,参考代码如下:

## this is the all-in-one, standalone Discourse Docker container template
##
## After making changes to this file, you MUST rebuild
## /var/discourse/launcher rebuild app
##
## BE *VERY* CAREFUL WHEN EDITING!
## YAML FILES ARE SUPER SUPER SENSITIVE TO MISTAKES IN WHITESPACE OR ALIGNMENT!
## visit http://www.yamllint.com/ to validate this file as needed

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
  - "templates/web.socketed.template.yml"
## Uncomment these two lines if you wish to add Lets Encrypt (https)
  #- "templates/web.ssl.template.yml"
  #- "templates/web.letsencrypt.ssl.template.yml"

## which TCP/IP ports should this container expose?
## If you want Discourse to share a port with another webserver like Apache or nginx,
## see https://meta.discourse.org/t/17247 for details
expose:
  #- "80:80"   # http
  #- "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## Set db_shared_buffers to a max of 25% of the total memory.
  ## will be set automatically by bootstrap based on detected RAM, or you can override
  db_shared_buffers: "768MB"   # 根据服务器配置修改,如果内存是2g的话改为256MB,4G则768MB

  ## can improve sorting performance, but adds memory usage per-connection
  #db_work_mem: "40MB"

  ## Which Git revision should this container use? (default: tests-passed)
  #version: tests-passed

env:
  LANG: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en

  ## How many concurrent web requests are supported? Depends on memory and CPU cores.
  ## will be set automatically by bootstrap based on detected CPUs, or you can override
  UNICORN_WORKERS: 4    #根据服务器配置修改,如果CPU是1核的话改为2,2核则4

  ## TODO: The domain name this Discourse instance will respond to
  DISCOURSE_HOSTNAME: jiansilu.com     #修改成你的域名
  DISCOURSE_RELATIVE_URL_ROOT: /community     #修改成你discourse子目录名称

  ## Uncomment if you want the container to be started with the same
  ## hostname (-h option) as specified above (default "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: List of comma delimited emails that will be made admin and developer
  ## on initial signup example 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: '3303500@qq.com'   #管理员邮箱

  ## TODO: The SMTP mail server used to validate new accounts and send notifications
  DISCOURSE_SMTP_ADDRESS: smtp.exmail.qq.com    #修改成你SMTP邮箱的服务器
  DISCOURSE_SMTP_PORT: 587     #修改成你SMTP邮箱的服务器端口
  DISCOURSE_SMTP_USER_NAME: info@jiansilu.com     #修改成你的SMTP邮箱
  DISCOURSE_SMTP_PASSWORD: "jiansilu.com"    #修改成你的SMTP邮箱密码
  DISCOURSE_SMTP_ENABLE_START_TLS: true           # (optional, default true)
  DISCOURSE_SMTP_AUTHENTICATION: login
  DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none

  ## If you added the Lets Encrypt template, uncomment below to get a free SSL certificate
  #LETSENCRYPT_ACCOUNT_EMAIL: 3303500@qq.com

  ## The CDN address for this Discourse instance (configured to pull)
  ## see https://meta.discourse.org/t/14857 for details
  #DISCOURSE_CDN_URL: //discourse-cdn.example.com

## The Docker container is stateless; all data is stored in /shared
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## Plugins go here
## see https://meta.discourse.org/t/19157 for details
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git

## Any custom commands to run after building
run:
  ## Subfolder support
  - exec:
        cd: $home
        cmd:
          - mkdir -p public/community  #修改成你discourse子目录名称
          - cd public/community && ln -s ../uploads && ln -s ../backups  #修改成你discourse子目录名称
  - replace:
       global: true
       filename: /etc/nginx/conf.d/discourse.conf
       from: proxy_pass http://discourse;
       to: |
          rewrite ^/(.*)$ /community/$1 break;   #修改成你discourse子目录名称
          proxy_pass http://discourse;
  - replace:
       filename: /etc/nginx/conf.d/discourse.conf
       from: etag off;
       to: |
          etag off;
          location /community {    #修改成你discourse子目录名称
             rewrite ^/community/?(.*)$ /$1;     #修改成你discourse子目录名称
          }
  - replace:
         filename: /etc/nginx/conf.d/discourse.conf
         from: $proxy_add_x_forwarded_for
         to: $http_fastly_client_ip
         global: true
  - exec: echo "Beginning of custom commands"
  ## If you want to set the 'From' email address for your first registration, uncomment and change:
  ## After getting the first signup email, re-comment the line. It only needs to run once.
  - exec: rails r "SiteSetting.notification_email='info@jiansilu.com'"   #修改成管理邮箱
  - exec: echo "End of custom commands"

运行命令安装discourse

root@localhost:/var/discourse# ./launcher bootstrap app

安装discourse完成后,运行命令启动discourse

root@localhost:/var/discourse# ./launcher start app

duan~~~,至此就完成WordPress和Discourse同时运行在一个服务器了。

文章来源:简思录 https://jiansilu.com/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,598评论 18 139
  • 最近对网络开发的性质大发,由最简单的东西开始一步一步入门,不知不觉一个月间就学到了我难以想象多的知识. 虽然Wor...
    Solomon_Xie阅读 6,310评论 5 18
  • 决策树的过拟合问题 决策树是一种分类器,通过ID3,C4.5和CART等算法可以通过训练数据构建一个决策树。但是,...
    程sir阅读 27,483评论 7 15
  • 文/卞客 连续几日的大晴天,终于迎来了春雨,清爽的空气,轻柔的风,呵护着雨后柔软的校园。 夜色下的植物有种别样的美...
    卞客阅读 498评论 1 2
  • 习惯的本质是一种思维模式,那坏习惯是否是思维模式呢?这里就有区分了。我们常挂在嘴边的坏习惯,有一部分,是真正的习惯...
    egomuff阅读 149评论 0 0