centos7 编译安装lnmp | wniu

centos7 编译安装lnmp

1.依赖包安装

1
$ yum install gcc gcc-c++ openssl openssl-devel cyrus-sasl-md5 gcc-c++ glibc

2.创建安装目录

1
2
3
4
5
6
$ sudo -i 
$ mkdir /gcdata
$ mkdir /gcdata/package
$ mkdir –p /gcdata/server
$ mkdir –p /gcdata/webapps
$ mkdir –p /gcdata/logs

server目录存放所有的服务器软件(nginx、php),webapps目录存放所有部署的代码及程序,package目录用来存放安装过程中需要用到的编译后的库文件。

3.安装nginx

3.1 安装pcre

1
2
3
$ cd ~ 
$ wget https://sourceforge.net/projects/pcre/files/pcre/8.41/pcre-8.41.tar.gz
$ tar -zxvf pcre-8.41.tar.gz

3.2 安装zlib

1
2
$ wget https://sourceforge.net/projects/libpng/files/zlib/1.2.11/zlib-1.2.11.tar.gz
$ tar -zxvf zlib-1.2.11.tar.gz

3.3 安装openssl

1
2
$ wget https://www.openssl.org/source/openssl-1.1.0b.tar.gz
$ tar -zxvf openssl-1.1.0b.tar.gz

3.4 为nginx添加用户组

1
2
$ groupadd -r www
$ useradd -r -g www www

3.5 安装nginx

1
2
3
4
5
6
$ wget http://nginx.org/download/nginx-1.12.2.tar.gz
$ tar -zxvf nginx-1.12.2.tar.gz
$ cd nginx-1.12.2/
$ ./configure --prefix=/gcdata/server/nginx-1.12.2 --sbin-path=/gcdata/server/nginx-1.12.2/sbin/nginx --conf-path=/gcdata/server/nginx-1.12.2/nginx.conf --pid-path=/gcdata/server/nginx-1.12.2/nginx.pid --user=www --group=www --with-http_ssl_module --with-http_flv_module --with-http_mp4_module --with-http_stub_status_module --with-select_module --with-poll_module --error-log-path=/gcdata/logs/nginx/error.log --http-log-path=/gcdata/logs/nginx/access.log --with-pcre=/root/pcre-8.41 --with-zlib=/root/zlib-1.2.11 --with-openssl=/root/openssl-1.1.0b
$ make
$ make install

3.6 启动nginx

1
$ /gcdata/server/nginx-1.12.2/sbin/nginx

查看nginx进程状态

1
$ ps aux | grep nginx

3.7 加入系统环境变量

vi编辑/etc/profile文件,在文件最末尾加上如下代码

1
2
export NGINX_HOME=/gcdata/server/nginx-1.12.2
export PATH=$PATH:$NGINX_HOME/sbin

保存后,使用source命令重新加载配置文件,命令如下

1
$ source /etc/profile

执行上述命令后,可使用

1
$ echo $PATH

命令查看环境变量中是否已经加入了相关的路径

3.8 加入系统服务

使用vi命令在/etc/init.d/目录下创建一个nginx文件,命令如下

1
$ vi /etc/init.d/nginx

文件内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/bin/bash
# chkconfig: - 345 85 15
PATH=/gcdata/server/nginx-1.12.2
DESC="nginx daemon"
NAME=nginx
DAEMON=$PATH/sbin/$NAME
CONFIGFILE=$PATH/$NAME.conf
PIDFILE=$PATH/logs/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
set -e
[ -x "$DAEMON" ] || exit 0
do_start() {
$DAEMON -c $CONFIGFILE || echo -n "nginx already running"
}
do_stop() {
$DAEMON -s stop || echo -n "nginx not running"
}
do_reload() {
$DAEMON -s reload || echo -n "nginx can't reload"
}
case "$1" in
start)
echo -n "Starting $DESC: $NAME"
do_start
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME"
do_stop
echo "."
;;
reload|graceful)
echo -n "Reloading $DESC configuration..."
do_reload
echo "."
;;
restart)
echo -n "Restarting $DESC: $NAME"
do_stop
do_start
echo "."
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|reload|restart}"
exit 3
;;
esac
exit 0

