ubuntu14.04下安裝ngnix,mediawiki,nodebb,everything,gitlab

  • 2019 年 12 月 27 日
  • 筆記

本周折騰了以下幾個東西,mediawiki(維基),nodebb(論壇),gitlab(私有git服務器)。

本來的目的是搭建一個wiki,選用了mediawiki後,使用apache搭建好了。

搭論壇的時候,一開始想用discourse,但配置總有問題,就先放棄了,找了個nodebb看起來也還可以。

但nodebb是使用ngnix做代理的,考慮之後決定放棄apache,全部統一用ngnix。

於是搭建了ngnix+mediawiki+nodebb+everything(這個是別人配置好的,只是在ngnix中設置了代理)。

後來又添上了gitlab。整理安裝記錄如下。

/****************************************安裝ngnix分割線****************************************************************/

先裝ngnix(參考http://www.cnblogs.com/helinfeng/p/4219051.html 基本沒什麼問題)

1,由於需要大量的權限操作,方便起見臨時提升權限,使用root賬號

sudo su

2,安裝apt源管理工具、添加nginx和php的安裝源

apt-get install python-software-properties  add-apt-repository ppa:nginx/stable  add-apt-repository ppa:ondrej/php5

3,更新系統軟件

apt-get update

4、安裝mysql

apt-get install mysql-server

註:在安裝過程中,會要求你輸入MySQL的root賬號的密碼,輸入並記住。

5、安裝php及對mysql的支持

apt-get install php5 php5-fpm php5-mysql php-apc

6、根據實際需要,選擇性的安裝php的各類功能模塊。

apt-get install php-pear php5-dev php5-curl  apt-get install php5-gd php5-intl php5-imagick  apt-get install php5-imap php5-mcrypt php5-memcache  apt-get install php5-ming php5-ps php5-pspell  apt-get install php5-recode php5-snmp php5-sqlite  apt-get install php5-tidy php5-xmlrpc php5-xsl

7、安裝nginx

apt-get install nginx

8、配置php

vim /etc/php5/fpm/php.ini

在文件中找到:

;cgi.fix_pathinfo=1

改為:

cgi.fix_pathinfo=0

9、配置nginx

創建一個 /www 目錄設置為 755 權限

mkdir /www  chmod 755 /www

將網站根目錄設置到/www 目錄下,注意不要寫成 /www/ 這種格式

vim /etc/nginx/sites-enabled/default

找到:

root /usr/share/nginx/html;

改為:

root /www;

找到:

index index.html index.htm;

增加 index.php,即改為:

index index.php index.html index.htm;

找到:location ~ .php$ { * } 區塊 做如下調整(改動之處於行末有注釋):    

location ~ .php$ {  try_files $uri =404; #增加  fastcgi_split_path_info ^(.+.php)(/.+)$; #反注釋  ## NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini  #  ## With php5-cgi alone:  # fastcgi_pass 127.0.0.1:9000;  ## With php5-fpm:  fastcgi_pass unix:/var/run/php5-fpm.sock; #反注釋  fastcgi_index index.php; #反注釋  include fastcgi_params; #反注釋  }

即下圖

10、解決php-fpm與nginx的小bug 按上述步驟操作後,由於nginx與php-fpm之間的一個小bug,會導致這樣的現象: 網站中的靜態頁面 *.html 都能正常訪問,而 *.php 文件雖然會返回200狀態碼, 但實際輸出給瀏覽器的頁面內容卻是空白。

簡而言之,原因是nginx無法正確的將 *.php 文件的地址傳遞給php-fpm去解析, 相當於php-fpm接受到了請求,但這請求卻指向一個不存在的文件,於是返回空結果。

為了解決這個問題,需要改動nginx默認的fastcgi_params配置文件:

vim /etc/nginx/fastcgi_params

在文件的最後增加一行:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

關於這行的內容,多說幾句,其中有兩個參數: $document_root 即是指網站的根目錄,也就是我們在前面剛設置的 root /www; $fastcgi_script_name 則是指網站上的各個 *.php 文件名(其實是文件的相對路徑) 這兩個合在一起形成完整的 php file path,比如你的網站有個 /test/script.php 文件, nginx傳遞給php-fpm的完整路徑就是:/www/test/script.php

我在前面說配置nginx時,寫成了 root /www/; 這種寫法,對於nginx不成問題, 但它在向php-fpm傳遞php文件路徑時,會形成:/www//test/script.php 這樣的文件地址無效(獲取不到正確的php文件),於是出現返回空白的問題。 這個問題是如此之隱蔽,以至於我花了大量時間在查看LOG、尋找資料和調整設置上。

11,重啟各項服務

service php5-fpm reload  service nginx reload

重新加載各項配置改動。

12、測試

vim /www/index.php

內容:

<?php echo phpinfo(); ?>

請打開你的瀏覽器訪問:htpt://localhost 若一切正常,將輸出php環境信息。

(以上ngnix安裝參考http://www.cnblogs.com/helinfeng/p/4219051.html )

一般這樣子就沒問題了。

我按着這個步驟,也沒什麼問題,但是打開htpt://localhost 的時候,我看到的是apache!

是的,這個機子被別人安裝過apache了,捷足先登搶佔了80端口。

那先把apache的端口改掉。

修改兩個文件 /etc/apache2/ports.conf 和 /etc/apache2/sites-available/000-default.conf

將80改成81.

重啟服務

service apache2 restart  service nginx restart

就可以了。

重啟ngnix的時候 注意看是OK還是fail。

如果fail 運行nginx -t查看報錯信息。

/****************************************安裝mediawiki分割線***********************************************************/

參考官方安裝指南

https://www.mediawiki.org/wiki/Manual:Installing_MediaWiki

先下載穩定版本

wget https://releases.wikimedia.org/mediawiki/1.26/mediawiki-1.26.2.tar.gz

直接解壓到/www下面

tar xvzf mediawiki-*.tar.gz -C /www

重命名

 mv /www/mediawiki-1.26.2 /www/midiawiki

ifconfig看到本機IP,這裡假設是192.168.1.2吧

修改host文件,方便記憶

vim /etc/hosts

想個好記的域名,加入

192.168.1.2 www.zqb.local

保存退出

重啟網絡使修改生效

/etc/init.d/networking restart

然後再瀏覽器中就可以通過www.zqb.local訪問了

下面通過瀏覽器訪問www.zqb.local/mediawiki

就可以通過網頁交互安裝mediawiki了。

不過安裝的時候要用到mysql,先來設置以下。

上文安裝ngnix的時候已經把mysql也裝上了,假設設置的root用戶密碼也是root。

那就

mysql -u root -proot

創建數據庫wikidb,創建用戶wikiuser 密碼 wikipwd

CREATE DATABASE wikidb;  GRANT ALL PRIVILEGES ON wikidb.* TO 'wikiuser'@'127.0.0.1' IDENTIFIED BY 'wikipwd';  Exit

然後通過網頁面交互進行安裝。

安裝過程中,在插件選擇時勾上WikiEditor,這個能讓編輯器更友好一些,其他的插件也可以根據需要勾一些。

安裝後會提示下載

LocalSettings.php

移動到wiki目錄下

mv /home/你的用戶名/下載/LocalSettings.php  /www/mediawiki/LocalSettings.php

編輯

vim /www/mediawiki/LocalSettings.php

加上  

# Enables use of WikiEditor by default but still allows users to disable it in preferences  $wgDefaultUserOptions['usebetatoolbar'] = 1;    # Enables link and table wizards by default but still allows users to disable them in preferences  $wgDefaultUserOptions['usebetatoolbar-cgd'] = 1;    # Displays the Preview and Changes tabs  $wgDefaultUserOptions['wikieditor-preview'] = 1;    # Displays the Publish and Cancel buttons on the top right side  $wgDefaultUserOptions['wikieditor-publish'] = 1;

注意,還需要修改mediawiki文件夾的權限,比如簡單粗暴改成777

chmod -R  777  /www/mediawiki

然後就可以正常使用mediawiki了。

/****************************************安裝nodebb分割線*********************************************************/

參考官方文檔https://docs.nodebb.org/en/latest/installing/os/ubuntu.html

nodebb基於nodejs,先裝nodejs

 curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y git nodejs mongodb build-essential

nodebb需要數據庫mongodb 或 redis。

發現本機已經安裝過mongdb,查看版本

mongo --version

是2.4.9,版本太低。查了一下升級還挺麻煩,那還是直接裝redis吧。

sudo apt-add-repository ppa:chris-lea/redis-server  sudo apt-get update  sudo apt-get install redis-server

運行一下確認安裝成功

redis-server

然後準備裝nodebb,先裝這兩個

apt-get install nodejs-legacy  apt-get install npm

好了,開始裝nodebb

cd /www  git clone  https://github.com/NodeBB/NodeBB.git nodebb  cd nodebb/  npm install --production  ./nodebb  setup

然後它會告訴你在0.0.0.0:4567,於是瀏覽器訪問http://127.0.0.1:4567/,交互式安裝。

數據庫選redis,其他都不改(是的就是127.0.0.1 就是0號數據庫)

或者為了安全,也可以查一下,加個密碼,我查了但懶得弄。

安裝完成後,啟動就行了

./nodebb start

現在就可以在http://127.0.0.1:4567/使用論壇了。

然後需要用ngnix代理。

cd /etc/nginx/  vim conf.d/nodebb.conf 

加入

server {      listen 80;            server_name www.forum.zqb.local forum.zqb.local;              location / {              proxy_set_header X-Real-IP $remote_addr;              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;              proxy_set_header Host $http_host;              proxy_set_header X-NginX-Proxy true;              proxy_pass http://127.0.0.1:4567/;              proxy_redirect off;                # Socket.IO Support              proxy_http_version 1.1;              proxy_set_header Upgrade $http_upgrade;              proxy_set_header Connection "upgrade";              }  }

重啟nginx

service nginx restart

修改host

vim /etc/hosts

加入(注意換成自己的域名和IP)

192.168.1.2 www.forum.zqb.local

重啟網絡使修改生效

/etc/init.d/networking restart

然後就可以訪問了。

/****************************************安裝everything分割線*****************************************************/

everything是已經裝好的,在192.168.1.2:8080可以使用的,目前只需要在nginx中增加配置文件,代理一下。

基本同上 就是

server_name這一行,改成 server_name www.everything.zqb.local everything.zqb.local;
 http://127.0.0.1:4567/;改成 http://192.168.1.2:8080/;  /****************************************安裝gitlab分割線*********************************/  參考官方安裝說明https://about.gitlab.com/downloads/#ubuntu1404和http://my.oschina.net/u/160089/blog/421168?fromerr=plKVWzZr
sudo apt-get install curl openssh-server ca-certificates postfix

官方說明可以這麼裝

curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash  sudo apt-get install gitlab-ce

在終端下載,很慢,中斷了,於是我選擇直接到https://packages.gitlab.com/gitlab/gitlab-ce下載deb包

下載後安裝就好

dpkg -i gitlab-ce-XXX.deb

配置一下

sudo vim /etc/gitlab/gitlab.rb

打算放到8081端口,修改這些(也許不用改這麼多 但反正這麼改後可以用……)

external_url 'http://192.168.1.2:8081'  #注意換成本機ip和端口    ## Note: configuration settings below are optional.  ## Uncomment and change the value.  ############################  # gitlab.yml configuration #  ############################    # gitlab_rails['gitlab_ssh_host'] = 'ssh.host_example.com'  gitlab_rails['time_zone'] = 'Asia/Shanghai'  gitlab_rails['gitlab_email_enabled'] = true  gitlab_rails['gitlab_email_from'] = '你的郵箱@gmail.com'  gitlab_rails['gitlab_email_display_name'] = 'mygitlab'  gitlab_rails['gitlab_email_reply_to'] = '你的郵箱@gmail.com'  # gitlab_rails['gitlab_default_can_create_group'] = true  # gitlab_rails['gitlab_username_changing_enabled'] = true  gitlab_rails['gitlab_default_theme'] = 2
################################  # GitLab email server settings #  ################################  # see https://gitlab.com/gitlab-org/omnibus-gitlab/blob/629def0a7a26e7c2326566f0758d4a27857b52a3/doc/settings/smtp.md#smtp-settings  # Use smtp instead of sendmail/postfix.    gitlab_rails['smtp_enable'] = true  gitlab_rails['smtp_address'] = "smtp.gmail.com"  gitlab_rails['smtp_port'] = 587  gitlab_rails['smtp_user_name'] = "你的郵箱@gmail.com"  gitlab_rails['smtp_password'] = "你的密碼"  gitlab_rails['smtp_domain'] = "smtp.gmail.com"  gitlab_rails['smtp_authentication'] = "login"  gitlab_rails['smtp_enable_starttls_auto'] = true  gitlab_rails['smtp_tls'] = false  gitlab_rails['smtp_openssl_verify_mode'] = 'peer' # Can be: 'none', 'peer', 'client_once', 'fail_if_no_peer_cert', see http://api.rubyonrails.org/classes/ActionMailer/Base.html  # gitlab_rails['smtp_ca_path'] = "/etc/ssl/certs"  # gitlab_rails['smtp_ca_file'] = "/etc/ssl/certs/ca-certificates.crt"
##################  # GitLab Unicorn #  ##################  ## Tweak unicorn settings.    # unicorn['worker_timeout'] = 60  # unicorn['worker_processes'] = 2    ## Advanced settings  # unicorn['listen'] = '127.0.0.1'   unicorn['port'] = 8081  # unicorn['socket'] = '/var/opt/gitlab/gitlab-rails/sockets/gitlab.socket'  # unicorn['pidfile'] = '/opt/gitlab/var/unicorn/unicorn.pid'  # unicorn['tcp_nopush'] = true  # unicorn['backlog_socket'] = 1024  # Make sure somaxconn is equal or higher then backlog_socket  # unicorn['somaxconn'] = 1024  # We do not recommend changing this setting  # unicorn['log_directory'] = "/var/log/gitlab/unicorn"
################  # GitLab Nginx #  ################  ## see: https://gitlab.com/gitlab-org/omnibus-gitlab/tree/629def0a7a26e7c2326566f0758d4a27857b52a3/doc/settings/nginx.md    nginx['enable'] = true  # nginx['client_max_body_size'] = '250m'  # nginx['redirect_http_to_https'] = false  # nginx['redirect_http_to_https_port'] = 80  # nginx['ssl_client_certificate'] = "/etc/gitlab/ssl/ca.crt" # Most root CA's are included by default  # nginx['ssl_certificate'] = "/etc/gitlab/ssl/#{node['fqdn']}.crt"  # nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/#{node['fqdn']}.key"  # nginx['ssl_ciphers'] = "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256"  # nginx['ssl_prefer_server_ciphers'] = "on"  # nginx['ssl_protocols'] = "TLSv1 TLSv1.1 TLSv1.2" # recommended by https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html & https://cipherli.st/  # nginx['ssl_session_cache'] = "builtin:1000  shared:SSL:10m" # recommended in http://nginx.org/en/docs/http/ngx_http_ssl_module.html  # nginx['ssl_session_timeout'] = "5m" # default according to http://nginx.org/en/docs/http/ngx_http_ssl_module.html  # nginx['ssl_dhparam'] = nil # Path to dhparams.pem, eg. /etc/gitlab/ssl/dhparams.pem  nginx['listen_addresses'] = ['192.168.1.2']#注意換成本機ip  nginx['listen_port'] = 8081 # override only if you use a reverse proxy: https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/nginx.md#setting-the-nginx-listen-port

補充一張郵箱參考

配置一下

sudo gitlab-ctl reconfigure

然後

vim /etc/nginx/conf.d/gitlab.conf
server {      listen 80;            server_name www.gitlab.zqb.local gitlab.zqb.local;              location / {              proxy_set_header X-Real-IP $remote_addr;              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;              proxy_set_header Host $http_host;              proxy_set_header X-NginX-Proxy true;              proxy_pass http://192.168.1.2:8081/;              proxy_redirect off;                # Socket.IO Support              proxy_http_version 1.1;              proxy_set_header Upgrade $http_upgrade;              proxy_set_header Connection "upgrade";              }  }

重啟nginx

service nginx restart

修改host

vim /etc/hosts

加入

192.168.1.2 www.gitlab.zqb.local

重啟網絡使修改生效

/etc/init.d/networking restart
然後就可以訪問gitlab了
初始用戶名root 密碼 5iveL!fe      本文鏈接:http://www.cnblogs.com/zqb-all/p/5297359.html