页面“Mysql5.5 install”与“Nginx on centos7”之间的差异

来自linux中国网wiki
(页面间的差异)
跳到导航 跳到搜索
 
 
第1行: 第1行:
[[category:mysql]]
+
=base=
 
 
 
 
=binary install=
 
站内信息 [[Docker mysql]]
 
 
<pre>
 
<pre>
#!/bin/bash
+
例如我的安装目录是/usr/local/nginx
# Author:  linuxsa.org
+
修改配置后重新加载生效
# BLOG:  
+
/usr/local/nginx/sbin/nginx -s reload
 +
重新打开日志文件
 +
/usr/local/nginx/sbin/nginx -s reopen
 +
测试nginx配置文件是否正确
 +
/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
 +
启动nginx
 +
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
 +
快速停止nginx
 +
/usr/local/nginx/sbin/nginx -s stop
 +
完整有序的停止nginx
 +
/usr/local/nginx/sbin/nginx -s quit
 +
:stop和quit的区别在于
 +
quit是一个优雅的关闭方式,Nginx在退出前完成已经接受的连接请求
 +
Stop 是快速关闭,不管有没有正在处理的请求。
  
 +
其他的停止nginx 方式:
 +
ps -ef | grep nginx
  
mysql_install_dir=/home/apps/mysql
+
kill -QUIT 主进程号 :从容停止Nginx
mysql_data_dir=/home/apps/mysql/data
+
kill -TERM 主进程号 :快速停止Nginx
Mem=`free -m | awk '/Mem:/{print $2}'`
+
pkill -9 nginx :强制停止Nginx
  
