1.安装nginx安装依赖yum-yinstallgccgcc-c++wgetautomakeautoconflibtoollibxml2-devellibxslt-develperl-develperl-ExtUtils-Embedpcre-dev...
1.安装nginx
安装依赖
yum -y install gcc gcc-c++ wget automake autoconf libtool libxml2-devel libxslt-devel perl-devel perl-ExtUtils-Embed pcre-devel openssl openssl-devel
创建一个不能登录的nginx运行用户
groupadd www-data
useradd -s /sbin/nologin -g www-data www-data
创建源码保存目录和运行时的临时文件夹,下载nginx源码,当前稳定版为nginx-1.14.2
mkdir -p /var/cache/nginx
mkdir -p /usr/local/src/nginx
cd /usr/local/src/nginx
wget -c http://nginx.org/download/nginx-1.14.2.tar.gz
解压
tar -zxvf nginx-1.14.2.tar.gz
cd /usr/local/src/nginx/nginx-1.14.2
编译前配置检查
./configure \
--prefix=/usr/local/nginx \
--sbin-path=/usr/local/nginx/sbin/nginx \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--http-client-body-temp-path=/var/cache/nginx/client_temp \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
--user=www-data \
--group=www-data \
--with-pcre \
--with-http_v2_module \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_stub_status_module \
--with-http_auth_request_module \
--with-mail \
--with-mail_ssl_module \
--with-file-aio \
--with-http_v2_module \
--with-threads \
--with-stream \
--with-stream_ssl_module
配置检查完毕,已经创建了Makefile
creating objs/Makefile
Configuration summary
+ using threads
+ using system PCRE library
+ using system OpenSSL library
+ using system zlib library
nginx path prefix: "/usr/local/nginx"
nginx binary file: "/usr/local/nginx/sbin/nginx"
nginx modules path: "/usr/local/nginx/modules"
nginx configuration prefix: "/usr/local/nginx/conf"
nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
nginx pid file: "/var/run/nginx.pid"
nginx error log file: "/var/log/nginx/error.log"
nginx http access log file: "/var/log/nginx/access.log"
nginx http client request body temporary files: "/var/cache/nginx/client_temp"
nginx http proxy temporary files: "/var/cache/nginx/proxy_temp"
nginx http fastcgi temporary files: "/var/cache/nginx/fastcgi_temp"
nginx http uwsgi temporary files: "/var/cache/nginx/uwsgi_temp"
nginx http scgi temporary files: "/var/cache/nginx/scgi_temp"
编译,安装
make
make install
修改配置
nginx详细配置请移步(nginx的configure参数,配置文件,虚拟主机配置,信号控制)
vim /usr/local/nginx/conf/nginx.conf
user www-data;
pid /var/run/nginx.pid;
启动nginx
/usr/local/nginx/sbin/nginx
查看进程
ps aux|grep nginx
杀掉进程
pkill -9 nginx
配置服务
vim /usr/lib/systemd/system/nginx.service
输入如下配置
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
ExecStartPost=/bin/sleep 0.1
[Install]
WantedBy=multi-user.target
注意:如果你是单核服务器,需要加ExecStartPost=/bin/sleep 0.1
否则在执行systemctl start nginx之后,在执行systemctl status nginx时
会出现systemd[1]: Failed to read PID from file /var/run/nginx.pid: Invalid argument
这是因为nginx还未启动完成,systemctl就去寻找pid进程文件了,这是一个已知的bug
地址https://bugs.launchpad.net/ubuntu/+source/nginx/+bug/1581864
重新载入 systemd
systemctl daemon-reload
开启开机启动
systemctl enable nginx.service
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
启动和查看nginx状态
systemctl start nginx
systemctl status nginx
● nginx.service - nginx - high performance web server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since 五 2019-01-04 18:24:18 CST; 9min ago
Docs: http://nginx.org/en/docs/
Process: 75573 ExecStop=/bin/kill -s TERM $MAINPID (code=exited, status=0/SUCCESS)
Process: 75576 ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf (code=exited, status=0/SUCCESS)
Main PID: 75577 (nginx)
CGroup: /system.slice/nginx.service
├─75577 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
└─75578 nginx: worker process
1月 04 18:24:18 jmsiteos7 systemd[1]: Stopping nginx - high performance web server...
1月 04 18:24:18 jmsiteos7 systemd[1]: Stopped nginx - high performance web server.
1月 04 18:24:18 jmsiteos7 systemd[1]: Starting nginx - high performance web server...
1月 04 18:24:18 jmsiteos7 systemd[1]: Started nginx - high performance web server.
2.安装mysql
注:MySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具。因此,我们首先要在系统中源码编译安装cmake工具。
安装依赖
yum install -y cmake gcc-c++ bison bison-devel ncurses-devel perl-Data-Dumper boost boost-doc boost-devel
创建mysql用户和用户组
groupadd mysql
useradd -g mysql mysql
创建源码存放目录,下载,解压
mkdir -p /usr/local/src/mysql
cd /usr/local/src/mysql
wget -c https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.20.tar.gz
tar -zxvf mysql-boost-5.7.20.tar.gz
cd mysql-5.7.20
创建相应目录并授权
mkdir -p /usr/local/mysql/data
chown -R mysql:mysql /usr/local/mysql/
touch /var/log/mysql.log
chown -R mysql:mysql /var/log/mysql.log
mkdir -p /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql
mkdir -p /var/run/mysqld
chown -R mysql:mysql /var/run/mysqld
配置检查
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DMYSQL_USER=mysql \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_unicode_ci \
-DWITH_DEBUG=0 \
-DMYSQL_MAINTAINER_MODE=0 \
-DWITH_SYSTEMD=1 \
-DWITH_BOOST=boost \
-DWITH_SSL:STRING=bundled \
-DWITH_ZLIB:STRING=bundled
编译,安装
make
make install
修改mysql配置
vim /etc/my.cnf
如下设置
[mysql]
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysqld]
init-connect = 'SET NAMES utf8'
character-set-server = utf8
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/var/lib/mysql/mysql.sock
user = mysql
explicit_defaults_for_timestamp=true
bind-address = 0.0.0.0
server-id = 1
log_error=/var/log/mysql.log
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
加入环境变量
vim /etc/profile
尾部加入下面两行
PATH=$PATH:/usr/local/mysql/bin/
export PATH
执行source使环境变量立即生效
source /etc/profile
初始化数据库,安装密钥
mysqld --defaults-file=/etc/my.cnf --initialize-insecure --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
mysql_ssl_rsa_setup
--initialize-insecure不生成随机密码
--initialize生成随机密码
设置开机启动
cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system
重新载入 systemd
systemctl daemon-reload
开机启动
systemctl enable mysqld.service
systemctl start mysqld.service
[root@jmsiteos7 mysql-5.7.20]# systemctl status mysqld.service
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since 五 2019-01-04 15:36:52 CST; 3s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 30737 ExecStart=/usr/local/mysql/bin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
Process: 30719 ExecStartPre=/usr/local/mysql/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 30740 (mysqld)
CGroup: /system.slice/mysqld.service
└─30740 /usr/local/mysql/bin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
1月 04 15:36:51 jmsiteos7 systemd[1]: Starting MySQL Server...
1月 04 15:36:52 jmsiteos7 systemd[1]: Started MySQL Server.
设置密码(如果初始化参数是--initialize,这步跳过)
mysql_secure_installation
登录mysql
[root@jmsiteos7 ~]# mysql -uroot -p
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.20 Source distribution
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
mysql> set password for root@localhost = password('yourpassword');
mysql> flush privileges;
mysql> quit;
Bye
3.安装php
安装依赖
yum install libxml2 libxml2-devel curl-devel openjpeg openjpeg-devel openjpeg-libs libjpeg libjpeg-devel libpng freetype libpng-devel freetype-devel openssl openssl-devel
创建源码保存目录,下载,解压
mkdir -p /usr/local/src/php72
cd /usr/local/src/php72
wget -c http://cn2.php.net/get/php-7.2.13.tar.gz
tar -xzvf php-7.2.13.tar.gz
cd php-7.2.13
配置检查
./configure --prefix=/usr/local/php72 \
--with-config-file-path=/usr/local/php72/etc \
--with-config-file-scan-dir=/usr/local/php72/etc/php.d \
--with-mhash \
--disable-debug \
--disable-rpath \
--enable-mysqlnd \
--with-mysqli \
--with-pdo-mysql \
--enable-fpm \
--with-fpm-user=www-data \
--with-fpm-group=www-data \
--with-gd \
--with-iconv \
--with-zlib \
--enable-bcmath \
--enable-xml \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--enable-mbregex \
--enable-mbstring \
--enable-ftp \
--with-openssl \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--without-pear \
--with-gettext \
--enable-session \
--with-curl \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir
编译,安装
make -j4
make install
设置环境变量
vim /etc/profile
文件末尾加入如下两行代码
PATH=$PATH:/usr/local/php72/bin/:/usr/local/php72/sbin/
export PATH
使之立即生效
source /etc/profile
测试一下
[root@jmsiteos7 php-7.2.13]# php -v
PHP 7.2.13 (cli) (built: Jan 4 2019 17:35:17) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
设置php.ini和php-fpm.conf,www.conf
进入源码目录
cd /usr/local/src/php72/php-7.2.13
复制示例配置
cp php.ini-development /usr/local/php72/etc/php.ini
#或
cp php.ini-production /usr/local/php72/etc/php.ini
进入php.ini目录
cd /usr/local/php72/etc
打开配置文件
vim /usr/local/php72/etc/php.ini
更改pdo_mysql.default_socket为上面安装mysql时.sock设定的位置
pdo_mysql.default_socket = /var/lib/mysql/mysql.sock
如果不设置,php通过pdo连接mysql时会报SQLSTATE[HY000] [2002] No such file or directory
复制fpm示例配置
cp php-fpm.conf.default php-fpm.conf
进入php-fpm.d目录
cd /usr/local/php72/etc/php-fpm.d
复制www.conf
cp www.conf.default www.conf
设置php-fpm开机启动
cp /usr/local/src/php72/php-7.2.13/sapi/fpm/php-fpm.service /usr/lib/systemd/system/
重新载入 systemd
systemctl daemon-reload
启用开机启动
systemctl enable php-fpm
Created symlink from /etc/systemd/system/multi-user.target.wants/php-fpm.service to /usr/lib/systemd/system/php-fpm.service.
启动php-fpm
systemctl start php-fpm
查看状态
[root@jmsiteos7 php-fpm.d]# systemctl status php-fpm
● php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
Active: active (running) since 五 2019-01-04 17:55:16 CST; 5s ago
Main PID: 70669 (php-fpm)
CGroup: /system.slice/php-fpm.service
├─70669 php-fpm: master process (/usr/local/php72/etc/php-fpm.conf)
├─70670 php-fpm: pool www
└─70671 php-fpm: pool www
1月 04 17:55:16 jmsiteos7 systemd[1]: Started The PHP FastCGI Process Manager.
4.验证安装的nginx,php,mysql
编辑nginx配置文件
vim /usr/local/nginx/conf/nginx.conf
#更改运行用户
user www-data;
#编辑server段,默认文件添加index.php
location / {
root html;
index index.php index.html index.htm;
}
#匹配php的配置块取消注释并更改/scripts为$document_root
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_params;
}
保存并退出,重启nginx
systemctl restart nginx
nginx默认的web目录下新建index.php
vim /usr/local/nginx/html/index.php
输入如下php代码
<?php
$dbms='mysql'; //数据库类型
$host='localhost'; //数据库主机名
$dbName='mysql'; //使用的数据库
$user='root'; //数据库连接用户名
$pass=''; //对应的密码
$dsn="$dbms:host=$host;dbname=$dbName";
try {
$dbh = new PDO($dsn, $user, $pass); //初始化一个PDO对象
echo "连接成功<br/>";
foreach ($dbh->query('SELECT db from db') as $row) {
print_r($row);
}
$dbh = null;
} catch (PDOException $e) {
die ("Error!: " . $e->getMessage() . "<br/>");
}
?>
浏览器访问你的站点
全文详见:http://xpxw.com/?id=142