注:网站系统为CentOS 7,使用systemd。
一、准备工作:
1、升级系统
yum update -y
2、清理原有安装
yum remove phpmariadb nginxhttp -y
二、服务器LNMP编译安装
1、安装编译工具
yum install gcc cmake gcc-c++ -y
2、安装Nginx
安装依赖
yum install pcre-devel zlib-devel -y
mkdir -p /data/source
cd /data/source
wget https://www.openssl.org/source/openssl-1.0.2l.tar.gz
tar xvf openssl-1.0.2l.tar.gz -C /data/lnmp/
cd /data/lnmp/openssl-1.0.2l
./config --prefix=/data/lnmp/lib --openssldir=/data/lnmp/lib/openssl
make -j5
make install
建立组和用户并设置不能ssh登录
groupadd -r www
useradd -r -M -s /sbin/nologin -g www www
sed -i "s/\/home\/www://" /etc/passwd
下载
tar xvf nginx-1.13.2.tar.gz
编译
cd nginx-1.13.2
./configure --prefix=/data/lnmp/nginx --user=www --group=www --pid-path=/run/nginx.pid --lock-path=/run/nginx.lock --http-client-body-temp-path=/tmp/client --http-proxy-temp-path=/tmp/proxy --http-fastcgi-temp-path=/tmp/fastcgi --http-uwsgi-temp-path=/tmp/uwsgi --http-scgi-temp-path=/tmp/scgi --http-log-path=/data/lnmp/log/nginx/access.log --error-log-path=/data/lnmp/log/nginx/error.log --with-http_ssl_module --with-http_v2_module --with-stream_realip_module --with-openssl=/data/lnmp/openssl-1.0.2l
make -j5
make install
配置启动
mkdir /usr/lib/systemd/system
cat > /usr/lib/systemd/system/nginx.service << "EOF"
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/data/lnmp/nginx/sbin/nginx -t -c /data/lnmp/nginx/conf/nginx.conf
ExecStart=/data/lnmp/nginx/sbin/nginx -c /data/lnmp/nginx/conf/nginx.conf
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/bin/kill -QUIT $MAINPID
[Install]
WantedBy=multi-user.target
EOF
sed -i "s/\/\$nginx_version//" /data/lnmp/nginx/conf/fastcgi*
sed -i "s/}/ application\/vnd.android.package-archive apk;\n}/g" /data/lnmp/nginx/conf/mime.types
mv /data/lnmp/nginx/conf/nginx.conf /data/lnmp/nginx/conf/nginx.conf.bak
mkdir /data/lnmp/nginx/conf/conf.d
cat > /data/lnmp/nginx/conf/nginx.conf << "EOF"
user www;
worker_processes 4;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
charset utf-8;
sendfile on;
client_max_body_size 40m;
server_tokens off;
keepalive_timeout 65;
gzip on;
include conf.d/*.conf;
}
EOF
cat > /data/lnmp/nginx/conf/conf.d/www.conf << "EOF"
server {
listen 80;
server_name localhost;
root /data/www;
index index.html index.htm index.php;
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
try_files $uri = 404;
fastcgi_pass 127.0.0.1:9000;
include fastcgi.conf;
}
}
EOF
mkdir /data/www
ln -s /data/lnmp/nginx/sbin/nginx /usr/sbin/
打开防火墙
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --reload
3、安装PHP
安装依赖
yum install libxml2-devel systemd-devel gd-devel libcurl-devel -y
下载
tar xvf php-7.1.7.tar.xz
编译
cd php-7.1.7
./configure --prefix=/data/lnmp/php --enable-fpm --with-fpm-systemd --with-fpm-user=www --with-fpm-group=www --with-config-file-path=/data/lnmp/php --with-config-file-scan-dir=/data/lnmp/php/lib/php/extensions --without-sqlite3 --enable-opcache --disable-ipv6 --enable-mbstring --with-gettext --with-curl --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --without-pdo-sqlite --disable-phpdbg --with-gd --with-freetype-dir --with-png-dir --with-xpm-dir --with-jpeg-dir --enable-gd-native-ttf --with-zlib --enable-exif --enable-zip --enable-soap --with-openssl=/data/lnmp/lib
make -j5
make install
make时出现:
PEAR package PHP_Archive not installed: generated phar will require PHP's phar extension be enabled.
make install之后,运行以下命令,再次
make && make install
就可以了
/data/lnmp/php/bin/pear install channel://pear.php.net/PHP_Archive-0.12.0
ln -s /data/lnmp/php/bin//usr/bin
ln -s /data/lnmp/php/sbin/ /usr/sbin
cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/
sed -i "s/\${prefix}/\/data\/lnmp\/php/" /usr/lib/systemd/system/php-fpm.service
sed -i "s/\${exec_prefix}/\/data\/lnmp\/php/" /usr/lib/systemd/system/php-fpm.service
sed -i "s/\/data\/php\/var\/run/\/run/" /usr/lib/systemd/system/php-fpm.service
cp sapi/fpm/www.conf /data/lnmp/php/etc/php-fpm.d/
cp sapi/fpm/php-fpm.conf /data/lnmp/php/etc/
echo "zend_extension=/data/lnmp/php/lib/php/extensions/no-debug-non-zts-20160303/opcache.so" > /data/lnmp/php/lib/php/extensions/opcache.ini
cp php.ini-production /data/lnmp/php/php.ini
sed -i "s/;opcache.enable=0/opcache.enable=1/" /data/lnmp/php/php.ini
sed -i "s/;opcache.enable_cli=0/opcache.enable_cli=1/" /data/lnmp/php/php.ini
sed -i "s/max_execution_time = 30/max_execution_time = 60/" /data/lnmp/php/php.ini
sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 20M/" /data/lnmp/php/php.ini
sed -i "s/post_max_size = 8M/post_max_size = 20M/" /data/lnmp/php/php.ini
sed -i "s/display_errors = Off/display_errors = On/" /data/lnmp/php/php.ini
sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /data/lnmp/php/php.ini
sed -i "s/;date.timezone =/date.timezone = Asia\/Shanghai/" /data/lnmp/php/php.ini
sed -i "s/expose_php = On/expose_php = Off/" /data/lnmp/php/php.ini
sed -i "s/;error_log = log\/php-fpm.log/error_log = \/data\/lnmp\/log\/php\/php-fpm.log/" /data/lnmp/php/etc/php-fpm.conf
sed -i "s/;slowlog = log\/\$pool.log.slow/slowlog = \/data\/lnmp\/log\/php\/slow.log/g" /data/lnmp/php/etc/php-fpm.conf
sed -i "s/;request_slowlog_timeout = 0/request_slowlog_timeout = 300/g" /data/lnmp/php/etc/php-fpm.conf
mkdir /data/lnmp/log/php
4、安装MariaDB/Mysql数据库
创建mysql用户
groupadd -r mysql
useradd -r -M -s /sbin/nologin -g mysql mysql
sed -i "s/\/home\/mysql://" /etc/passwd
安装依赖
yum install ncurses-devel bison gnutls-devel -y
下载
tar xvf mariadb-10.2.6.tar.gz
编译
cd mariadb-10.2.6
cmake . \
-DCMAKE_INSTALL_PREFIX=/data/lnmp/mariadb \
-DMYSQL_DATADIR=/data/lnmp/mariadb/data \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_SYSTEMD=auto \
-DINSTALL_SYSTEMD_UNITDIR=/usr/lib/systemd/system \
-DDISABLE_SHARED=OFF \
-DPLUGIN_MROONGA=NO \
-DPLUGIN_FEDERATED=NO \
-DPLUGIN_FEDERATEDX=NO \
-DPLUGIN_OQGRAPH=NO \
-DPLUGIN_AUTH_PAM=NO \
-DPLUGIN_SEQUENCE=NO \
-DPLUGIN_SPIDER=NO \
-DWITH_WSREP=NO \
-DPLUGIN_FTEXAMPLE=NO \
-DPLUGIN_DAEMON_EXAMPLE=NO \
-DPLUGIN_EXAMPLE=NO \
-DPLUGIN_EXAMPLE_KEY_MANAGEMENT=NO \
-DPLUGIN_CONNECT=NO \
-DCONNECT_WITH_ODBC=OFF \
-DCONNECT_WITH_MYSQL=1 \
-DCONNECT_WITH_LIBXML2=NO \
-DWITH_DEBUG=NO \
-DWITH_EMBEDDED_SERVER=OFF \
-DWITH_PROFILING=OFF \
-DWITH_UNIT_TESTS=OFF \
-DPLUGIN_TOKUDB=NO
make -j5
make install
ln -s /data/lnmp/mariadb/bin//usr/bin
chown mysql:mysql /data/lnmp/mariadb/data -R
cp support-files/my-huge.cnf /data/lnmp/mariadb/my.cnf
sed -i "s/ExecStart=\/usr\/sbin\/mysqld/ExecStart=\/data\/lnmp\/mariadb\/bin\/mysqld/" usr/lib/systemd/system/mariadb.service
sed -i "s/\$MYSQLD_OPTS \$_WSREP_NEW_CLUSTER \$_WSREP_START_POSITION/--defaults-file=\/data\/lnmp\/mariadb\/my.cnf/" /usr/lib/systemd/system/mariadb.service
/data/lnmp/mariadb/scripts/mysql_install_db --user=mysql --defaults-file=/data/lnmp/mariadb/my.cnf --datadir=/data/lnmp/mariadb/data/
systemctl start mariadb
/data/lnmp/mariadb/bin/mysqladmin -u root password 'password'
rm -rf /data/lnmp/mariadb/bin/mysql_client_test
rm -rf /data/lnmp/mariadb/mysql-test
rm -rf /data/lnmp/mariadb/data/test
rm -rf /data/lnmp/mariadb/sql-bench
更新或重新编译后:
sed -i "s/ExecStart=\/usr\/sbin\/mysqld/ExecStart=\/data\/lnmp\/mariadb\/bin\/mysqld/" /usr/lib/systemd/system/mariadb.service
sed -i "s/\$MYSQLD_OPTS \$_WSREP_NEW_CLUSTER \$_WSREP_START_POSITION/--defaults-file=\/data\/lnmp\/mariadb\/my.cnf/" /usr/lib/systemd/system/mariadb.service
rm -rf /data/lnmp/mariadb/bin/mysql_client_test*
rm -rf /data/lnmp/mariadb/mysql-test
rm -rf /data/lnmp/mariadb/data/test
rm -rf /data/lnmp/mariadb/sql-bench
systemctl daemon-reload
systemctl restart mariadb
5、完成!