服务器知识 -- LNMP编译安装

1、安装工具


yum install gcc gcc-c++ glibc make

2、创建安装目录


      在服务器根目录下创建一个目录(alidata),在 alidata 目录里分别创建 server 、webapps 、download,其中server目录存放所有的服务器软件(nginx、php、mysql等),webapps目录存放所有部署的代码及程序,download目录存放下载文件。
      下面依次执行以下命令:

mkdir /alidata
mkdit -p /alidata/download
mkdit -p /alidata/server
mkdit -p /alidata/webapps

3、编译安装Nginx


3.1、为nginx添加用户及组

groupadd -r www
useradd -r -g www www

3.2、安装pcre

      安装 pcre 这里使用 yum 安装

yum install pcre
yum install pcre-devel

3.2、安装zlib

      安装 zlib 这里也使用 yum 安装

yum install -y zlib
yum install -y zlib-devel

3.3、下载并安装Nginx

      Nginx 官网:http://nginx.org/
      依次执行以下命令:

cd /alidata/download
wget http://nginx.org/download/nginx-1.15.3.tar.gz
tar -zxvf nginx-1.15.3.tar.gz

以上命令执行完成下载和解压,接下来进行安装操作:

cd nginx-1.15.3/

./configure --prefix=/alidata/server/nginx

make && make install

      执行完 make && make install 命令后,即安装成功。

3.4、启动Nginx

      启动 nginx 服务,需进入 nginx 安装后的目录,在sbin目录下启动 nginx 服务。
      依次执行以下命令:

cd /alidata/server/nginx
./sbin/nginx

      停止 nginx 服务,执行以下命令:

./sbin/nginx -s stop

3.5、添加Nginx为系统服务

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

vim /etc/init.d/nginx

      在里面添加以下代码:
          注意,有两个地方需要修改成安装时的路径。

#!/bin/sh  
#  
# nginx - this script starts and stops the nginx daemin  
#  
# chkconfig:   - 85 15   
# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \  
#               proxy and IMAP/POP3 proxy server  
# processname: nginx  
# config:      /usr/local/nginx/conf/nginx.conf  
# pidfile:     /usr/local/nginx/logs/nginx.pid  

# Source function library.  
. /etc/rc.d/init.d/functions  

# Source networking configuration.  
. /etc/sysconfig/network  

# Check that networking is up.  
[ "$NETWORKING" = "no" ] && exit 0  

nginx="/alidata/server/nginx/sbin/nginx"  
prog=$(basename $nginx)  

NGINX_CONF_FILE="/alidata/server/nginx/conf/nginx.conf"  

lockfile=/var/lock/subsys/nginx  

start() {  
    [ -x $nginx ] || exit 5  
    [ -f $NGINX_CONF_FILE ] || exit 6  
    echo -n $"Starting $prog: "  
    daemon $nginx -c $NGINX_CONF_FILE  
    retval=$?  
    echo  
    [ $retval -eq 0 ] && touch $lockfile  
    return $retval  
}  

stop() {  
    echo -n $"Stopping $prog: "  
    killproc $prog -QUIT  
    retval=$?  
    echo  
    [ $retval -eq 0 ] && rm -f $lockfile  
    return $retval  
}  

restart() {  
    configtest || return $?  
    stop  
    start  
}  

reload() {  
    configtest || return $?  
    echo -n $"Reloading $prog: "  
    killproc $nginx -HUP  
    RETVAL=$?  
    echo  
}  

force_reload() {  
    restart  
}  

configtest() {  
  $nginx -t -c $NGINX_CONF_FILE  
}  

rh_status() {  
    status $prog  
}  

rh_status_q() {  
    rh_status >/dev/null 2>&1  
}  

case "$1" in  
    start)  
        rh_status_q && exit 0  
        $1  
        ;;  
    stop)  
        rh_status_q || exit 0  
        $1  
        ;;  
    restart|configtest)  
        $1  
        ;;  
    reload)  
        rh_status_q || exit 7  
        $1  
        ;;  
    force-reload)  
        force_reload  
        ;;  
    status)  
        rh_status  
        ;;  
    condrestart|try-restart)  
        rh_status_q || exit 0  
            ;;  
    *)  
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"  
        exit 2  
