Linux Nginx MySQL PHP 部署
Nginx安装
# which nginx 搜索nginx
1、安装形式选择
yum
rpm
源代码安装
2、安装nginx依赖包及环境检查
yum install pcre pcre-devel openssl openssl-devel
3、下载nignx源代码包 taobao nginx,nginx 官网源码
wget http://nginx.org/download/nginx-1.16.0.tar.gz
4、解压
tar -zxvf nginx-1.16.0.tar.gz cd nginx-1.16.0
5、创建普通的nginx用户,运行nginx进程,降低nginx系统权限
useradd nginx -u 1111 -s /sbin/nologin -M
6、编译nginx服务
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http-stub_status_module --with-http_ssl_module
编译并安装
make && make install
7、最好给nginx配置一个软链接,这是生产环境常用的操作,便于运维,开发,调试一起使用,也便于nginx升级
ln -s /mytools/nginx16 /mytools/nginx
8、配置nginx环境变量
echo $PATH
添加nginx 的bin目录到PATH中,且写入到环境变量中,开机就能够自动读取了 /etc/profile
PATH="$PATH:/mytools/nginx/sbin"
wq 保存退出
MySQL 搭建
1、安装方式
yum rpm
源代码编译安装
2、创建普通mysql用户,降低程序运行权限
useradd -s /sbin/nologin mysql
查看mysql信息
[root@VM-4-2-centos extra]# grep "mysql" /etc/passwd
mysql:x:1009:1010::/home/mysql:/bin/bash
3、下载mysql二进制代码包,注意提前下载好wget工具
yum install get -y
wget http://mirrors.163.com/mysql/Downloads/MySQL-5.7/mysql5.7.26-linux-glibc2.12-x86_64.tar.gz
二进制方式安装方式
1.解压缩二进制代码
# tar -zxvf mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz
2.配置软链接,快捷访问mysql
[root@VM-4-2-centos mysql-5.7.37-linux-glibc2.12-x86_64]# ln -s /root/mysql-5.7.37-linux-glibc2.12-x86_64 /root/mysql
3. 安全性的准备工作,卸载可能centos7存在的mariadb相关的依赖关系
rpm -e --nodeps mariadb-libs
4. 准备启动mysql的配置文件,[mysqld]是区,段的含义,以下的参数,对其生效
[mysqld] 这是代表对服务端生效的参数
vim /etc/my.cnf
[mysqld]
basedir=/root/mysql
datadir=/root/mysql/data
socket=/tmp/mysql.sock
server_id=1
port=3306
log_error=/root/mysql/data/mysql_err.log
[mysql]
socket=/tmp/mysql.sock
初始化mysql服务端
1.先卸载系统自带的mariadb的依赖
rpm -e --nodeps mariadb-libs
2.检查mysql的所需的依赖环境
yum install libaio-devel -y
3. 创建mysql 数据库文件夹,用于初始化数据 且进行权限控制
mkdir -p /root/mysql/data
chown -R mysql.mysql /root/mysql/ # 修改mysql所有内容,更改属主,属组为mysql用户
4.初始化mysql数据库
/root/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/root/mysql/ --datadir=/root/mysql/data/
或者
/root/mysql/bin/mysqld --initialize-insecure
配置MySQL客户端
1、编写mysql启动的脚本 定义一个mysqld.service
[root@VM-4-2-centos system]# pwd
/etc/systemd/system
[root@VM-4-2-centos system]# touch /etc/systemd/system/mysqld.service
vim mysqld.service
[Unit]
Description=MySQL Server 5.7.27
Documentation=
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
User=mysql
Group=mysql
ExecStart=/root/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE=5000
[Install]
WantedBy=multi-user.target
启动mysqld服务端
systemctl start mysqld.service
启动后检查数据库状态
systemctl status mysqld
检查进程
ps -ef|grep mysqld
检查端口
netstat -tunlp | grep 3306
登录mysql数据库
如果电脑装过其他数据库,可以使用yum卸载,不会影响到安装的二进制mysql数据库
yum remove mysql -y
退出会话 重新登录
配置安装的二进制mysql PATH环境变量
/root/mysql/bin 这是安装的二进制mysql命令目录
echo $PATH
vim /etc/profile
PATH="$PATH:/root/mysql/bin:/usr/local/nginx/sbin"
保存退出之后,重新登录
exit
which mysql
登录mysql 使用mysql
mysql -u root -p
创建数据库
create database chaoge;
查看数据库
show databases;
修改数据库密码
mysqladmin -u root password 'chaoge666' # 使用mysqladmin命令,修改root密码
二进制方式安装MySQL5.7 方式二:
# 下载Mysql5.7二进制包
wget mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
# 解压二进制
tar -zxvf mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
# 将mysql包移动并改名为mysql
mv mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz /usr/local/mysql
# 创建无登录用户
useradd -s /sbin/nologin mysql
# 赋予mysql目录权限
chown -R mysql.mysql /usr/local/mysql
# 配置全局变量
vim /etc/profile
# 在文件最先添加
export PATH=/usr/local/mysql/bin:$PATH
# 退出并重载文件
source /etc/profile
# 验证是否添加完成
mysql -V
# 创建mysql数据目录
mkdir -p /data/mysql/data
# 赋予mysql目录权限
chown -R mysql.mysql /data
初始化mysql数据库
pwd
/data/mysql/data
mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data
初始化时会生成mysql密码
vim /etc/my.cnf
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql/data
socket=/tmp/mysql.sock
server_id=6
port=3306
[mysql]
socket=/tmp/mysql.sock
启动mysql
1、系统自带方式
cd /usr/local/mysql/support-files
[root@VM-4-2-centos support-files]# ll
total 24
-rw-r--r-- 1 mysql mysql 773 Nov 30 2021 magic
-rwxr-xr-x 1 mysql mysql 1061 Nov 30 2021 mysqld_multi.server
-rwxr-xr-x 1 mysql mysql 894 Nov 30 2021 mysql-log-rotate
-rwxr-xr-x 1 mysql mysql 10576 Nov 30 2021 mysql.server
启动mysql
./mysql.server start
查看mysql端口
ps -ef|grep 3306
登录
mysql -u root -p
tUdScGH=L0r<
修改mysql登录密码
alter user root@'localhost' identified by 'root';
flush privileges;
Centos7启动
vim /etc/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=https://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
查看mysql状态
[root@VM-4-2-centos support-files]# systemctl start mysqld
[root@VM-4-2-centos support-files]#
[root@VM-4-2-centos support-files]#
[root@VM-4-2-centos support-files]# systemctl status mysqld
● mysqld.service - LSB: start and stop MySQL
Loaded: loaded (/etc/rc.d/init.d/mysqld; bad; vendor preset: disabled)
Active: active (exited) since Mon 2022-08-01 16:39:40 CST; 2s ago
Docs: man:systemd-sysv-generator(8)
Process: 7793 ExecStart=/etc/rc.d/init.d/mysqld start (code=exited, status=0/SUCCESS)
Aug 01 16:39:40 VM-4-2-centos systemd[1]: Starting LSB: start and stop MySQL...
Aug 01 16:39:40 VM-4-2-centos mysqld[7793]: Starting MySQL SUCCESS!
Aug 01 16:39:40 VM-4-2-centos systemd[1]: Started LSB: start and stop MySQL.
Aug 01 16:39:40 VM-4-2-centos mysqld[7793]: 2022-08-01T08:39:40.995627Z mysqld_safe A mys...ts
Hint: Some lines were ellipsized, use -l to show in full.
启动方式2:
/usr/local/mysql/bin/mysqld_safe --defaults-file=/home/mysql/my.cnf
PHP安装
fastcgi
cgi通用网关接口,用于http服务器 nginx 和其他应用服务器通信的一个工具
PHP部署
1、先检查好mysql和nginx的启动状态
ps -ef|grep nginx
ps -ef|grep mysql
2、来安装php必须有的依赖环境
yum install gcc gcc-c++ make zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel libxslt-devel -y
3、缺少一个libiconv-devel软件包
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz
4、解压缩安装该软件包 编译三部曲
tar -zxvf libiconv-1.15.tar.gz
./configure --prefix=/root/libiconv
make && make install
5、检查上诉安装命令是否结束
echo $? 如果是0 表示安装结束
6、编译安装php程序
yum -y install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel ncurses curl gdbm-devel db4-devel libXpm-devel libX11-devel gd-devel gmp-devel expat-devel xmlrpc-c xmlrpc-c-devel libicu-devel libmcrypt-devel libmemcached-devel libzip gcc-c++
下载php源代码
wget http://mirrors.sohu.com/php/php-7.3.5.tar.gz
解压缩
tar -zxvf php-7.3.5.tar.gz
ls
cd php-7.3.5
./configure --prefix=/usr/local/php --enable-ftp --enable-zip --enable-fpm --with-pdo-mysql --with-jpeg-dir --with-png-dir --with-gd --with-curl --enable-mbstring --enable-bcmath --enable-sockets
复杂编译参数
./configure --prefix=/usr/local/php --exec-prefix=/usr/local/php --bindir=/usr/local/php/bin --sbindir=/usr/local/php/sbin --includedir=/usr/local/php/include --libdir=/usr/local/php/lib/php --mandir=/usr/local/php/php/man --with-config-file-path=/usr/local/php/etc --with-mysql-sock=/tmp/mysql.sock --with-mhash --with-openssl --with-mysqli=shared,mysqlnd --with-pdo-mysql=shared,mysqlnd --with-gd --with-iconv --with-zlib --enable-zip --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-mbregex --enable-mbstring --enable-ftp --enable-gd-native-ttf --enable-pcntl --enable-sockets --with-xmlrpc --enable-soap --without-pear --with-gettext --enable-session --with-curl --with-jpeg-dir --with-freetype-dir --enable-opcache --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --without-gdbm --enable-fast-install
如果出现如下错误:
configure: error: Please reinstall the libzip distribution
#解决:
wget https://nih.at/libzip/libzip-1.2.0.tar.gz
tar -zxvf libzip-1.2.0.tar.gz
cd libzip-1.2.0
./configure
make && make install
如果出现如下错误:
php7.3 configure: error: off_t undefined; check your library configuration
# 添加搜索路径到配置文件
echo '/usr/local/lib64
/usr/local/lib
/usr/lib
/usr/lib64'>>/etc/ld.so.conf
# 更新配置
ldconfig -v
然后在继续安装php
make && make install
参考:
https://blog.csdn.net/wqww_1/article/details/112259519
php 配置文件
默认的php配置文件模板,在解压php源码的目录下
[root@VM-4-2-centos php-7.3.5]# ls php.ini*
php.ini-development php.ini-production
[root@VM-4-2-centos php-7.3.5]# pwd
/root/php-7.3.5
# 比较一下php生产配置文件,和开发模式配置文件的区别
# vimdiff php.ini-development php.ini-production
2.拷贝该配置文件,放入到php安装目录下
[root@VM-4-2-centos php-7.3.5]# cp php.ini-development /usr/local/php/lib/php.ini
FASTCGI配置文件
1、检查fastcgi的默认配置文件
[root@VM-4-2-centos php-7.3.5]# cd /usr/local/php/etc/
[root@VM-4-2-centos etc]# ls
pear.conf php-fpm.conf.default php-fpm.d
[root@VM-4-2-centos etc]#
[root@VM-4-2-centos etc]# pwd
/usr/local/php/etc
2、拷贝模板配置文件
[root@VM-4-2-centos etc]# cp php-fpm.conf.default php-fpm.conf
[root@VM-4-2-centos etc]# cd php-fpm.d/
[root@VM-4-2-centos php-fpm.d]# ls
www.conf.default
[root@VM-4-2-centos php-fpm.d]# cp www.conf.default www.conf
[root@VM-4-2-centos php-fpm.d]# pwd
/usr/local/php/etc/php-fpm.d
[root@VM-4-2-centos php-fpm.d]#
启动PHP服务,指定以fastcgi形式
用绝对路径命令,启动php进程
[root@VM-4-2-centos php]# cd sbin/
[root@VM-4-2-centos sbin]# ls
php-fpm
[root@VM-4-2-centos sbin]# pwd
/usr/local/php/sbin
[root@VM-4-2-centos sbin]# /usr/local/php/sbin/php-fpm
启动php后,检查端口和进程信息
[root@VM-4-2-centos sbin]# netstat -tunlp |grep php
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 3585/php-fpm: maste
[root@VM-4-2-centos sbin]# netstat -tunlp |grep php
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 3585/php-fpm: maste
[root@VM-4-2-centos sbin]# ps -ef|grep php
root 3585 1 0 10:21 ? 00:00:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
nobody 3586 3585 0 10:21 ? 00:00:00 php-fpm: pool www
nobody 3587 3585 0 10:21 ? 00:00:00 php-fpm: pool www
root 3773 614 0 10:22 pts/2 00:00:00 grep --color=auto php
1.修改nginx支持php代码
# vim /usr/local/nginx/conf/nginx.conf
在文件末尾处增加
include extra/my_php.conf;
}
2.手动创建extra目录,以及my_php.conf文件
server {
listen 80;
server_name _;
location / {
root html;
index index.html;
}
# 添加有关php程序的解析
# 判断当请求url结尾是以php,php5的时候,就进入如下的location代码
location ~ .*\.(php|php5)?$ {
root html/myphp;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
}
3.检查nginx语法 以及重启nginx
[root@VM-4-2-centos conf]# nginx -s reload
[root@VM-4-2-centos conf]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
4. 创建phP的首页脚本文件
[root@VM-4-2-centos extra]# mkdir -p /usr/local/nginx/html/myphp
[root@VM-4-2-centos extra]# echo "<?php echo phpinfo(); ?>" > /usr/local/nginx/html/myphp/index.php
nginx -s reload
5. 测试lnmp的结合关系
访问 http://42.192.180.238/index.php
当访问到phpinfo 内容 表示lnmp环境搭建完毕,nginx就可以转发请求给php了
测试php访问mysql
mysql> create database chaoge;
Query OK, 1 row affected (0.00 sec)
mysql> use chaoge;
Database changed
mysql> create table mytable(
-> id int(11) primary key auto_increment,
-> name varchar(20)
-> );
Query OK, 0 rows affected (0.06 sec)
mysql> insert into mytable(name) values ('zhangsan');
Query OK, 1 row affected (0.01 sec)
mysql> insert into mytable(name) values ('lisi');
Query OK, 1 row affected (0.01 sec)
编写php的脚本 test_mysql.php
<?php
$conn= mysqli_connect('localhost','root','root');
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "连接成功";
$sql = "select * from mytable";
mysqli_select_db($conn,'chaoge');
$res = mysqli_query($conn,$sql);
while($row = mysqli_fetch_array($res,MYSQLI_ASSOC)){
echo "{$row['id']}";
echo "{$row['name']}";
}
mysqli_close($conn);
?>