zoukankan      html  css  js  c++  java
  • 在ConoHa上Centos7环境下源码安装部署LNMP

    本文记录了从源码,在Centos 7上手动部署LNMP环境的过程,为了方便以后对nginx和mariadb进行升级,这里采用yum的方式进行安装。

    1.建立运行网站和数据库的用户和组

    groupadd www
    
    useradd -g www admin
    
    passwd admin #然后输入你想设置的密码
    

    更多用户操作请参考【这里】,然后将新建用户添加到sudo列表中,编辑/etc/sudoers,内容如下:

    ## Allow root to run any commands anywhere
    root    ALL=(ALL)       ALL
    admin    ALL=(ALL)       ALL
    

    至此,用户和用户组创建完毕,然后接下来所有的操作都是在用户admin情况下操作的,如果涉及超级用户权限的时候使用sudo进行操作。

    2.添加依赖包

    以下依赖包是整个Lnmp搭建过程中所需的基本依赖包,如果在安装过程中出现错误,提示缺少某依赖包,可以自己安装

    #执行下面这条命令,各参数之间以空格分开
    sudo yum -y install zlib-devel pcre-devel openssl-devel  gcc gcc-c++  ncurses-devel perl libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel  libxml2 libxml2-devel curl-devel libxslt-devel
    

    以上各依赖包之间以空格隔开即可。

    3.下载安装文件

    需要下载的源文件包括:libiconv-1.14.tar.gz、libmcrypt-2.5.8.tar.gz、php-7.0.4.tar.gz,操作如下:

    wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
    
    wget http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz
    
    wget http://php.net/distributions/php-7.0.4.tar.gz
    

    4.编译libiconv

    tar zxf libiconv-1.14.tar.gz
    cd libiconv-1.14
    ./configure --prefix=/usr/local/libiconv-1.14  #安装目录
    cd srclib
    sed -i -e '/gets is a security/d' ./stdio.in.h
    cd ..
    sudo make -j2 
    sudo make install
    

    5.编译libmcrypt

    tar zxvf libmcrypt-2.5.8.tar.gz
    cd libmcrypt-2.5.8
    ./configure --prefix=/usr/local/libmcrypt-2.5.8
    sudo make -j2 
    sudo make install
    

    6.编译nginx

    安装

    具体源码编译安装步骤参照[centos7通过编译源码的方式安装nginx]。

    进入nginx的安装目录/usr/local/nginx目录下,执行以下命令

    ./sbin/nginx
    

    测试

    在浏览器地址栏输入IP进行访问,如果出现“Welcome to nginx!”字样,说明安装成功!

    补充

    如果通过Ip出现无法访问的情况,请参考这里一下情形进行分析:

    • ssh登录你的vps,执行curl localhost,看是否能返回带有“Welcome to nginx!”字样的信息,如果返回说明Nginx安装没问题,再查看其他原因,否则就是你nginx安装有问题;
    • 如果执行curl localhost没问题,那么远程执行一下telnet你的vps的80端口看时候能连接,如果不能,说明80端口没开放呢,参考这里进行开放80端口,然后重启防火墙;

    7.编译MariaDb

    欲练此功,必先自宫!

    因为现在mysql不再开源,所以centos7自带的是mariadb,而且版本为5.5系列,编译安装mariadb之前,请先将自带的mariadb卸载掉,具体完全卸载方法,请谷歌一下!或者参考这里

    mariadb需要cmake进行安装,所以我们需要先安装一下cmake:

    sudo yum -y install cmake
    

    解压

    tar -xzvf mariadb-10.1.13.tar.gz
    

    创建mariadb数据文件目录并更改属主及用户组

    sudo mkdir -p /home/userdata/mariadb
    sudo chown -R admin:www /home/userdata/
    sudo chown -R admin:www /home/userdata/mariadb
    

    cmake编译

    #切换目录
    cd mariadb-10.1.13/
    #下面是一整行,请直接复制后,更改成对应你的环境后再执行,有不明白的地方请留言
    cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb-10.1.13 -DMYSQL_DATADIR=/home/userdata/mariadb -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LIBWRAP=0 -DMYSQL_UNIX_ADDR=/tmp/mariadb-10.1.13.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_USER=admin 
    

    注意:以上各参数是以空格隔开的。

    安装

    sudo make -j2  #-j2 表示双线程编译,一般取cpu核心数+1
    sudo make install
    

    更改目录权限

    sudo chown -R admin:www /usr/local/mariadb-10.1.13/
    

    复制配置文件

    #切换目录
    cd /usr/local/mariadb-10.1.13/
    cp ./support-files/my-huge.cnf  ./support-files/my.cnf # 复制配置文件
    

    打开配置文件:/usr/local/mariadb-10.1.13/support-files/my.cnf,查找关键字thread_concurrency,将该值修改为你的vps cpu*2之后的值,然后保存。

    初始化安装数据库

    #切换目录
    cd /usr/local/mariadb-10.1.13/
    #执行脚本
     ./scripts/mysql_install_db --defaults-file=/usr/local/mariadb-10.1.13/support-files/my.cnf --datadir=/home/userdata/mariadb --user=admin
    

    注意:上面个参数之间以空格隔开

    接下来制作mariadb的启动脚本,在/usr/lib/systemd/system/目录下新建mariadb.service文件,内容参考如下(具体内容还需要根据自己的实际情况进行修改):

    [Unit]
    Description=MariaDB Server
    After=network.target
     
    [Service]
    User=mariadb
    Group=mariadb
    PIDFile=/tmp/mariadb-10.1.13.pid
    ExecStart=/usr/local/mariadb-10.1.13/bin/mysqld_safe  --defaults-file=/usr/local/mariadb-10.1.13/support-files/my.cnf  --user=mariadb --datadir=/home/userdata/mariadb-10.1.13  --pid-file=/tmp/mariadb-10.1.13.pid
     
    [Install]
    WantedBy=multi-user.target
    

    上面ExecStart的各个参数之间也是以空格隔开的,具体的参数需要自己指定,具体使用方法如下:

    systemctl enable mariadb #开机启动
    systemctl start mariadb #立刻启动
    systemctl status mariadb #查看服务状态
    

    设置root密码

    /usr/local/mariadb-10.1.13/bin/mysqladmin -u root password '1234567890'
    

    注:通过上述方式设置密码会出现无法进行登陆或者远程连接(实现远程连接的方法参考这里)的情况,请使用其他方式(命令行或者执行修改mysql.user表)更改密码,具体可参考这里。还是在下面贴一下自己的吧。

    下面进入mysql命令行,重新设置一下root用户的密码,以及添加远程连接(注意端口开放)。

    /usr/local/mariadb-10.1.13/目录下执行./bin/mysql -u root -p '刚刚你设置的root密码' 进行登陆,登陆后再mariadb的命令行模式执行下列命令:

    使用命令行修改数据库用户密码:
    use mysql;
    
    UPDATE user SET password=PASSWORD('你的密码') WHERE User='root';
    
    为root数据库用户添加本地访问所有数据库的权限:
    
    grant all privileges  on *.* to root@'localhost' identified by "你的密码";
    
    为root数据库用户添加远程连接访问所有数据库的权限:
    
    grant all privileges  on *.* to root@'%' identified by "你的密码";
    
    最后刷新权限
    FLUSH PRIVILEGES
    

    8.编译PHP

    解压

    tar -xzvf php-7.0.4.tar.gz
    

    预编译

    #进入解压后的目录
    cd /home/module_compile/php-7.0.4
    #预编译
    ./configure --prefix=/usr/local/php-7.0.4 --with-config-file-path=/usr/local/php-7.0.4/etc --with-mysqli=mysqlnd --with-iconv-dir=/usr/local/libiconv-1.14 --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --enable-bcmath --enable-inline-optimization --with-curl --with-fpm-user=admin --with-fpm-group=www --enable-mbstring --with-mcrypt=/usr/local/libmcrypt-2.5.8 --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-sockets --enable-zip --enable-ftp --without-pear --enable-pdo --with-pdo-mysql=mysqlnd --disable-fileinfo --with-xmlrpc --enable-opcache --enable-fpm
    

    注意:以上各参数以空格隔开,–prefix指定你想要设置的安装目录,–with-iconv-dir指定你前面libiconv的安装目录,–with-fpm-user指定你的用户,–with-fpm-group指定你的用户组,–with-mcrypt需要指定你libmcrypt的安装目录,不然编译PHP时,就算安装了也会提示找不到libmcrypt,请重新安装的错误!

    编译安装

    make -j2
    make test
    make install
    

    配置

    1)首先为php创建配置文件:

    将加压后的安装包内的 php.ini-production文件复制一份到安装目录

    cd /home/module_compile/php-7.0.4
    
    cp php.ini-development  /usr/local/php-7.0.4/php.ini # 如果是开发就复制php.ini-development
    

    将安装目录/usr/local/php-7.0.4/etc下的php-fpm.conf.default文件复制一份并重名为php-fpm.conf

    cd /usr/local/php-7.0.4/etc
    cp php-fpm.conf.default  php-fpm.conf
    

    做一个软链接

    ln -s /usr/local/php-7.0.4/bin/php /usr/bin/
    

    进入安装目录/usr/local/php-7.0.4/etc/php-fpm.d目录下,将www.conf.default复制一份并重命名为www.conf

    cd /usr/local/php-7.0.4/etc/php-fpm.d
    cp www.conf.default  www.conf
    

    2)配置php-fpm.conf文件

    vi /usr/local/php-7.0.4/etc/php-fpm.conf
    

    具体编辑内容参考这里

    3)配置www.conf文件

    vi /usr/local/php-7.0.4/etc/php-fpm.d/www.conf
    

    具体编辑内容参考这里
    需要修改的内容包括user ,group,listen.owner,listen.group ,listen 等信息,其中listen那一行,修改成如下内容:

    listen = /var/run/php-fpm/php-fpm.sock   # 使用unix socket
    

    4)启动php-fpm

    mkdir /var/run/php-fpm/ #这一步在每次启动系统时都要做,因为/var/run是个动态目录,系统重启php-fpm就没了
    chown -R admin:www /var/run/php-fpm
    cd /usr/local/php-7.0.4/
    ./sbin/php-fpm
    

    5)修改nginx配置文件支持php

    cd /usr/local/nginx/
    vi ./conf/nginx.conf
    

    具体修改内容如下:

    server {
            listen       80;
            server_name  localhost;
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            location / {
                root   html;
                index  index.php index.html index.htm;         # 添加index.php的首页文件
            }
    
            # 添加下面内容
            location ~ .php$ {
                fastcgi_pass        unix:/var/run/php-fpm/php-fpm.sock;
                fastcgi_index       index.php;
                fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
                include fastcgi_params;
                include fastcgi.conf;
            }
    

    修改完成后重启nginx.

    cd /usr/local/nginx
    ./sbin/nginx -s stop
    ./sbin/nginx 
    

    然后在/nginx/html下创建index.php,

    vi /nginx/html/index.php
    

    添加下面内容:

    <?php
        phpinfo();
    ?>
    

    然后在浏览器中输入ip进行访问,当你看到下面的界面,那么恭喜你,配置成功!

    参考文章:

    1. 在Centos7环境下源码安装部署LNMP
  • 相关阅读:
    Oracle使用记录
    UML中类关系表示与Java代码中的对应关系
    Unknown initial character set index '255' received from server. Initial client character set can be forced via the 'characterEncoding' property.
    Mysql:The user specified as a definer ('xxx'@'%') does not exist 错误
    Java 从html中提取纯文本
    com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver的区别
    MySQL 查看数据库数据表空间大小
    MySQL 中的 information_schema 数据库
    WARN: Establishing SSL connection without server's identity verification is not recommended.
    Cause: java.sql.SQLException: Unknown initial character set index '255' received from server. Initial client character set can be forced via the 'characterEncoding' property.
  • 原文地址:https://www.cnblogs.com/cobcmw/p/9937279.html
Copyright © 2011-2022 走看看