esac  

3.6、修改其权限并开机启动

      3.6.1、修改权限:

chmod 755 /etc/init.d/nginx

      3.6.2、开机启动:

chkconfig nginx on

      3.6.3、查看开机启动的服务:

chkconfig --list

3.7、nginx相关命令

启动服务:service nginx start
停止服务:service nginx stop
重读配置:service nginx reload
重启服务:service nginx restart
服务状态:service nginx status
文件测试:service nginx configtest

4、安装PHP


4.1、安装PHP需要的常用库

      依次执行以下命令:

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

      PHP 官网:http://php.net/
      依次执行以下命令:

cd /alidata/download
wget http://cn2.php.net/get/php-7.2.9.tar.gz/from/this/mirror
tar -zxvf mirror

以上命令执行完成下载和解压,接下来进行安装操作:

cd php-7.2.9/

./configure --prefix=/alidata/server/php --with-config-file-path=/alidata/server/php/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

      执行完 make && make install 命令后,即安装成功。

4.3、设置PHP配置文件

      将官方提供的配置模板拷贝到配置参数中所指定的目录中

cp /alidata/download/php/php.ini-production /alidata/server/php/etc/php.ini

4.4、设置php-fpm配置文件

      依次执行以下命令:

cd /alidata/server/php/etc
cp php-fpm.conf.default php-fpm.conf

cd /alidata/server/php/etc/php-fpm.d
cp www.conf.default www.conf

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

pid= /alidata/server/php/var/run/php-fpm.pid

      使用vim命令对www.conf的内容进行如下修改:

user = www
group = www
listen = 127.0.0.1:9000

      其他配置可根据自己的情况进行相应修改。

4.5、启动php-fpm

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

/alidata/server/php/sbin/php-fpm

      启动后,使用:

ps aux | grep php-fpm

      命令查看进程,若能够看到相关进程,则证明启动成功。查询进程时,可以看到进程是以www用户身份执行的。

4.6、加入系统环境变量

      使用vim命令打开/etc/profile文件,在文件最末尾加上如下代码:

export PHP_HOME=/alidata/server/php
export PATH=$PATH:$PHP_HOME/bin:$PHP_HOME/sbin

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

source /etc/profile

      执行上述命令后,可使用:

echo $PATH

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

4.7、添加PHP为系统服务

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

vim /etc/init.d/php-fpm

      文件内容如下:

#!/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: /alidata/server/php/var/run/php-fpm.pid
# config: /alidata/server/php/etc/php-fpm.conf

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

