CentOS7下PHP&Nginx&Mysql编译安装及sytemd配置

2007 查看

闲话少叙,直接开始

yum安装依赖

复制以下内容,回车直接安装编译php,nginx,mysql所需的依赖

shyum install -y\
 kenel-devel gcc gcc-c++ patch\
 perl-Module-Install.noarch libaio pcre-devel\
 openssl-devel systemd-devel libacl-devel\
 systemtap-sdt-devel libxml2-devel libcurl-devel\
 libpng-devel libicu-devel

创建用户和组

注意此处的组创建和用户创建在后面编译安装中需要,当然可以根据个人习惯自己命名想要的组名和用户名

groupadd php-fpm
groupadd nginx
groupadd mysql
useradd -g php-fpm php-fpm
useradd -g nginx nginx
useradd -g mysql mysql

PHP(5.6)编译安装

prefix 根据个人习惯去修改一下,with-fpm-user(group)和前面创建的php相关用户保持一致
以下是编译配置参数

./configure --prefix=/data/soft/php\
 --enable-fpm\
 --with-fpm-user=php-fpm\
 --with-fpm-group=php-fpm\
 --with-fpm-systemd\
 --with-fpm-acl\
 --enable-mysqlnd\
 --with-mysqli=mysqlnd\
 --with-pdo-mysql=mysqlnd\
 --enable-opcache\
 --enable-pcntl\
 --enable-soap\
 --enable-sockets\
 --enable-phpdbg\
 --enable-dtrace\
 --enable-calendar\
 --enable-intl\
 --enable-mbstring\
 --enable-gd-native-ttf\
 --enable-exif\
 --enable-ftp\
 --with-openssl\
 --with-zlib\
 --with-curl\
 --with-gd\
 --with-gettext

执行configure之后,make及make install即可

Nginx编译安装

同理 prefix可自由修改自己习惯的路径,user和group参数为之前创建的nginx用户和组
http_stub_status_module是nginx状态监控模块,比较有用

./configure --prefix=/data/soft/nginx\
 --user=nginx\
 --group=nginx\
 --with-threads\
 --with-http_ssl_module\
 --with-http_spdy_module\
 --with-http_realip_module\
 --with-http_gzip_static_module\
 --with-http_auth_request_module\
 --with-http_stub_status_module

configure执行完毕之后make 然后 make install

Mysql的安装

去这个链接地址 http://dev.mysql.com/downloads/mysql/ 选择合适的linux generic版本下载
解压下载完毕后的压缩包(假设解压后的路径是/tmp/mysql-5.xx.xx)
mv /tmp/mysql-5.xx.xx /data/soft/mysql
修改/data/soft/mysql目录权限

chown -R mysql:mysql /data/soft/mysql

执行如下命令

cd /data/soft/mysql
./scripts/mysql_install_db --basedir=/data/soft/mysql --datadir=/data/soft/mysql/data --defaults-file=/data/soft/mysql/my.conf --user=mysql

sytemd的配置

  • PHP-FPM的systemd配置
[Install]
#期望自启动的级别,也可以指定multi-user.target
WantedBy=default.target
[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target

[Service]
Type=notify
PIDFile=/data/soft/php/var/run/php-fpm.pid
ExecStart=/data/soft/php/sbin/php-fpm --nodaemonize --fpm-config /data/soft/php/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
  • Nginx的systemd配置
[Unit]
Description= Nginx Server
After=syslog.target network.target

[Service]
Type=forking
PIDFile=/data/soft/nginx/nginx.pid
ExecStart=/data/soft/nginx/sbin/nginx -c /data/soft/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
  • Mysql的systemd配置
[Install]
WantedBy=multi-user.target
[Unit]
# 描述
Description=Mysqld Server (prefork MPM)
# 启动顺序在网络启动之后
After=syslog.target network.target
[Service]
User=mysql
Group=mysql
Type=simple
# 进程文件目录
PIDFile=/data/soft/mysql/data/mysql.pid
# 配置文件
# 下面三个参数名称是systemd固定的
ExecStart=/data/soft/mysql/bin/mysqld_safe --defaults-file=/data/soft/mysql/my.cnf --ledir=/data/soft/mysql/bin
ExecStop=kill -s -QUIT $MAINPID
# true表示创建进程独立的临时目录
PrivateTmp=true

[Install]
#期望自启动的级别,也可以指定multi-user.target
WantedBy=default.target

ok,基本完成,感觉systemd的配置还是不够完善,有熟悉的朋友请指正