欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

详尽教程:从源码编译安装LNMP环境(完全版)

最编程 2024-08-09 20:19:49
...

一.源码编译安装nginx
1.下载软件包
2.安装依赖软件包
3.源码编译nginx
4.启动nginx
5.防火墙开放nginx
6.测试
二.源码编译安装mysql
1.下载mysql
2.安装mysql
3.修改密码及配置文件
4.启动mysql
5.防火墙开放
三.源码编译安装php
1.下载软件包
2.安装依赖软件包
3.源码编译安装php
4.进行配置
5.防火墙开放php
6.启动服务
四.配置nginx和php关联

操作:
一.nginx源码编译安装
1.官网下在nginx软件包y
yum install epel-release
yum groupinstall ‘Development Tools’ -y
wget http://nginx.org/download/nginx-1.16.0.tar.gz
tar zxvf nginx-1.16.0.tar.gz && cd nginx-1.16.0/

2.安装nginx所需要的依赖包 (文档:https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-open-source/#sources)
yum install gd-devel pcre pcre-devel zlib zlib-devel openssl openssl-devel GeoIP GeoIP-devel GeoIP-data gd-devel
3.源码编译nginx
useradd nginx
cd nginx-1.16.0
./configure
–prefix=/usr/local/nginx
–sbin-path=/usr/local/nginx/sbin/nginx
–conf-path=/usr/local/nginx/conf/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
–user=nginx
–group=nginx
–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
–with-http_ssl_module
–with-http_realip_module
–with-http_addition_module
–with-http_sub_module
–with-http_stub_status_module
–with-http_dav_module
–with-http_flv_module
–with-http_mp4_module
–with-http_gunzip_module
–with-http_gzip_static_module
–with-http_random_index_module
–with-http_secure_link_module
–with-http_auth_request_module
–with-http_image_filter_module
–with-http_geoip_module
–with-http_slice_module
–with-http_v2_module
–with-threads
–with-stream
–with-stream_ssl_module
–with-mail
–with-mail_ssl_module
–with-file-aio
–with-compat

4.编译nginx
make && make install
/usr/local/nginx/sbin/nginx -V

5.启动nginx并设置为开机自启
/usr/local/nginx/sbin/nginx

nginx开机自启
vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target

重启服务器后就可以了
systemctl start nginx.service
systemctl enable nginx.service

6.测试访问页面

二.安装mysql
1.官网下载MySQL的yum仓库
mysql80-community-release-el7-3.noarch.rpm

2.安装mysql软件仓库
yum -y install mysql80-community-release-el7-3.noarch.rpm

3.关闭mysql80仓库,开启mysql57仓库
yum -y install yum-utils
yum-config-manager disabled mysql80-community
yum-config-manager --enable mysql57-community
或者直接修改mysql.community.repo和mysql.community-source.repo

4.安装mysql57软件包
yum -y install mysql-community-server

5.修改配置文件,防止字符乱码
vi /etc/my.cnf
在[mysqld]下添加
server-id=1
log-bin=mysql-bin
plugin-load=“rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so”
bind-address=0.0.0.0
log_timestamps=SYSTEM
default-storage-engine=innodb
innodb_file_per_table
collation-server = utf8_general_ci
character-set-server=utf8
init-connect=‘SET NAMES utf8’
innodb_flush_log_at_trx_commit=1
sync_binlog=1
rpl-semi-sync-master-enabled=1
rpl_semi_sync_master_timeout=3000
innodb_buffer_pool_load_at_startup=1
innodb_buffer_pool_load_now=1
sql-mode=“STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”

6.启动Mysql57服务
systemctl start mysqld
systemctl enable mysqld

7.修改密码
cat /var/log/mysqld.log | grep password
mysql -uroot -p ‘密码’
set global validate_password_length=6 #密码长度为6
set global validate_password_policy=0 #密码策略为空
或者
set global validate_password.length=6
set global validate_password.policy=0
alter user root@localhost identified by ‘密码’;

8.开启3306端口
firewalld-cmd --zone=public --permanent --add-port=3306/tcp
fierwalld-cmd --reload

9.默认selinux开启
测试关闭selinux,方法如下:
setenforce 0
sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config

三.源码编译php
1.下载软件包
在官网下载php软件包7.2.3

2.安装依赖软件包
yum -y install gcc gcc-c++ 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
yum -y install wget vim lsof lrzsz pcre-devel zlib-devel make gd-devel libjpeg-devel libpng-devel libxml2-devel bzip2-devel libcurl-devel libmcrypt libmcrypt-devel mcrypt mhash net-snmp-devel
yum -y install gcc bison bison-devel openssl-devel readline-devel libedit-devel sqlite-devel freetype freetype-devel libevent-devel
yum -y install php-mcrypt libmcrypt libmcrypt-devel libpng-devel libpng libxml2-devel openssl-devel curl-devel libjpeg-devel freetype-devel
尽量做到缺哪个包装哪个包
yum -y install mysql-community-devel

useradd -s /sbin/nologin php-fpm
3.源码编译安装php
./configure
–prefix=/usr/local/php
–with-config-file-path=/usr/local/php/etc
–enable-inline-optimization
–disable-debug
–disable-rpath
–enable-shared
–enable-opcache
–enable-fpm
–with-fpm-user=php-fpm
–with-fpm-group=php-fpm
–with-mysql=mysqlnd
–with-mysqli=mysqlnd
–with-pdo-mysql=mysqlnd
–with-gettext
–enable-mbstring
–with-iconv
–with-mcrypt
–with-mhash
–with-openssl
–enable-bcmath
–enable-soap
–with-libxml-dir
–enable-pcntl
–enable-shmop
–enable-sysvmsg
–enable-sysvsem
–enable-sysvshm
–enable-sockets
–with-curl
–with-zlib
–enable-zip
–with-bz2
–with-readline
–without-sqlite3
–without-pdo-sqlite
–with-pear
–enable-maintainer-zts
–enable-dtrace
–with-png-dir
–with-freetype-dir
–with-jpeg-dir
–with-gd

make
make install
或者make -j4 尽量使用多个处理器同时处理以加快速度

4.进行配置
cp php.ini-production /usr/local/php/etc/php.ini
##php.ini,编译配置时配在php/etc目录下
cp php-7.2.23/php.ini-development /usr/local/php/etc/php.ini
##php-fpm.conf
cp php-7.2.23/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
##www.conf
cp php-7.2.23/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

:优化php.ini。
vim /usr/local/php/etc/php.ini
post_max_size = 64M
upload_max_filesize = 100M
date.timezone = Asia/Shanghai
max_execution_time = 600
max_input_time = 600
memory_limit = 512M
mysqli.default_socket = /var/lib/mysql/mysql.sock

:配置php-fpm.conf配置文件。
cd /usr/local/php/etc/
cp php-fpm.conf.default php-fpm.conf
vim php-fpm.conf
pid = run/php-fpm.pid
error_log = log/php-fpm.log

:编辑www.conf文件(php-fpm.conf其实是通过inclued将其加载进配置文件)
cd php-fpm.d/
mv www.conf.default www.conf
vim www.conf
listen = 127.0.0.1:9000
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 30
pm.max_requests = 500
rlimit_files = 1024

5.防火墙开放php
firewall-cmd --permanent --zone=public --add-port=9000/tcp
firewall-cmd --reload

6.设置开机自启并启动服务
vim /lib/systemd/system/php-fpm.service
[Unit]
Description=php-fpm
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/php/sbin/php-fpm
PrivateTmp=true
[Install]
WantedBy=multi-user.target

启动服务
/usr/local/php/sbin/php-fpm

四.配置nginx和php关联
vim /usr/local/nginx/conf/nginx.conf
location / {
root html;
index index.php index.html index.htm; #设置默认首页为index.php,用户在地址栏中只写域名或IP,服务器会默认把首页index.php返回给客户

location ~ .php$ {
root html;
fastcgi_pass 127.0.0.1:9000;#将请求转发给本机9000端口,php解释器
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME d o c u m e n t r o o t document_root documentrootfastcgi_script_name;
include fastcgi.conf;
}
/usr/local/nginx/sbin/nginx -t #测试配置文件是否正确
/usr/local/nginx/sbin/nginx -s reload #重启

vim /usr/local/nginx/html/index.php
<?php
phpinfo();
?>
保存

浏览器访问进行测试