LNAMP服务器环境(源码安装)

时间:2022-09-17 18:23:24

在安装前先看下它们安装时所需要的依赖库:http://www.cnblogs.com/fps2tao/p/7699448.html

1.nginx源码安装

下载:http://nginx.org/en/download.html

wget http://nginx.org/download/nginx-1.13.6.tar.gz
tar -zxvf nginx-1.13.6.tar.gz

编译(配置文件也可以参考 http://www.cnblogs.com/fps2tao/p/8570404.html )

./configure \
--prefix=/usr/local/nginx \
--conf-path=/usr/local/nginx/nginx.conf \
--error-log-path=/usr/local/nginx/log/error.log \
--pid-path=/usr/local/nginx/nginx.pid \
--lock-path=/usr/local/nginx/nginx.lock \
--user=nginx \
--group=nginx \
--with-http_dav_module \
--with-http_stub_status_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_ssl_module \ --with-http_flv_module \ --with-http_realip_module \ --with-http_mp4_module \ --with-http_gzip_static_module \

补充1(可不看):

安装pcre依赖
[root@linuxprobe]# tar zxvf /usr/local/src/pcre-8.36.tar.gz -C /usr/local/src/ [root@linuxprobe nginx-1.10.1]# cd /usr/local/src/pcre-8.36 [root@linuxprobe nginx-1.10.1]# ./configure && make && make install [root@linuxprobe nginx-1.10.1]# ./configure --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-pcre=/usr/local/src/pcre-8.36 --with-openssl=/usr/include/openssl 注意:TCP_FASTOPEN 只在 3.7.1 以及更新的 Linux 内核版本才支持 --with-http_dav_module #启用支持(增加PUT,DELETE,MKCOL:创建集合,COPY和MOVE方法)默认关闭,需要编译开启 --with-http_stub_status_module #启用支持(获取Nginx上次启动以来的工作状态) --with-http_addition_module #启用支持(作为一个输出过滤器,支持不完全缓冲,分部分相应请求) --with-http_sub_module #启用支持(允许一些其他文本替换Nginx相应中的一些文本) --with-http_flv_module #启用支持(提供支持flv视频文件支持) --with-http_mp4_module #启用支持(提供支持mp4视频文件支持,提供伪流媒体服务端支持) --with-pcre=/usr/local/src/pcre-8.36 #需要注意,这里指的是源码,用#./configure --help |grep pcre查看帮助

安装完成启动

/usr/local/nginx/sbin/nginx -t 
/usr/local/nginx/sbin/nginx    启动
/usr/local/nginx/sbin/nginx -s stop/quit
/usr/local/nginx/sbin/nginx -s reload 
-s代表信号的意思

我安装完启动提示错误:

nginx: [emerg] getpwnam("nginx") failed  //这个是因为没有个nginx建立用户所致
useradd -s /sbin/nologin -M nginx
id nginx

添加了用户关掉防火墙访问正常

 

设置开机启动 看教程 :http://www.cnblogs.com/fps2tao/p/8570404.html

 

 

2.httpd源码安装

 http://www.apache.org/ 可以打开这个网站,它会推荐理你近的几个mirror服务器.

下载:

wget https://mirrors.tuna.tsinghua.edu.cn/apache/httpd/httpd-2.4.28.tar.gz
tar -zxvf httpd-2.4.28.tar.gz

进入目录

下面开始对Apache进行安装配置,可以使用

./configure --help

查看安装时可以配置哪些参数,下面我们开始配置一些参数并进行检查

./configure \
--prefix=/usr/local/apache \
--sysconfdir=/etc/httpd \
--enable-so \
--enable-ssl \
--enable-cgi \
--enable-rewrite \
--enable-deflate=shared \
--enable-expires=shared \
--enable-rewrite=shared \
--enable-static-support \
--with-zlib \
--with-pcre \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util \
--enable-mods-shared=most \
--enable-mpms-shared=all \
--with-mpm=prefork

补充:

    # tar xf httpd-2.4.9.tar.bz2
        以下为几个主要的配置项
        --sysconfdir=/etc/httpd24  指定配置文件路径
        --enable-so  启动模块动态装卸载
        --enable-ssl 编译ssl模块
        --enable-cgi 支持cgi机制(能够让静态web服务器能够解析动态请求的一个协议)
        --enable-rewrite  支持url重写     --Author : Leshami
        --with-zlib  支持数据包压缩       --Blog   : http://blog.csdn.net/leshami
        --with-pcre  支持正则表达式
        --with-apr=/usr/local/apr  指明依赖的apr所在目录
        --with-apr-util=/usr/local/apr-util/  指明依赖的apr-util所在的目录
        --enable-modules=most      启用的模块
        --enable-mpms-shared=all   以共享方式编译的模块
        --with-mpm=prefork         指明httpd的工作方式为prefork

我编译有错误,说openssl版本太旧了所以升级了下

yum install openssl-devel
yum update openssl

检查无误,然后开始编译安装

make && make install

然后,漫长等待,大概半个小时。。。

等安装完以后进入到安装目录,开启apache服务

cd /usr/local/apache/bin/
./apachectl start

哎,发现报错

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
httpd (pid 64972) already running

额,原来就是配置文件中没有serverName,那就在httpd.conf 中增加 ServerName 

vim /usr/local/apache/conf/httpd.conf
或 vim /etc/httpd/httpd.conf
#增加
ServerName localhost

结果:

It works!

注意事项:如果先安装php再安装apache,apache不支持php

修改Apache的配置文件httpd.conf

DirectoryIndex index.html index.php #添加index.php

找到:

AddType  application/x-compress .Z

AddType application/x-gzip .gz .tgz

添加如下内容

AddType application/x-httpd-php-source .phps

AddType application/x-httpd-php .php

检查LoadModule php5_module modules/libphp5.so 是否已经添加 libphp5.so文件是否存在

 

3.mysql源码安装

 下载:

 wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.10.tar.gz

添加mysql用户:

创建mysql的安装目录及数据库存放目录

[root@ rhel5~]#mkdir -p /usr/local/mysql                 //安装mysql 
[root@ rhel5~]#mkdir -p /usr/local/mysql/data            //存放数据库

创建mysql用户及用户组

[root@ rhel5~]groupadd mysql
[root@ rhel5~]useradd -r -g mysql mysql

然后将目录'/usr/local/mysql'的所有者改为mysql

chown -R mysql:mysql /usr/local/mysql

先要下载mysql源码安装包,我们这里使用mysql-5.7.20.tar.gz ,这个可以到官网上下载,然后解压

tar -zxvf mysql-5.7.20.tar.gz

进入到解压后的mysql目录,你会惊奇的发现没有configure 文件,这下如何是好。这个主要是新版本的mysql使用了cmake 进行安装,所以没有之前的configure文件了

现在我们就使用cmake 进行安装配置

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DDEFAULT_COLLATION=utf8_general_ci

boost安装目录可以rpm -al |grep boost(我下载的mysql可能要支持boost 1.64.0版本才行,1.53.0版本太旧)    自动下载的好像[mysql每次安装都自动下载]可以先现在到对应目录,文件挺大的.

源码安装 :http://www.cnblogs.com/fps2tao/p/7709126.html

补充:

上面几个重要的地方

'-DCMAKE_INSTALL_PREFIX' 是安装目录

'-DMYSQL_DATADIR' 是数据文件存放目录

'-DSYSCONFDIR' 配置文件目录

'-DMYSQL_UNIX_ADDR' SOCK文件存放目录

'-DMYSQL_TCP_PORT' 端口号
检查无误后,就开始编译安装了
make && make install
然后,然后,然后就是半个小时的等待。。。

这时算是已经安装完成了,但是mysql中是没有数据的(即使系统自带的数据都没有),这时需要执行自带脚本,初始化mysql数据

/usr/local/mysql/scripts/mysql_install_db \
--basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

新版本的mysql

shell> cd /usr/local/mysql
shell> chown -R mysql:mysql .
# 注意:MySQL 5.7.6之前的版本执行这个脚本初始化系统数据库
shell> ./bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
# 5.7.6之后版本初始系统数据库脚本(本文使用此方式初始化)
shell> ./bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
shell> ./bin/mysql_ssl_rsa_setup
shell> chown -R root .
shell> chown -R mysql data

 

执行完成后,你会发现/usr/local/mysql/data 目录下多了一些文件,这些就是mysql的数据文件了

然后启动mysql,这时要注意,我们上面指定配置文件位于'/etc'目录下,但是我们为了方便,想把mysql配置文件放到'/usr/local/mysql/',这时我们需要把'/etc/my.conf'更改一下名称

cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf 

 

mv /etc/my.cnf  /etc/my.cnf.bak

这时mysql 在'/etc'目录下找不到,就会到'$basedir'下去找,也就是'/usr/local/mysql/'目录

此时mysql的安装工作算是完了,下面就要启动了,你会发现使用使用

/usr/local/mysql/bin/mysql start

无法启动,报错为

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

之前笔者怎么弄都不行,即使建立'/var/lib/mysql/mysql.sock' 后来终于知道,原来不是怎么启动的,而是

/usr/local/mysql/support-files/mysql.server start

启动一直提示

Starting MySQL. ERROR! The server quit without updating PID file (/usr/local/mysql/data/localhost.localdomain.pid).

修改/etc/my.cnf

[client]
port=3306
socket=/usr/local/mysql/mysql.sock
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci

skip-external-locking
skip-name-resolve

user=mysql
port=3306
datadir = /usr/local/mysql/data         #添加
log-error = /usr/local/mysql/data/error.log  #添加
#pid-file = /usr/local/mysql/data/mysql.pid   #注释掉
tmpdir = /var/tmp #不建议放在/tmp下
# server_id = .....
socket=/usr/local/mysql/mysql.sock
log-error=/usr/local/mysql/logs/mysql_error.log
pid-file=/usr/local/mysql/mysql.pid
open_files_limit=10240
back_log=600
max_connections=500
max_connect_errors=6000
wait_timeout=605800
#open_tables=600
#table_cache = 650
#opened_tables = 630

max_allowed_packet=32M
sort_buffer_size=4M
join_buffer_size=4M
thread_cache_size=300
query_cache_type=1
query_cache_size=256M
query_cache_limit=2M
query_cache_min_res_unit=16k

tmp_table_size=256M
max_heap_table_size=256M

key_buffer_size=256M
read_buffer_size=1M
read_rnd_buffer_size=16M
bulk_insert_buffer_size=64M

lower_case_table_names=1

default-storage-engine=INNODB

innodb_buffer_pool_size=2G
innodb_log_buffer_size=32M
innodb_log_file_size=128M
innodb_flush_method=O_DIRECT
#####################
thread_concurrency=32
long_query_time=2
slow-query-log=on
slow-query-log-file=/usr/local/mysql/logs/mysql-slow.log

[mysqldump]
quick
max_allowed_packet=32M

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

 或这个rpm安装生成的my.cnf文件

#For dvice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0


skip-grant-tables=1
datadir = /usr/local/mysql/data
log-error=/var/log/mysqld.log
#pid-file=/var/run/mysqld/mysqld.pid #添加了注释,不添加报错 (ERROR! The server quit without updating PID file (/var/run/mysqld/mysqld.pid).)

 

然后,测试下

/usr/local/mysql/bin/mysql -u root

show databases;

 配置mysql 服务

shell> cp support-files/mysql.server /etc/init.d/mysqld
shell> chkconfig --add mysqld     # 添加到系统服务
shell> chkconfig mysqld on        # 开机启动

启动mysql

shell> service mysqld start       # 启动mysql服务
shell> service mysqld stop        # 停止mysql服务
shell> service mysqld restart     # 重新启动mysql服务

设置环境变量

shell> vim /etc/profile
shell> export PATH=/usr/local/mysql/bin:$PATH
shell> source /etc/profile

更改mysql 密码请参考 :http://www.cnblogs.com/fps2tao/p/7570617.html

好了,到这里mysql 算是安装成功了!

 

最后一步,我们要安装PHP7了,最为激动人心的时刻到了

4.php源码安装

 下载地址 :http://cn2.php.net/distributions/php-7.1.11.tar.gz

安装必要的依赖库等(也可以看我另一篇依赖库的文章)

yum -y install php-mcrypt libmcrypt libmcrypt-devel  autoconf  freetype gd jpegsrc libmcrypt libpng libpng-devel libjpeg libxml2 libxml2-devel zlib curl curl-devel 

 

MySQL支持

重点讲一下这个,因为在它上面花了一点时间,不知道从哪一版本开始,PHP不在希望使用mysql的库来支持mysql的连接,启用了mysqlnd来支持,听说比libmysql要快很多,PHP5.x还可以使用libmysql,PHP7貌似已经取消了支持,编译都没有了--with-mysql参数,只支持--with-mysqli和--with-pdo-mysql,可以通过查看configure的参数来知道:(原来的mysql_connect()函数就不能用了,替换的是

 $mysqli = new mysqli("localhost", "root", "password", "testgame");

$mysqli->close(); 

)

 配置文件也可参考:(https://www.insp.top/article/make-install-php-7)

./configure \
--prefix=/usr/local/php/ \
--with-apxs2=/usr/local/apache/bin/apxs \
--enable-mbstring \
--with-curl \
--with-gd \
--enable-fpm \
--with-pear \
--with-mysql=/usr/local/mysql \
--enable-mysqlnd \ --with-pdo-mysql=mysqlnd \ --with-config-file-path=/usr/local/php/etc/ \ --with-mysqli=mysqlnd \ --with-mysql-sock=/var/lib/mysql/mysql.sock
make
make test
make install

 

 安装完成后,我们要把源码包中的配置文件复制到PHP安装目录下,源码包中有两个配置  php.ini-development  php.ini-production  ,看名字就知道,一个是开发环境,一个是生产环境,我们这里就复制开发环境的

cp php.ini-development  /usr/local/php/etc/php.ini

到这里,还最后一个工作没有做,就是让apache去解析PHP文件,在apache配置文件httpd.conf 中加上一条

 

修改Apache的配置文件httpd.conf

DirectoryIndex index.html index.php #添加index.php

找到:

AddType  application/x-compress .Z

AddType application/x-gzip .gz .tgz

添加如下内容

AddType application/x-httpd-php-source .phps

AddType application/x-httpd-php .php

然后重新启动apache 

/usr/local/apache/bin/apachectl restart

然后在目录/usr/local/apache/htdocs/ 目录下增加test.php 

<?php
phpinfo();
$mysql=new mysqli("localhost","root","123456","mysql");
if($mysql)
{
echo "ok";
}
else
{
echo "no ok";
}

?>

 

 完成

 

转:http://www.cnblogs.com/painsOnline/p/5162613.html

 

扩展: 

http://www.cnblogs.com/onlyfu/p/5051389.html

http://www.cnblogs.com/GaZeon/p/5421906.html

 

php7已经没有mysql这个扩展了,好多贴还是按照以前的方法讲,让我这个新手来回找了好多遍都没找到mysql,php7用后面两个链接数据库,千万不要傻傻去找也不要去来回拷贝什么dll之类的。

extension=php_mysqli.dll

extension=php_pdo_mysql.dll

 

再就是php-fpm启动也变了--

php-fpm配置 在/usr/local/php/etc/  

有php-fpm.conf

php-fpm.d/下面可以写很多这个的扩展文件

php.ini

   

 

 

 

扩展:centos7源码安装 通过systemctl管理开机启动 

http://www.cnblogs.com/fps2tao/p/8570694.html