如无特殊说明,本系列中涉及的操作系统版本均为CentOS 7.3
安装Node.js
使用官方已编译包安装
首先到官网https://nodejs.org/download/release/找到需要的版本,此处以v7.9.0
为例:
1 | wget https://nodejs.org/download/release/latest-v7.x/node-v7.9.0-linux-x64.tar.gz |
下载对应的包并解压安装至/usr/local
安装完成后可运行node -v
,返回版本号即安装成功。
如果服务器在国内,安装完成之后可以使用淘宝镜像来加速:
1 | npm config set registry https://registry.npm.taobao.org |
从源码编译安装
在某些版本的系统中使用这种方法安装可能需要先安装相关的依赖:1
yum install gcc gcc-c++ kernel-devel
首先到官网http://nodejs.org/dist/(注意:源码下载路径和已编译版本下载路径不同)找到需要的版本,此处以v7.9.0
为例:
1 | wget http://nodejs.org/dist/v7.9.0/node-v7.9.0-linux-x64.tar.gz |
使用nvm安装(不推荐)
nvm(Node version manager)是一个Node.js的版本管理工具,使用nvm可以轻松的切换Node.js版本。
在这里可以找到nvm的最新地址。
1 | wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.1/install.sh | bash |
不推荐nvm的原因如下:
- 服务器中很少遇到需要切换Node.js版本的情况
- nvm的部分内容在CentOS 7重启后会被自动删除
- 使用nvm安装的全局包在各个版本之间不能共享
安装OpenSSL
系统中自带的OpenSSL版本一般也较旧,为了HTTP2等新特性,我们需要重新安装1.0.2以上版本的OpenSSL。
首先安装所有可能需要的依赖:1
yum install gc gcc gcc-c++ pcre-devel zlib-devel make wget openssl-devel libxml2-devel libxslt-devel gd-devel perl-ExtUtils-Embed GeoIP-devel gperftools gperftools-devel libatomic_ops-devel perl-ExtUtils-Embed dpkg-dev libpcrecpp0 libgd2-xpm-dev libgeoip-dev libperl-dev -y
然后从官网https://www.openssl.org/source/获取OpenSSL下载链接,下载并解压编译:1
2
3
4
5
6
7
8
9
10
11cd /usr/src
wget https://www.openssl.org/source/openssl-1.1.0e.tar.gz
tar -zxf openssl-1.1.0e.tar.gz
cd openssl-1.1.0e.tar.gz
./config
make
make test
make install
备份原来的openssl
mv /usr/bin/openssl /root/
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
完成后使用openssl version
查看版本,如出现 /usr/bin/openssl: No such file or directory
,使用如下方式解决1
2
3
4
5
6
7
8
9ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
删除旧的符号链接
rm /bin/openssl
添加新版本的符号链接
ln -s /usr/local/bin/openssl /bin/openssl
重新查看版本
openssl version
OpenSSL 1.1.0e 16 Feb 2017
安装 Nginx
使用yum安装
1 | sudo yum install nginx |
检查系统中firewalld防火墙服务是否开启,如果显示active (running),我们需要修改防火墙配置,开启Nginx外网端口访问。1
2
3
4sudo systemctl status firewalld
firewall-cmd --permanent --zone=internal --add-service=http
firewall-cmd --permanent --zone=internal --add-service=https
firewall-cmd --reload
也可以在/etc/firewalld/zones/public.xml
文件的zone一节中增加:1
2
3
4
5<zone>
··· ···
<service name="http"/>
<service name="https"/>
<zone>
保存后重新加载firewalld服务:1
sudo systemctl reload firewalld
完成后即可通过使用浏览器访问 http://<外网IP地址>
,如果出现Nginx欢迎页面,则Nginx成功启动。
使用这种方式安装的nginx版本通常较旧,如果需要安装更新的版本,可以自行在/etc/yum.repos.d/目录下创建一个源配置文件nginx.repo来修改yum源:1
vim /etc/yum.repos.d/nginx.repo
文件内容如下:1
2
3
4
5[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
保存后使用yum info nginx
可查看源信息1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17[root@Forever ~]# yum info nginx
Loaded plugins: fastestmirror
··· ···
Determining fastest mirrors
Available Packages
Name : nginx
Arch : x86_64
Epoch : 1
Version : 1.12.0
Release : 1.el7.ngx
Size : 716 k
Repo : nginx/7/x86_64
Summary : High performance web server
URL : http://nginx.org/
License : 2-clause BSD-like license
Description : nginx [engine x] is an HTTP and reverse proxy server, as well as
: a mail proxy server.
检查无误后运行yum install nginx -y
即可完成安装。
通过源码编译安装
有时我们对nginx有些特殊需求,比如开启SSL需要使用1.0.2以上版本的OpenSSL编译的nginx,这时我们需要自己编译安装nginx。
如果已经安装了nginx,首先使用nginx -V来查看相关信息:
1 | [root@Forever ~]# nginx -V |
其中configure arguments:
之后的就是编译参数,可以从此处复制一份备用。--prefix
为nginx安装路径,如果需要开启HTTP2,http_v2_module
和http_ssl_module
这两个模块必备,还需要加上--with-openssl=/usr/src/openssl-1.1.0e
来指定所用的OpenSSL版本,还需要启用哪些模块可以根据自己实际情况来决定。
1 | cd /root |
使用 cloudflare 的 TLS nginx__dynamic_tls_records 补丁来优化 TLS Record Size1
2wget https://raw.githubusercontent.com/cloudflare/sslconfig/master/patches/nginx__dynamic_tls_records.patch
patch -p1 < nginx__dynamic_tls_records.patch
如果提示 patch 命令找不到的话,则先安装 patch1
yum install patch
加上之前保存的参数开始编译1
2
3
4
5
6
7
8
9
10
11./configure --prefix=/etc/nginx --with-openssl=/usr/src/openssl-1.1.0e --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'
make
sudo make install
查看版本:
nginx -V
nginx version: nginx/1.12.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)
built with OpenSSL 1.1.0e 16 Feb 2017
TLS SNI support enabled
出现built with OpenSSL 1.1.0e
,安装成功。
配置LNMP环境
安装PHP7.1
首先删除旧版本的PHP
通过yum list installed | grep php
可以查看所有已安装的php软件
使用yum remove php ……
删除,如yum remove php70w-common.x86_64 -y
通过yum list php*
查看是否有自己需要安装的版本,如果没有就需要添加第三方yum源, 推荐webtatic、rpmforge或网易的源
1 | # CentOs 7.X |
安装完成后可以使用yum repolist
查看已经安装的源,也可以通过ls /etc/yum.repos.d/
查看。
然后再yum install php71w……
就可以安装新版本PHP了,常用相关组件的安装如下:
1 | yum install -y php71w php71w-curl php71w-common php71w-cli php71w-mysql php71w-mbstring php71w-fpm php71w-xml php71w-pdo php71w-zip php71w-gd php71w-mcrypt php71w-soap php71w-xmlrpc |
安装MySQL5.7
1 | # 安装MySQL源 |
参考资料
- http://www.ehowstuff.com/how-to-install-and-update-openssl-on-centos-6-centos-7/
- http://www.restran.net/2017/01/24/nginx-letsencrypt-https/
- https://imququ.com/post/my-nginx-conf.html
- https://www.joomlagate.com/index.php?option=com_content&view=article&id=325&Itemid=19
- http://www.zkt.name/centos-7-an-zhuang-phpkai-fa-huan-jing/