保存文件并修改权限

1
$ chmod +x /etc/init.d/nginx

开启和关闭服务

1
2
3
$ /bin/systemctl start nginx
$ /bin/systemctl stop nginx
$ /bin/systemctl reload nginx

若此时无法执行以上命令,首先要确认之前打开的nginx进程已被杀死,其次可以尝试先执行

1
$ systemctl enable nginx

命令,然后再执行上述三个命令。

3.9 设置开机自动启动

1
2
$ chkconfig --add nginx
$ chkconfig nginx on

或者

1
$ systemctl enable nginx

4. 安装php

4.1 yum安装常用库

1
$yum -y install libmcrypt-devel mhash-devel libxslt-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel

4.2 安装php

1
2
3
4
5
6
$ cd ~
$ wget http://cn2.php.net/distributions/php-7.1.11.tar.gz
$ tar -zxvf php-7.1.11.tar.gz
$ ./configure --prefix=/gcdata/server/php-7.1.11 --with-config-file-path=/gcdata/server/php-7.1.11/etc --enable-fpm --with-mcrypt --enable-mbstring --enable-pdo --with-curl --disable-debug --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --with-mhash --enable-zip --with-pcre-regex --with-mysqli --with-gd --with-jpeg-dir --with-freetype-dir --enable-calendar
$ make
$ make install

4.3 设置php配置文件

1
$ cp /root/php-7.1.11/php.ini-production /gcdata/server/php-7.1.11/etc/php.ini

4.4 设置php-fpm配置文件

1
2
3
4
$ cd /gcdata/server/php-7.1.11/etc
$ cp php-fpm.conf.default php-fpm.conf
$ cd /gcdata/server/php-7.1.11/etc/php-fpm.d
$ cp www.conf.default www.conf

使用vi命令对php-fpm.conf的内容进行如下修改

1
pid= /gcdata/server/php-7.1.11/var/run/php-fpm.pid

4.5 启动php-fpm

完成以上配置后,即可启动php-fpm,执行以下命令

1
$ /gcdata/server/php-7.1.11/sbin/php-fpm

4.6 加入系统环境变量

vi编辑/etc/profile文件,在文件最末尾加上如下代码

1
2
export PHP_HOME=/gcdata/server/php-7.1.11
export PATH=$PATH:$PHP_HOME/bin:$PHP_HOME/sbin

保存后,使用source命令重新加载配置文件,命令如下

1
$ source /etc/profile

4.7 加入系统服务

使用vi命令在/etc/init.d/目录下创建一个php-fpm文件,命令如下

1
$ vi /etc/init.d/php-fpm

文件内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/bin/bash
# php-fpm startup script for the php-fpm
# php-fpm version:7.1.11
# chkconfig: - 85 15
# description: php-fpm
# processname: php-fpm
# pidfile: /gcdata/server/php-7.1.11/var/run/php-fpm.pid
# config: /gcdata/server/php-7.1.11/etc/php-fpm.conf

php_command=/gcdata/server/php-7.1.11/sbin/php-fom
php_config=/gcdata/server/php-7.1.11/etc/php-fpm.conf
php_pid=/gcdata/server/php-7.1.11/var/run/php-fpm.pid
RETVAL=0
prog="php-fpm"

#start function
php_fpm_start() {
/gcdata/server/php-7.1.11/sbin/php-fpm
}

start(){
if [ -e $php_pid ]
then
echo "php-fpm already start..."
exit 1
fi
php_fpm_start
}

stop(){
if [ -e $php_pid ]
then
parent_pid=`cat $php_pid`
all_pid=`ps -ef | grep php-fpm | awk '{if('$parent_pid' == $3){print $2}}'`
for pid in $all_pid
do
kill $pid
done
kill $parent_pid
fi
exit 1
}

restart(){
stop
start
}

# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status $prog
RETVAL=$?
;;
*)
echo $"Usage: $prog {start|stop|restart|status}"
exit 1
esac
exit $RETVAL

4.8 设置开机启动

1
2
$ chkconfig --add php-fpm
$ chkconfig php-fpm on

或者

1
$ systemctl enable php-fpm

5 yum安装mysql

5.1 添加MySQL的yum源

1
2
$ wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
$ yum localinstall mysql57-community-release-el7-11.noarch.rpm

以上下载地址如果有变,到这里查看最新的就行:https://dev.mysql.com/downloads/repo/yum/

如果上述命令执行无报错的话,可以用下面的命令查看有哪些版本可选择安装:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@wniuob ~]# yum repolist all | grep mysql
mysql-cluster-7.5-community/x86_64 MySQL Cluster 7.5 Community 禁用
mysql-cluster-7.5-community-source MySQL Cluster 7.5 Community - So 禁用
mysql-cluster-7.6-community/x86_64 MySQL Cluster 7.6 Community 禁用
mysql-cluster-7.6-community-source MySQL Cluster 7.6 Community - So 禁用
mysql-connectors-community/x86_64 MySQL Connectors Community 启用: 108
mysql-connectors-community-source MySQL Connectors Community - Sou 禁用
mysql-tools-community/x86_64 MySQL Tools Community 启用: 90
mysql-tools-community-source MySQL Tools Community - Source 禁用
mysql-tools-preview/x86_64 MySQL Tools Preview 禁用
mysql-tools-preview-source MySQL Tools Preview - Source 禁用
mysql55-community/x86_64 MySQL 5.5 Community Server 禁用
mysql55-community-source MySQL 5.5 Community Server - Sou 禁用
mysql56-community/x86_64 MySQL 5.6 Community Server 禁用
mysql56-community-source MySQL 5.6 Community Server - Sou 禁用
mysql57-community/x86_64 MySQL 5.7 Community Server 启用: 347
mysql57-community-source MySQL 5.7 Community Server - Sou 禁用
mysql80-community/x86_64 MySQL 8.0 Community Server 禁用
mysql80-community-source MySQL 8.0 Community Server - Sou 禁用

可以看到,除了MySQL 5.7,MySQL官方源也提供别的版本,比如说5.5、5.6、8.0,如果对别的版本有需求,安装需要的版本就行,只需用yum-config-manager启用或禁用相关的源即可,比如说禁用MySQL5.7启用MySQL5.6:

1
2
$ yum-config-manager --disable mysql57-community
$ yum-config-manager --enable mysql56-community

确定之后,可以安装MySQL Server了:

1
$ yum install mysql-community-server

安装好之后 可使用以下命令获取MySQL临时密码

1
$ grep 'temporary password' /var/log/mysqld.log
1
$ mysql -u root -p

输入临时密码后即登录MySQL
修改密码
update mysql.user set authentication_string=password('wniuob') where user='root' and Host ='localhost';

5.2 开启远程连接

要开启CentOS7下的MySQL远程访问,需要满足如下三个要求:
1、MySQL Server监听的IP可以被外界访问,比如说:192.168.1.x或者别的IP地址。
2、用于远程登录的用户需要指定允许在别的IP地址登录。新建用户的时候指定允许登录地址为%,SQL语句参考上面新建用户部分。
3、开放了对应的端口。

在MySQL配置文件的[mysqld]添加一行,指定MySQL监听IP:

1
2
3
$ vim /etc/my.cnf
[mysqld]
bind-address=0.0.0.0

关于MySQL绑定IP,可以参考这里:https://dev.mysql.com/doc/refman/5.7/en/server-options.html#option_mysqld_bind-address
添加了之后,还需要重启MySQL:

1
$ systemctl restart mysqld

如果开启了防火墙的话,还需要开放MySQL监听端口:

1
2
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload

如果上面的命令都没问题,到这一步可以使用如下命令从本地连接远程的数据库了:

1
$ mysql -u username -h 1.2.3.4 -P 3306 -p
0%