LNMP部署手动档

倖福魔咒の 提交于 2019-12-01 20:15:18
LNMP=Linux+nginx+MySQL+php
和LAMP安装PHP方法有差别,需要开启php-fpm服务,需要添加php-fpm用户
添加第三方epel源
rpm -ivh epel-release-latest-8.noarch.rpm
yum repolist
1.必须先装mysql5.6 //5.6,5.5,5.7的安装配置方式完全不一样,此处只适用于5.6
mysql编译安装伤不起,运行了四个小时后说内存不足,进程被杀死。所以下面是二进制安装方式,只是rpm包太过巨大,下载耗费时间。
下载的安装包和软件统一放置在/opt目录下存留
cd /opt && wget http://ftp.ntu.edu.tw/MySQL/Downloads/MySQL-5.6/mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz //下载软件包
tar zxvf mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz //解压
mv mysql-5.6.46-linux-glibc2.12-x86_64 mysql5.6 //改名
mv mysql5.6 /usr/local && ln -s mysql5.6 mysql //挪到安装目录且做个软链,这个软链非常有必要!
mkdir -p /usr/local/mysql/data //建立数据目录
id mysql //查看用户存在不,若不存在则$?=1 这里最好用完整的判断语句
groupadd -r mysql //添加mysql用户组
useradd -g mysql -r -d /usr/local/mysql/data mysql //添加Mysql用户
mv /etc/my.cnf /etc/my.cnf.back_up //备份文件
cd /usr/local/mysql/support-files
cp my-default.cnf /etc/my.cnf //拷贝主配置文件
cp mysql.server /etc/init.d/mysqld //拷贝启动脚本,然后修改
vi /etc/init.d/mysqld
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
 
cd /usr/local/mysql && chown -R mysql:mysql . //更改文件目录权限
cd /usr/local/mysql/scripts && yum -y install autoconf //如果不装autoconf,会报错
 
./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data //重要的一环,数据库初始化
 
echo "export PATH=/usr/local/mysql/bin:$PATH" >>/etc/profile
source /etc/profile
vim /etc/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
 
systemctl start mysqld
netstat -tunlp | grep 3306
chkconfig --add mysqld //可能会添加不成功
 
mysql //第一次无需密码就直接进去了
delete from mysql.user where user='';
delete from mysql.user where host='::1';
select user,host from mysql.user;
use mysql;
update user set password=password("abc123xyz") where user="root";
flush privileges;
select User,Password,Host from mysql.user\G
 
exit; //退出
mysql -uroot -p //重新登录看密码生效了不?
 
systemctl stop mysqld //停止服务
netstat -tunlp | grep 3306 // 看停止了没?
systemctl start mysqld //重启服务
netstat -tunlp | grep 3306 //检查启动成功了没
 
===========================================================
2.自然就是安装nginx
1.解决nginx和php的依赖库
yum install gcc gcc-c++ autoconf 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 e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers mysql-devepcre* openssl* pcre-devel gd-devel freetype-devel -y
 
2. 去下载源码文件 取稳定版 1.80.1
 
3.解压后进入
tar -zxcf nginx*
 
4.先添加用户组,创建某目录 不然启动失败
useradd -r -s /sbin/nologin -M nginx
mkdir /usr/local/nginx
chown -R nginx:nginx /usr/local/nginx
 
5 设置编译选项,以下为少量必要项目
./configure \
--prefix=/usr/local/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_flv_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre
make && make install
 
6 启动 停止 重启 平滑升级 增加编译模块
默认监听端口80,如本机装有apache,可以更改为800
启动: /usr/local/nginx/sbin/nginx
从容停止: ps -aux|grep nginx 查看master进程的id号 然后kill -quit 主进程号
强制停止:pkill -9 nginxPID
平滑重启(已经启动):kill -hup 主进程号
检查配置语法:/usr/local/nginx/sbin/nginx -t
重新加载配置文件: /usr/local/nginx/sbin/nginx -s reload
 
遇到错误的解决办法:
nginx: [alert] kill(987654, 1) failed (3: No such process
手动加载配置 /usr/local/nginx/sbin/nginx -c /etc/nginx/nginx.conf
nginx: [error] invalid PID number "" in "/var/run/nginx/nginx.pid
touch /var/run/nginx/nginx.pid 写个6位较大数值进去,停止后重启
 
再次重新加载日志文件: /usr/local/nginx/sbin/nginx -s reload 再无错误提示
查看配置编译选项和版本号: /usr/local/nginx/sbin/nginx -V
 
7:加入环境变量 export PATH=/usr/local/nginx/sbin/nginx:$PATH 就可以通过nginx -s reload/stop/quit来直接操作nginx了
配置文件在这里:/etc/nginx/nginx.conf
 
如果遇上错误curl: (7) Failed connect to IP; Connection refused,说明是权限不够。执行 chown -R nginx:nginx /usr/local/nginx 即可解决
 
===========================================================
3.轮到PHP了 编译参数和apache完全不同
wget https://www.php.net/distributions/php-7.3.2.tar.gz
useradd -s /sbin/nologin php-fpm //编译前先添加用户
 
 
./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc --enable-mysqlnd --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/mysql_config --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --with-mhash --enable-bcmath --with-curl
 
make && make install
 
 
编译时出现错误提示:
checking for specified location of the MySQL UNIX socket... no
mysql_config not found
复制配置文件即可解决
cp /usr/local/mysql5.6.46/bin/mysql_config /usr/local/mysql/mysql_config
 
配置nginx解析php,踩坑记
1.编译时一定要加上 --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm,否则不出现php-fpm模块
 
2.两个配置文件要准备好,和传言的大不相同
cd /usr/local/php7/etc/php-fpm.d/ && cp www.conf.default www.conf
cd /usr/local/php7/etc && cp php-fpm.conf.default php-fpm.conf
 
3. /usr/local/php7/sbin/php-fpm
netstat -tunlp |grep 9000
运行php-fpm,再检查9000端口起来了没有
 
4./etc/nginx/nginx.conf的location区块,通用手段是:
location ~ .*\.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi.conf;
include fastcgi_params;
}
运行用户为nginx,不能是默认选项
 
5.html根目录下所有文件的用户一定要是nginx,错误提示为not found。当你在目录下新建文件时,用户可能是root,这个需要留意
 
6.当解析php变成下载文件时,或者重启nginx报告9000端口被占用,如检查配置确认没有问题,那就把php-fpm进程杀了重启。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!