#start function
php_fpm_start() {
    /alidata/server/php/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、设置php-fpm开机自启

      经过上面的操作,php-fpm已被添加为系统服务,所以可以将其设置为开机自启动,这样就可以避免每次服务器重启之后需要手动开启php-fpm的操作,具体命令如下:

chkconfig --add php-fpm
chkconfig php-fpm on

5、安装MySQL


5.1、安装依赖

yum -y install cmake ncurses-devel bison

5.2、为MySQL添加用户及组

groupadd mysql
useradd -r -g mysql mysql

5.3、下载并安装MySQL

      MySQL 官网:https://www.mysql.com/

      依次执行以下命令:

cd /alidata/download
wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.41.tar.gz
tar -zxvf mysql-5.6.41.tar.gz

      以上命令执行完成下载和解压,接下来进行安装操作:

cd mysql-5.6.41/

cmake \
-DCMAKE_INSTALL_PREFIX=/alidata/server/mysql \
-DMYSQL_DATADIR=/alidata/serverl/mysql/data \
-DSYSCONFDIR=/etc \
-DMYSQL_USER=mysql \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/var/run/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_DEBUG=0 \
-DMYSQL_MAINTAINER_MODE=0 \
-DWITH_SSL:STRING=bundled \
-DWITH_ZLIB:STRING=bundled

make

make install

      执行完 make && make install 命令后,即安装成功。

5.4、设置MySQL配置文件

      遍历目录下所有目录和文件,改变 /alidata/server/mysql 下所有的文件拥有者为mysql用户,用户组为mysql。命令如下:

cd /alidata/server/mysql
chown -R mysql:mysql /alidata/server/mysql

      初始化mysql:

./scripts/mysql_install_db --user=mysql --basedir=/alidata/server/mysql --datadir=/alidata/server/mysql/data

      mysql默认的配置文件路径是 /etc/my.cnf,复制安装自带的默认配置文件过去:

cp support-files/my-default.cnf /etc/my.cnf

      配置 /etc/my.cnf:

sed -i 's/# basedir = \.\.\.\.\./ basedir = \/alidata\/server\/mysql/' /etc/my.cnf
sed -i 's/# datadir = \.\.\.\.\./ datadir = \/alidata\/server\/mysql\/data/' /etc/my.cnf
sed -i 's/# port = \.\.\.\.\./ port = 3306/' /etc/my.cnf
sed -i 's/# socket = \.\.\.\.\./ socket = \/var\/run\/mysql\/mysql.sock/' /etc/my.cnf
num=$(sed -n '/socket/=' /etc/my.cnf)
sed -i "$num a[mysqld_safe]\nlog-error=/var/log/mysqld.log\npid-file=/var/run/mysqld/mysqld.pid\n" /etc/my.cnf

      cmake的时候把mysql的sock文件指定到/var/run/mysql里符合linux文件目录规范方便日后管理,但是默认没有这个文件夹,手动创建:

mkdir /var/run/mysql
chown mysql:mysql /var/run/mysql

5.5、启动MySQL

./support-files/mysql.server start

5.6、进入MySQL客户端

bin/mysql -uroot -p

      进入mysql的客户端后,我们来在客户端里的命令行里给mysql设置root密码,命令如下:

use mysql;
delete from mysql.user where user='';
update user set password=password("123456") where user="root";
flush privileges;
exit

5.7、添加MySQL为系统服务

cp support-files/mysql.server /etc/init.d/mysqld
chmod u+x /etc/init.d/mysqld

      以后我们启动mysql服务直接输入,命令如下:

service mysqld start

5.8、设置MySQL开机自启

      设置开机自启,命令如下:

chkconfig --add mysqld

      把mysql的安装目录下的bin加入环境变量里,命令如下:

echo 'export PATH=/alidata/server/mysql/bin:$PATH'>>/etc/profile
source /etc/profile

      以后进入mysql客户端输入下面命令就可以了:

mysql -uroot -p

5.9、MySQL远程连接

      进入mysql客户端后,输入以下命令可以实现远程连接:

grant all privileges on *.* to 'root'@'%' identified by '123456';
flush privileges;

      第一个*是数据库,可以改成允许访问的数据库名称
      第二个 是数据库的表名称,代表允许访问任意的表
      root代表远程登录使用的用户名,可以自定义
      %代表允许任意ip登录,如果你想指定特定的IP,可以把%替换掉就可以了
      123456代表远程登录时使用的密码,可以自定义
      flush privileges;这是让权限立即生效

6、配置Nginx支持PHP

      对Nginx进行了多域名配置,每个域名只需要在 /alidata/server/nginx/conf/vhost.conf 文件下配置即可。首先,需要在 /alidata/server/nginx/conf/nginx.conf 配置文件中引入 vhosts.conf 文件,以下代码:

    server {
        listen       80;
        server_name  localhost;
        autoindex    on;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            index  index.html index.htm index.php;
            autoindex  on;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}

        include  /alidata/server/nginx/conf/vhosts.conf;
    }

      之后,我们可以在 vhost.conf 文件中添加需要的项目,以下代码:

        root   /alidata/webapps/phpinfo;
        server_name  localhost;
        location / {
            index  index.html index.htm index.php;
            try_files $uri $uri/ /index.php?$query_string;
            autoindex  on;
        }
        location ~ \.php(.*)$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_param  PATH_INFO  $fastcgi_path_info;
            fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
            include        fastcgi_params;
        }

      配置完成后,重启 nginx ,通过浏览器访问就可以了。

7、注意事项


7.1、nginx配置注意事项

      注意:在配置完 nginx 后需要重启,如果再重启过程中提示一下错误:

nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)

      那,我们可以输入以下命令来解决此问题:

/alidata/server/nginx/sbin/nginx -c /alidata/server/nginx/conf/nginx.conf

      这样就可以解决此问题了。

猜你喜欢

转载自blog.csdn.net/Hinsion/article/details/82346024