Install_MySQL55() {
+
平滑重启nginx:
  #pushd ${oneinstack_dir}/src > /dev/null
+
kill -HUP 主进程号
  #id -u mysql >/dev/null 2>&1
 
  [ $? -ne 0 ] && useradd -M -s /sbin/nologin mysql
 
  
  [ ! -d "${mysql_install_dir}" ] && mkdir -p ${mysql_install_dir}
+
为了方便,现将nginx服务添加至systemctl
 
+
1.修改nginx配置文件,开启pid
 +
pid /var/run/nginx.pid;
 +
2.通过上述方式关闭nginx服务
 +
3.配置服务,在/usr/lib/systemd/system/nginx.service文件,vim编辑如下
  
  #if [ "${dbinstallmethod}" == "1" ]; then
+
vi /usr/lib/systemd/system/nginx.service
    #tar xzf mysql-${mysql55_ver}-linux-glibc2.12-${SYS_BIT_b}.tar.gz
+
[Unit]  
tar xvf  mysql-5.5.62-linux-glibc2.12-x86_64.tar.gz
+
Description=nginx - high performance web server
 +
After=network.target remote-fs.target nss-lookup.target
  
    #mv mysql-${mysql55_ver}-linux-glibc2.12-${SYS_BIT_b}/* ${mysql_install_dir}
+
[Service]
mv  mysql-5.5.62-linux-glibc2.12-x86_64/*  ${mysql_install_dir}
+
Type=forking
+
PIDFile=/var/run/nginx.pid
mkdir -p ${mysql_data_dir};chown mysql.mysql -R ${mysql_data_dir}
+
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
+
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
#这个没执行
+
ExecReload=/usr/local/nginx/sbin/nginx -s reload
    #sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libjemalloc.so@' ${mysql_install_dir}/bin/mysqld_safe
+
ExecStop=/usr/local/nginx/sbin/nginx -s stop
    sed -i "s@/usr/local/mysql@${mysql_install_dir}@g" ${mysql_install_dir}/bin/mysqld_safe
+
ExecQuit=/usr/local/nginx/sbin/nginx -s quit
+
PrivateTmp=true
  
#这个是源码的 跳过
+
[Install]  
  elif [ "${dbinstallmethod}" == "2" ]; then
+
WantedBy=multi-user.target
    tar xzf mysql-${mysql55_ver}.tar.gz
 
    pushd mysql-${mysql55_ver}
 
    [ "${armplatform}" == "y" ] && patch -p1 < ../mysql-5.5-fix-arm-client_plugin.patch
 
    cmake . -DCMAKE_INSTALL_PREFIX=${mysql_install_dir} \
 
    -DMYSQL_DATADIR=${mysql_data_dir} \
 
    -DSYSCONFDIR=/etc \
 
    -DWITH_INNOBASE_STORAGE_ENGINE=1 \
 
    -DWITH_PARTITION_STORAGE_ENGINE=1 \
 
    -DWITH_FEDERATED_STORAGE_ENGINE=1 \
 
    -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
 
    -DWITH_MYISAM_STORAGE_ENGINE=1 \
 
    -DWITH_READLINE=1 \
 
    -DWITH_EMBEDDED_SERVER=1 \
 
    -DENABLE_DTRACE=0 \
 
    -DENABLED_LOCAL_INFILE=1 \
 
    -DDEFAULT_CHARSET=utf8mb4 \
 
    -DDEFAULT_COLLATION=utf8mb4_general_ci \
 
    -DEXTRA_CHARSETS=all \
 
    -DCMAKE_EXE_LINKER_FLAGS='-ljemalloc'
 
    make -j ${THREAD}
 
    make install
 
    popd
 
  fi
 
  
#这个if 不成理
 
  if [ -d "${mysql_install_dir}/support-files" ]; then
 
    #sed -i "s+^dbrootpwd.*+dbrootpwd='${dbrootpwd}'+" ../options.conf
 
    echo "${CSUCCESS}MySQL installed successfully! ${CEND}"
 
    if [ "${dbinstallmethod}" == "1" ]; then
 
      rm -rf mysql-${mysql55_ver}-*-${SYS_BIT_b}
 
    elif [ "${dbinstallmethod}" == "2" ]; then
 
      rm -rf mysql-${mysql55_ver}
 
    fi
 
 
  else
 
  # rm -rf ${mysql_install_dir}
 
    #echo "${CFAILURE}MySQL install failed, Please contact the author! ${CEND}"
 
    kill -9 $$
 
  fi
 
  
  /bin/cp ${mysql_install_dir}/support-files/mysql.server /etc/init.d/mysqld
+
[Unit]部分主要是对这个服务的说明,内容包括Description和After,Description用于描述服务,After用于描述服务类别
  sed -i "s@^basedir=.*@basedir=${mysql_install_dir}@" /etc/init.d/mysqld
 
  sed -i "s@^datadir=.*@datadir=${mysql_data_dir}@" /etc/init.d/mysqld
 
  chmod +x /etc/init.d/mysqld
 
  [ "${PM}" == 'yum' ] && { chkconfig --add mysqld; chkconfig mysqld on; }
 
  [ "${PM}" == 'apt-get' ] && update-rc.d mysqld defaults
 
  popd
 
  
  # my.cnf
+
[Service]部分是服务的关键,是服务的一些具体运行参数的设置,这里Type=forking是后台运行的形式,PIDFile为存放PID的文件路径,ExecStart为服务的具体运行命令,ExecReload为重启命令,ExecStop为停止命令,PrivateTmp=True表示给服务分配独立的临时空间,注意:[Service]部分的启动、重启、停止命令全部要求使用绝对路径,使用相对路径则会报错!
  cat > /etc/my.cnf << EOF
 
[client]
 
port = 3306
 
socket = /tmp/mysql.sock
 
  
[mysql]
+
[Install]部分是服务安装的相关设置,可设置为多用户的
prompt="MySQL [\\d]> "
 
no-auto-rehash
 
  
[mysqld]
+
服务脚本按照上面编写完成后,以754的权限保存在/usr/lib/systemd/system目录下
port = 3306
+
然后执行(修改或新增文件需要执行以下语句才能生效)
socket = /tmp/mysql.sock
+
systemctl daemon-reload
 +
这时就可以利用systemctl进行配置了
 +
systemctl start/stop/reload/quit nginx.service
 +
若发生报错,可通过systemctl status nginx.service查看失败原因
 +
systemctl enable nginx.service 开机自启动
  
basedir = ${mysql_install_dir}
+
</pre>
datadir = ${mysql_data_dir}
+
=upstream=
pid-file = ${mysql_data_dir}/mysql.pid
+
<pre>
user = mysql
+
  upstream read.zhaitua.com {
bind-address = 0.0.0.0
+
        server  172.18.140.166:1080 weight=5;
server-id = 1
+
#              server  172.18.140.165:1080 weight=1;
 +
        keepalive      32;
 +
    } 
  
init-connect = 'SET NAMES utf8mb4'
+
</pre>
character-set-server = utf8mb4
 
  
skip-name-resolve
+
=troubleshooting=
#skip-networking
 
back_log = 300
 
  
max_connections = 1000
+
原因:
max_connect_errors = 6000
+
502 GAT away
open_files_limit = 65535
+
Php-cgi进程挂掉或者是没有cgi进程
table_open_cache = 128
 
max_allowed_packet = 500M
 
binlog_cache_size = 1M
 
max_heap_table_size = 8M
 
tmp_table_size = 16M
 
  
read_buffer_size = 2M
+
504 timeout
read_rnd_buffer_size = 8M
+
Nginx请求不到php-cgi进程,超时
sort_buffer_size = 8M
 
join_buffer_size = 8M
 
key_buffer_size = 4M
 
  
thread_cache_size = 8
+
解决方法:
 +
思路:
  
query_cache_type = 1
+
502错误和php-fpm.conf配置文件有关系,网上很多教程都说了,一般就设置以下几个选项
query_cache_size = 8M
 
query_cache_limit = 2M
 
  
ft_min_word_len = 4
+
[https://blog.csdn.net/hsw_linux/article/details/82291010 nginx常见问题处理]
  
log_bin = mysql-bin
 
binlog_format = mixed
 
expire_logs_days = 7
 
  
log_error = ${mysql_data_dir}/mysql-error.log
 
slow_query_log = 1
 
long_query_time = 1
 
slow_query_log_file = ${mysql_data_dir}/mysql-slow.log
 
  
performance_schema = 0
+
[https://blog.csdn.net/u010391029/article/details/46884107 Nginx 502 Bad Gateway 错误的原因及解决方法]
  
#lower_case_table_names = 1
+
[https://www.cnblogs.com/pengrj/p/8685551.html nginx故障及处理]
  
skip-external-locking
 
  
default_storage_engine = InnoDB
+
[https://yq.aliyun.com/articles/80379 Nginx常见故障 400 502  504]
innodb_file_per_table = 1
 
innodb_open_files = 500
 
innodb_buffer_pool_size = 64M
 
innodb_write_io_threads = 4
 
innodb_read_io_threads = 4
 
innodb_thread_concurrency = 0
 
innodb_purge_threads = 1
 
innodb_flush_log_at_trx_commit = 2
 
innodb_log_buffer_size = 2M
 
innodb_log_file_size = 32M
 
innodb_log_files_in_group = 3
 
innodb_max_dirty_pages_pct = 90
 
innodb_lock_wait_timeout = 120
 
  
bulk_insert_buffer_size = 8M
+
[https://zhuanlan.zhihu.com/p/32469287 PHP与NGINX 499、502问题处理]
myisam_sort_buffer_size = 8M
 
myisam_max_sort_file_size = 10G
 
myisam_repair_threads = 1
 
  
interactive_timeout = 28800
 
wait_timeout = 28800
 
 
[mysqldump]
 
quick
 
max_allowed_packet = 500M
 
 
[myisamchk]
 
key_buffer_size = 8M
 
sort_buffer_size = 8M
 
read_buffer = 4M
 
write_buffer = 4M
 
EOF
 
 
  sed -i "s@max_connections.*@max_connections = $((${Mem}/3))@" /etc/my.cnf
 
  if [ ${Mem} -gt 1500 -a ${Mem} -le 2500 ]; then
 
    sed -i 's@^thread_cache_size.*@thread_cache_size = 16@' /etc/my.cnf
 
    sed -i 's@^query_cache_size.*@query_cache_size = 16M@' /etc/my.cnf
 
    sed -i 's@^myisam_sort_buffer_size.*@myisam_sort_buffer_size = 16M@' /etc/my.cnf
 
    sed -i 's@^key_buffer_size.*@key_buffer_size = 16M@' /etc/my.cnf
 
    sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 128M@' /etc/my.cnf
 
    sed -i 's@^tmp_table_size.*@tmp_table_size = 32M@' /etc/my.cnf
 
    sed -i 's@^table_open_cache.*@table_open_cache = 256@' /etc/my.cnf
 
  elif [ ${Mem} -gt 2500 -a ${Mem} -le 3500 ]; then
 
    sed -i 's@^thread_cache_size.*@thread_cache_size = 32@' /etc/my.cnf
 
    sed -i 's@^query_cache_size.*@query_cache_size = 32M@' /etc/my.cnf
 
    sed -i 's@^myisam_sort_buffer_size.*@myisam_sort_buffer_size = 32M@' /etc/my.cnf
 
    sed -i 's@^key_buffer_size.*@key_buffer_size = 64M@' /etc/my.cnf
 
    sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 512M@' /etc/my.cnf
 
    sed -i 's@^tmp_table_size.*@tmp_table_size = 64M@' /etc/my.cnf
 
    sed -i 's@^table_open_cache.*@table_open_cache = 512@' /etc/my.cnf
 
 
  elif [ ${Mem} -gt 3500 ]; then
 
    sed -i 's@^thread_cache_size.*@thread_cache_size = 64@' /etc/my.cnf
 
    sed -i 's@^query_cache_size.*@query_cache_size = 64M@' /etc/my.cnf
 
    sed -i 's@^myisam_sort_buffer_size.*@myisam_sort_buffer_size = 64M@' /etc/my.cnf
 
    sed -i 's@^key_buffer_size.*@key_buffer_size = 256M@' /etc/my.cnf
 
    sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 1024M@' /etc/my.cnf
 
    sed -i 's@^tmp_table_size.*@tmp_table_size = 128M@' /etc/my.cnf
 
    sed -i 's@^table_open_cache.*@table_open_cache = 1024@' /etc/my.cnf
 
  fi
 
 
  ${mysql_install_dir}/scripts/mysql_install_db --user=mysql --basedir=${mysql_install_dir} --datadir=${mysql_data_dir}
 
 
echo 'export PATH=/home/apps/mysql/bin/:$PATH' >> /etc/profile && source /etc/profile
 
 
  [ "${Wsl}" == true ] && chmod 600 /etc/my.cnf
 
  chown mysql.mysql -R ${mysql_data_dir}
 
  [ -d "/etc/mysql" ] && /bin/mv /etc/mysql{,_bk}
 
  service mysqld start
 
  #[ -z "$(grep ^'export PATH=' /etc/profile)" ] && echo "export PATH=${mysql_install_dir}/bin:\$PATH" >> /etc/profile
 
  #[ -n "$(grep ^'export PATH=' /etc/profile)" -a -z "$(grep ${mysql_install_dir} /etc/profile)" ] && sed -i "s@^export PATH=\(.*\)@export PATH=${mysql_install_dir}/bin:\1@" /etc/profile
 
  . /etc/profile
 
 
dbrootpwd=1234Kuycs886Q
 
 
  ${mysql_install_dir}/bin/mysql -e "grant all privileges on *.* to root@'127.0.0.1' identified by \"${dbrootpwd}\" with grant option;"
 
  ${mysql_install_dir}/bin/mysql -e "grant all privileges on *.* to root@'localhost' identified by \"${dbrootpwd}\" with grant option;"
 
  ${mysql_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "delete from mysql.user where Password='';"
 
  ${mysql_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "delete from mysql.db where User='';"
 
  ${mysql_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "delete from mysql.proxies_priv where Host!='localhost';"
 
  ${mysql_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "drop database test;"
 
  ${mysql_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "reset master;"
 
  rm -rf /etc/ld.so.conf.d/{mysql,mariadb,percona,alisql}*.conf
 
  [ -e "${mysql_install_dir}/my.cnf" ] && rm -f ${mysql_install_dir}/my.cnf
 
  echo "${mysql_install_dir}/lib" > /etc/ld.so.conf.d/z-mysql.conf
 
  ldconfig
 
  service mysqld stop
 
}
 
  
 +
[https://www.centos.bz/2015/04/handle-nginx-write-io-problem/ Nginx写IO占用高故障处理]
  
 +
=complate=
 +
<pre>
 +
./configure --prefix=/data/apps/nginx --user=www --group=www  --error-log-path=/data/logs/nginx/error.log  --http-log-path=/data/logs/nginx/access.log  --pid-path=/data/apps/nginx/nginx\
 +
  .pid --lock-path=/data/apps/nginx/nginx.lock      --with-http_stub_status_module  --with-pcre=/root/rpmbuild/SOURCES/pcre-8.21 --with-zlib=/root/rpmbuild/SOURCES/zlib-1.2.3 --with-openss\
 +
  l=/root/rpmbuild/SOURCES/openssl-1.0.1p  --without-poll_module    --with-http_ssl_module  --with-http_gzip_static_module  --without-poll_module  --without-http_ssi_module --without-http_\
 +
  userid_module --without-http_geo_module --without-http_memcached_module --without-http_map_module --with-http_realip_module  --without-mail_pop3_module  --without-select_module  --witho\
 +
  ut-mail_imap_module --without-mail_smtp_module  --without-http_scgi_module  --with-cc-opt='-O3' --with-ipv6;
 +
</pre>
  
##提示的
+
[https://nginx.org/en/docs/configure.html Building nginx from Sources]
/home/apps/mysql/bin/mysqladmin -u root password 'new-password'
 
/home/apps/mysql/bin/mysqladmin -u root -h 10.3.10.139
 
172.23.11.139 password 'new-password'
 
  
Alternatively you can run:
+
[https://docs.nginx.com/nginx/admin-guide/ admin-guide]
/home/apps/mysql/bin/mysql_secure_installation
 
  
</pre>
+
[[Nginx优化]]
  
=手工=
+
=yum install=
 
<pre>
 
<pre>
mysql5.5  os debian 10.5 buster
 
  
wget -c  https://mirrors.163.com/mysql/Downloads/MySQL-5.5/mysql-5.5.62-linux-glibc2.12-x86_64.tar.gz
 
  
apt-get install libaio1
+
RHEL/CentOS
  
 +
Install the prerequisites:
  
 +
    sudo yum install yum-utils
  
下载解压到 /usr/local/
+
To set up the yum repository, create the file named /etc/yum.repos.d/nginx.repo with the following contents:
  
比较小的配置文件
+
    [nginx-stable]
cat /etc/my.cnf
+
    name=nginx stable repo
[mysql]
+
    baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
default-character-set=utf8
+
    gpgcheck=1
socket=/var/lib/mysql/mysql.sock
+
    enabled=1
 +
    gpgkey=https://nginx.org/keys/nginx_signing.key
 +
    module_hotfixes=true
  
[mysqld]
+
    [nginx-mainline]
skip-name-resolve
+
    name=nginx mainline repo
port = 3306
+
    baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
socket=/var/lib/mysql/mysql.sock
+
    gpgcheck=1
 
+
    enabled=0
basedir=/usr/local/mysql
+
    gpgkey=https://nginx.org/keys/nginx_signing.key
 
+
    module_hotfixes=true
datadir=/usr/local/mysql/data
 
 
 
max_connections=200
 
 
 
character-set-server=utf8
 
 
 
default-storage-engine=INNODB
 
 
 
lower_case_table_name=1
 
max_allowed_packet=16M
 
 
 
cd /usr/local/mysql
 
 
 
 
 
groupadd mysql
 
useradd -r -g mysql -s /bin/false mysql
 
 
 
chown -R mysql:mysql ./
 
 
 
./scripts/mysql_install_db --user=mysql  --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
 
 
 
  chown -R mysql:mysql data
 
chown  777 /etc/my.cnf
 
 
 
cp ./support-files/mysql.server /etc/init.d/mysqld
 
 
 
chmod  +x  /etc/init.d/mysqld
 
 
  chkconfig --add mysqld
 
  mkdir /var/lib/mysql
 
chmod 777 /var/lib/mysql
 
  vim /etc/profile
 
#放最后面
 
export PATH=$PATH:/usr/local/mysql/bin
 
 
 
source  /etc/profile
 
 
 
apt-get install libncurses5-dev libncurses5
 
 
 
/etc/init.d/mysqld status
 
/etc/init.d/mysqld start
 
 
 
 
 
#这个版本首次没密码
 
/usr/local/mysql/bin/mysql  -uroot  -p
 
 
 
 
 
mysql> set password=password("123457");
 
  
 +
By default, the repository for stable nginx packages is used. If you would like to use mainline nginx packages, run the following command:
  
 +
    sudo yum-config-manager --enable nginx-mainline
  
 +
To install nginx, run the following command:
  
 +
    sudo yum install nginx
  
 
</pre>
 
</pre>
  
=trouble=
+
=see also=
<pre>
+
[https://www.runoob.com/w3cnote/nginx-proxy-balancing.html Nginx 反向代理与负载均衡详解]
 
 
mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
 
 
 
apt-get install libaio1
 
  
1. 应该首先去看官方文档,而不是优先看别人的博客。
 
  
 
+
[https://www.centos.bz/2017/08/centos-7-0-install-lamp-apache-php-mariadb/ CentOS 7.0 yum安装配置LAMP服务器(Apache+PHP+MariaDB)]
</pre>
+
[[category:ops]] [[category:nginx]]
 
 
=see also=
 
http://dev.mysql.com/doc/refman/5.5/en/installing.html
 

2020年8月27日 (四) 02:26的版本

base

例如我的安装目录是/usr/local/nginx 
修改配置后重新加载生效 
/usr/local/nginx/sbin/nginx -s reload 
重新打开日志文件 
/usr/local/nginx/sbin/nginx -s reopen 
测试nginx配置文件是否正确 
/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf 
启动nginx 
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 
快速停止nginx 
/usr/local/nginx/sbin/nginx -s stop 
完整有序的停止nginx 
/usr/local/nginx/sbin/nginx -s quit 
注:stop和quit的区别在于 
quit是一个优雅的关闭方式,Nginx在退出前完成已经接受的连接请求 
Stop 是快速关闭,不管有没有正在处理的请求。

其他的停止nginx 方式: 
ps -ef | grep nginx

kill -QUIT 主进程号 :从容停止Nginx 
kill -TERM 主进程号 :快速停止Nginx 
pkill -9 nginx :强制停止Nginx

平滑重启nginx: 
kill -HUP 主进程号

为了方便,现将nginx服务添加至systemctl 
1.修改nginx配置文件,开启pid 
pid /var/run/nginx.pid; 
2.通过上述方式关闭nginx服务 
3.配置服务,在/usr/lib/systemd/system/nginx.service文件,vim编辑如下

vi /usr/lib/systemd/system/nginx.service
[Unit] 
Description=nginx - high performance web server 
After=network.target remote-fs.target nss-lookup.target

[Service] 
Type=forking 
PIDFile=/var/run/nginx.pid 
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf 
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 
ExecReload=/usr/local/nginx/sbin/nginx -s reload 
ExecStop=/usr/local/nginx/sbin/nginx -s stop 
ExecQuit=/usr/local/nginx/sbin/nginx -s quit 
PrivateTmp=true

[Install] 
WantedBy=multi-user.target


[Unit]部分主要是对这个服务的说明,内容包括Description和After,Description用于描述服务,After用于描述服务类别

[Service]部分是服务的关键,是服务的一些具体运行参数的设置,这里Type=forking是后台运行的形式,PIDFile为存放PID的文件路径,ExecStart为服务的具体运行命令,ExecReload为重启命令,ExecStop为停止命令,PrivateTmp=True表示给服务分配独立的临时空间,注意:[Service]部分的启动、重启、停止命令全部要求使用绝对路径,使用相对路径则会报错!

[Install]部分是服务安装的相关设置,可设置为多用户的

服务脚本按照上面编写完成后,以754的权限保存在/usr/lib/systemd/system目录下 
然后执行(修改或新增文件需要执行以下语句才能生效) 
systemctl daemon-reload 
这时就可以利用systemctl进行配置了 
systemctl start/stop/reload/quit nginx.service 
若发生报错,可通过systemctl status nginx.service查看失败原因 
systemctl enable nginx.service 开机自启动

upstream

   upstream read.zhaitua.com {
        server  172.18.140.166:1080 weight=5;
#               server  172.18.140.165:1080 weight=1;
        keepalive       32;
    }   

troubleshooting

原因: 502 GAT away Php-cgi进程挂掉或者是没有cgi进程

504 timeout Nginx请求不到php-cgi进程,超时

解决方法: 思路:

502错误和php-fpm.conf配置文件有关系,网上很多教程都说了,一般就设置以下几个选项

nginx常见问题处理


Nginx 502 Bad Gateway 错误的原因及解决方法

nginx故障及处理


Nginx常见故障 400 502 504

PHP与NGINX 499、502问题处理


Nginx写IO占用高故障处理

complate

./configure --prefix=/data/apps/nginx --user=www --group=www  --error-log-path=/data/logs/nginx/error.log   --http-log-path=/data/logs/nginx/access.log  --pid-path=/data/apps/nginx/nginx\
   .pid --lock-path=/data/apps/nginx/nginx.lock      --with-http_stub_status_module  --with-pcre=/root/rpmbuild/SOURCES/pcre-8.21 --with-zlib=/root/rpmbuild/SOURCES/zlib-1.2.3 --with-openss\
   l=/root/rpmbuild/SOURCES/openssl-1.0.1p  --without-poll_module    --with-http_ssl_module  --with-http_gzip_static_module  --without-poll_module  --without-http_ssi_module --without-http_\
   userid_module --without-http_geo_module --without-http_memcached_module --without-http_map_module --with-http_realip_module   --without-mail_pop3_module  --without-select_module  --witho\
   ut-mail_imap_module --without-mail_smtp_module  --without-http_scgi_module  --with-cc-opt='-O3' --with-ipv6;

Building nginx from Sources

admin-guide

Nginx优化

yum install



RHEL/CentOS

Install the prerequisites:

    sudo yum install yum-utils

To set up the yum repository, create the file named /etc/yum.repos.d/nginx.repo with the following contents:

    [nginx-stable]
    name=nginx stable repo
    baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true

    [nginx-mainline]
    name=nginx mainline repo
    baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true

By default, the repository for stable nginx packages is used. If you would like to use mainline nginx packages, run the following command:

    sudo yum-config-manager --enable nginx-mainline

To install nginx, run the following command:

    sudo yum install nginx

see also

Nginx 反向代理与负载均衡详解


CentOS 7.0 yum安装配置LAMP服务器(Apache+PHP+MariaDB)