手动配置LNMP

1、前言

首先,得批评下自己。在Mac系统下,捣鼓了一个礼拜左右的服务器配置代理,然后某个时刻恍然大悟(应该是幡然醒悟):除了我这样,貌似没有谁那么傻会用Mac当服务器吧。。。那写Mac下Nginx没什么用了。不过Unix和linux相似点很多,如果只是想要粗浅学习nginx的配置之类的,也可以在MacOS系统进行。但是如果想要了解更多服务器,想要的不仅仅是写写demo之类的粗浅工作的话,或者说以后想要在阿里云啊腾讯云啊之类的买服务器(它总不会给你配个Mac系统吧),虽说命令相似,但是还是建议还是在Linux系统进行吧,早点熟悉熟悉也好~

云服务器: 腾讯云(找考研小伙伴认证了学生账号)
系统:
    系统: CentOS 7.2 64位
    服务器: Nginx 1.11.12 ([官网](http://nginx.org/en/download.html))

二、Nginx

1、手动下载安装nginx,非yum安装

######0. 这里是我的个性化设置
mkdir /usr/local/downloads      ##新建个文件夹,以后用来放下载的东西
ln -s /usr/local/donwloads /    ##在root目录下加个快捷方式
cd /downloads                   ##进入到这个文件夹

######1. 下载nginx安装包
wget http://nginx.org/download/nginx-1.11.11.tar.gz

######2. 解压安装包
tar -zxv -f nginx-1.11.11.tar.gz

######3. 重命名文件夹
mv nginx-1.11.11.tar.gz nginx

######4. 配置configure的初始目录
cd nginx        ##先进入到nginx安装包中
./configure --prefix=/usr/local/nginx      ##prefix前置目录不能是安装包所在的目录,否则会出错
## 执行命令后,系统开始检查安装所需的依赖文件,会出现不少ERROR,具体见本节Tips

######5. 编译安装nginx
make                   ##编译
make install           ##安装

######6. 检查是否安装成功
cd /usr/local          ##在local里面看到了nginx文件夹
cd nginx               ##进入到nginx文件夹看到有conf html logs sbin 文件夹
#访问 http://localhost/ 可以看到Welcome to nginx!说明安装成功

######0. 个性化设置
###安装完成,还是习惯性的加了些我的个人设置
ln -s /usr/local/nginx/sbin/nginx /usr/local/bin   ##在bin里面添加nginx命令,这样就不需要每次启动都要通过/usr/local/nginx/sbin/nginx来启动

Tips

################ Tip 1##################
####### 当系统检查依赖文件时,会出现一大堆的found和少数not found
####### 这是因为大部分的依赖包,Linux系统中都有,如g++,gcc等
####### 也有小部分依赖包是需要我们自己去安装的,如PCRE、openssl,zlib等(当然也可以安装,这些主要是扩展modelue所需的)
####### 所以根据系统错误提示,我们去下所需的依赖包
#Error 1:
"./configure: error: the HTTP rewrite module requires the PCRE library."
#缺少PCRE依赖包,这个包主要用来HTTP rewrite
yum search pcre               ##找到要下载的pcre-devel
yum install pcre-devel        

#Error 2:
"./configure: error: the HTTP gzip module requires the zlib library."
#缺少zlib包,主要用来HTTP 打包压缩解压等功能
yum search zlib               ##找到要下载的zlib-devel
yum install zlib-devel

#Error 3:
# 可能还有个openssl的错误,不过我没遇到
yum search openssl            ##找到要下载的openssl
yum install openssl-devel


################ Tip 2##################
##### 有个小技巧,在安装之前可以提前安装完所有的依赖包 ######
yum -y groupinstall "Development tools,Server platform development,Desktop platform development"
yum -y install pcre-devel openssl-devel

2、nginx所有文件目录位置

###1、安装包文件所在:/usr/local/downloads/nginx
    ###新增模块,编译都要通过./configure进行

###2、主要文件夹: 
/usr/local/nginx
            |
            |+conf  #配置文件夹
                - nginx.conf        # nginx的主要配置文件,主要配置
                ## 动态服务器配置文件
                - fastcgi.conf      # FastCGI配置文件,主要负责nginx与php数据传递(作用见Tip1)
                - fastcgi_params    # FastCGI的主要配置文件(和fastcgi.conf区别见Tip2)
                - uwsgi_params      # 类似FastCGI,用来部署python服务器的配置文件
                - scgi_params       # scgi 的配置文件,类似FastCGI。
                ## 文件类型映射表
                - mime.types        # mime.types是文件类型的设置配置文件。
                ## 编码转换映射文件,主要是输出内容转码
                - win-utf           # windows-1251  <--> utf-8
                - koi-utf           # koi8-r  <--> utf-8
                - koi-win           # koi8-r  <--> windows-1251
            |+html  #网页根目录文件夹
                -50x.html           #50x错误页面
                -index.html         #主页
            |-logs  #日志文件夹
                - error.log         #错误日志
                - access.log        #登录日志
                - nginx.pid         #nginx的pid
            |-sbin  #命令文件夹
                - nginx             #启动命令
            |+client_body_temp      #  \
            |+proxy_temp            # --\  各类临时
            |+scgi_temp             # --/  文件
            |+uwsgi_temp            #  /

3、nginx的基础命令

### 0、查看nginx主进程号
ps -aux | grep nginx

### 1、启动nginx前,先测试配置文件是否正确    
nginx -t                   #### 默认测试 /usr/local/nginx/nginx.conf 配置文件;  
nginx -t -c **/nginx.conf  #### 测试你想要的nginx配置文件;  

### 2、启动nginx   
nginx 
./usr/local/bin/nginx

### 3、停止nginx (一般通过-s 发送信号的方式)  
nginx -s stop/quit  #### (*推荐*)
###### 知道了主进程号后,可以通过杀进程方式停止nginx
kill -QUIT pid      #### 从容停止
kill -TERM pid      #### 快速停止
kill -9 pid         #### 前置停止

### 4、重启nginx, 修改.conf 配置文件后需要重启     
nginx -s reload
kill -HUP pid/path    #### 通过nginx的进程号平滑重启

### 5、制定配置文件 -c      
nginx -c /usr/local/nginx/nginx.conf

### 6、查看nginx版本
nginx -v          ####版本号
nginx -V          ####详细版本信息

4、nginx的基础配置(与Mac配置基本一致)

5、nginx新增模块

  • 1、查看nginx的版本信息和模块信息
    nginx -V
    显示信息:
nginx version: nginx/1.11.12
built by gcc 4.8.5 (Red Hat 4.8.5-11)(GCC)
configure arguments: --prefix=/usr/local/nginx
  • 2、查看nginx的可用模块
    进入到安装文件夹(/usr/local/downloads/nginx)
    ./configure --help
    显示一堆with-http.....之类的,这些都是可以安装的模块

  • 3、输入要安装模块
    ./configure --prefix=/usr/local/nginx --with... #想要加什么模块,在后面加什么
    如:
    ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module

  • 4、新增模块
    make
    make install

  • 5、检查新增是否成功
    nginx -V #如果后面的configure arguments有了你要的参数,则添加成功

6、开机自启动

  • 首先需要编写开机启动的shell脚本
    vim /etc/init.d/nginx
    脚本如下:
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemin
#
# chkconfig:   - 85 15
# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
#               proxy and IMAP/POP3 proxy server
# processname: nginx
# config:      /usr/local/nginx/conf/nginx.conf
# pidfile:     /usr/local/nginx/logs/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "NETWORKING" = "no" ] && exit 0
nginx="/usr/sbin/nginx"
prog=(basename nginx)
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
lockfile=/var/lock/subsys/nginx
start() {
   [ -x nginx ] || exit 5
   [ -f NGINX_CONF_FILE ] || exit 6
   echo -n "Starting prog: "
   daemon nginx -c NGINX_CONF_FILE
   retval=?
   echo
   [ retval -eq 0 ] && touch lockfile
   return retval
}
stop() {
   echo -n "Stopping prog: "
   killproc prog -QUIT
   retval=?
   echo
   [ retval -eq 0 ] && rm -f lockfile
   return retval
}
restart() {
   configtest || return ?
   stop
   start
}
reload() {
   configtest || return ?
   echo -n "Reloading prog: "
   killproc nginx -HUP
   RETVAL=?
   echo
}
force_reload() {
   restart
}
configtest() {
 nginx -t -c NGINX_CONF_FILE
}
rh_status() {
   status prog
}
rh_status_q() {
   rh_status >/dev/null 2>&1
}
case "1" in
   start)
       rh_status_q && exit 0
       1
       ;;
   stop)
       rh_status_q || exit 0
       1
       ;;
   restart|configtest)
       1
       ;;
   reload)
       rh_status_q || exit 7
       1
       ;;
   force-reload)
       force_reload
       ;;
   status)
       rh_status
       ;;
   condrestart|try-restart)
       rh_status_q || exit 0
           ;;
   *)
       echo "Usage: 0 {start|stop|status|restart|condrestart|try-restart|reload|force-
reload|configtest}"
       exit 2
esac
  • 修改文件权限
    chmod a+x /etc/init.d/nginx

  • 修改开机自启动
    chkconfig --add nginx #添加到服务列表
    chkconfig nginx on #设置开机自启动

三、MySQL

1.下载安装MySQL

下载地址:MySQL官网下载界面Community Server

注意别下载错了。。。是Community Server里的源码

下载安装包:
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.17.tar.gz

解压安装包并重命名
tar -zxvf mysql-boost-5.7.17.tar.gz


查看是否已经有my.cnf 配置文件
locate my.cnf
mv my.cnf my.cnf.backup

创建文件安装目录
mkdir /usr/local/mysql
mkdir /usr/local/mysql/data

建立组和用户
groupadd mysql
useradd -r -g mysql -s /bin/false mysql

编译
cd /root/downloads/mysql-5.7.17
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DENABLED_LOCAL_INFILE=1 -DWITH_BOOST=boost
#如果编译出错,发生cmake error,那就看看错误信息,缺少哪个依赖就yum install哪个

安装
make & make install


坑1:

#如果make的时候,到40%多可能会报下面的错:
c++: 编译器内部错误:已杀死(程序 cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://bugzilla.redhat.com/bugzilla> for instructions.
make[2]: *** [sql/CMakeFiles/sql.dir/item_geofunc.cc.o] 错误 4
make[1]: *** [sql/CMakeFiles/sql.dir/all] 错误 2
make: *** [all] 错误 2

#[原因是:http://blog.csdn.net/cryhelyxx/article/details/47610247]
#原因是内存空间不够,具体解决措施是:

dd if=/dev/zero of=/swapfile bs=1k count=2048000 #获取要增加的2G的SWAP文件块
mkswap /swapfile     #创建SWAP文件
swapon /swapfile     #激活SWAP文件
swapon -s            #查看SWAP信息是否正确
echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab     #添加到fstab文件中让系统引导时自动启动
#注意, swapfile文件的路径在/var/下 

#编译完后, 如果不想要交换分区了, 可以删除:
swapoff /swapfile
rm -fr /swapfile

2

设置目录权限
cd /usr/local/mysql
chown -R root:mysql .   #把当前目录中所有文件的所有者所有者设为root,所属组为mysql
chown -R mysql:mysql data

复制配置文件
cp support-files//my-default.cnf /etc/my.cnf

初始化mysql,开启ssl
bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
bin/mysql_ssl_rsa_setup  --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

设置开机自启动
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
chkconfig --add mysql
chkconfig mysql on

修改配置文件
vim /etc/my.cnf
>>>
[mysqld]
datadir=/usr/local/mysql/data
default-storage-engine=MyISAM

log-error = /usr/local/mysql/mysql_error.log
pid-file = /usr/local/mysql/mysql.pid
user = mysql
tmpdir = /tmp
<<<

四、PHP

1.下载PHP5.6

下载方法有各种,我是通过官网下载到Mac然后上传到服务器的,因为这样速度快点

2.编译安装PHP

# 编译配置:来源于网上[http://blog.csdn.net/zhang_xinxiu/article/details/51817653]
./configure \
--prefix=/usr/local/php56 \
--with-config-file-path=/usr/local/php56/etc \
--enable-inline-optimization \
--disable-debug \
--disable-rpath \
--enable-shared \
--enable-opcache \
--enable-fpm \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-gettext \
--enable-mbstring \
--with-iconv \
--with-mcrypt \
--with-mhash \
--with-openssl \
--enable-bcmath \
--enable-soap \
--with-libxml-dir \
--enable-pcntl \
--enable-shmop \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-sockets \
--with-curl \
--with-zlib \
--enable-zip \
--with-bz2 \
--with-readline

# 安装目录
--prefix
# 配置文件php.ini位置
--with-config-file-path
# 优化选项
--enable-inline-optimization
--disable-debug
--disable-rpath
--enable-shared
# 启用opcache
--enable-opcache
# 配置php-fpm
--enable-fpm
--with-fpm-user
--with-fpm-group
# 配置MySQL
--with-mysql
--with-mysqli
--with-pdo-mysql
# 国际化与字符编码支持
--with-gettext
--enable-mbstring
--with-iconv
# 加密
--with-mcrypt
--with-mhash
--with-openssl
# 数学扩展
--enable-bcmath
#  Web 服务,soap 依赖 libxml
--enable-soap
--with-libxml-dir
# 进程,信号及内存
--enable-pcntl
--enable-shmop
--enable-sysvmsg
--enable-sysvsem
--enable-sysvshm
# socket & curl
--enable-sockets
--with-curl
# 压缩与归档
--with-zlib
--enable-zip
--with-bz2
# GNU Readline 命令行快捷键绑定
--with-readline

# 一般需要提示你缺了啥依赖包,需要安装
# 反正报啥错就增加啥

添加依赖包
yum install libxml2-devel bzip2-devel libcurl-devel libmcrypt-devel readline-devel

编译安装
make && make install

3.新增配置文件

配置文件夹路径: /usr/local/php56/etc

复制配置文件

1.php配置文件php.ini
cp php.ini-development /usr/local/php56/etc/php.ini 
# 这里有一点需要提示大家,安装包内的php.ini配置文件有两个:
## 1.php.ini-production 安全性较高,一般用于生产
## 2.php.ini-development 一般用于开发
# 因为第二个比第一个显示的错误信息更多会暴露用户一些信息,
# 所以一般产品要正式使用的话建议用production,要用哪个就复制哪个为php.ini

2.php-fpm配置文件php-fpm.conf
cd /usr/local/php56/etc
cp php-fpm.conf.default php-fpm.conf

3.复制启动脚本
cd /downloads/php-5.6.30/sapi/fpm
cp init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm

4.把php可执行的命令添加到profile中
echo "PATH=PATH:/usr/local/php56/bin:/usr/local/php56/sbin" >> /etc/profile
source /etc/profile 
# 这样就可以直接执行 'php-fpm' 了.

5.设置php-fpm开机自启动
chkconfig --add php-fpm
chkconfig php-fpm on

到此为止一共做了三件事:
1.创建php的配置文件 
2.创建php-fpm的配置文件
3.创建php-fpm的启动脚本
4.引入php等可执行命令
5.php自启动

4.修改配置文件

  • 修改php-fpm配置文件php-fpm.conf
;include=etc/fpm.d/*.conf

;;;;;;;;;;;;;;;;;;
; Global Options ;
;;;;;;;;;;;;;;;;;;
[global]
;prefix 应用根目录在/usr/local/php56
;Pid文件 :默认var/run/php-rpm.pid
pid = run/php-fpm.pid

; 错误日志 :默认在var/log/php-fpm.log
error_log = log/php-fpm.log

; 写入错误日志的级别:alert, error, warning, notice(默认), debug
log_level = error

; 表示在emergency_restart_interval所设值内出现SIGSEGV或者SIGBUS错误的php-cgi进程数
; 如果超过 emergency_restart_threshold个,php-fpm就会优雅重启。这两个默认值都是0
emergency_restart_threshold = 60
;单位可以是s(econd)(默认),m(minutes),h(hours),d(ays)
emergency_restart_interval = 60

; 限制子进程接受主进程复用信号的超时时间(默认是0s)
; 单位: s(econds)(默认单位), m(inutes), h(ours), or d(ays)
process_control_timeout = 0

; 最大进程数
; process.max = 128

; 主进程的优先级,由高到低是-19~20
; process.priority = -19

; 后台执行fpm,默认值为yes,
; 如果为了调试可以改为no。
; 在FPM中,可以使用不同的设置来运行多个进程池。
; 这些设置可以针对每个进程池单独设置。
daemonize = yes
 

;;;;;;;;;;;;;;;;;;;;
; Pool Definitions ; 
;;;;;;;;;;;;;;;;;;;;
[www]

; Per pool prefix
; It only applies on the following directives:
; - 'access.log'
; - 'slowlog'
; - 'listen' (unixsocket)
; - 'chroot'
; - 'chdir'
; - 'php_values'
; - 'php_admin_values'
;prefix = /path/to/pools/$pool

; 启动进程的账户和组
user = nginx
group = nginx

; fpm监听端口,即nginx中php处理的地址,一般默认值即可。
; 常用格式有 'ip:port'、'port'、'/path/to/unix/socket'
listen = 127.0.0.1:9000

; backlog数,-1表示无限制,由操作系统决定,此行注释掉就行。
;listen.backlog = 65535

; unix socket设置选项,如果使用tcp方式访问,这里注释即可。
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
;listen.acl_users =
;listen.acl_groups =
 
;listen.allowed_clients = 127.0.0.1

; process.priority = -19

; 如何控制子进程 对于专用服务器,pm可以设置为static
; Possible Values:
;   static  - a fixed number (pm.max_children) of child processes;
;   dynamic - the number of child processes are set dynamically based on the
;             following directives. With this process management, there will be
;             always at least 1 children.
;             pm.max_children      - 子进程最大数
;             pm.start_servers     - 启动时的进程数
;             pm.min_spare_servers - 保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程
;             pm.max_spare_servers - 保证空闲进程数最大值,如果空闲进程大于此值,此进行清理
;  ondemand - no children are created at startup. Children will be forked when
;             new requests will connect. The following parameter are used:
;             pm.max_children           - the maximum number of children that
;                                         can be alive at the same time.
;             pm.process_idle_timeout   - The number of seconds after which
;                                         an idle process will be killed.
; Note: This value is mandatory.
pm = dynamic

pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

;pm.process_idle_timeout = 10s; 
; 设置每个子进程重生之前服务的请求数. 
; 对于可能存在内存泄漏的第三方模块来说是非常有用的. 
; 如果设置为 '0' 则一直接受请求, 等同于 PHP_FCGI_MAX_REQUESTS 环境变量. 
; 默认值: 0
pm.max_requests = 500


; FPM状态页面的网址. 如果没有设置, 则无法访问状态页面. 默认值: none. munin监控会使用到
pm.status_path = /status


; ;FPM监控页面的ping网址. 
; 如果没有设置, 则无法访问ping页面. 
; 该页面用于外部检测FPM是否存活并且可以响应请求. 
; 请注意必须以斜线开头 (/)。
ping.path = /ping

; 用于定义ping请求的返回响应. 
; 返回为 HTTP 200 的 text/plain 格式文本. 
; 默认值: pong.
;ping.response = pong

; 登录 log
access.log = log/$pool.access.log

; accessLog格式
; Default: "%R - %u %t \"%m %r\" %s"
access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"
 
;慢请求的记录日志
;配合request_slowlog_timeout使用
slowlog = log/$pool.log.slow
 
;当一个请求该设置的超时时间后
;就会将对应的PHP调用堆栈信息完整写入到慢日志中.
;设置为 '0' 表示 'Off'
request_slowlog_timeout = 0
 
; 设置单个请求的超时中止时间. 
; 该选项可能会对php.ini设置中的'max_execution_time'因为某些特殊原因没有中止运行的脚本有用.
; 设置为 '0' 表示 'Off'.
; 当经常出现502错误时可以尝试更改此选项。
request_terminate_timeout = 0
 
; 设置文件打开描述符的rlimit限制. 
; 默认值: 系统定义值默认可打开句柄是1024,
; 可使用 ulimit -n查看,ulimit -n 2048修改。
rlimit_files = 1024
 
; 设置核心rlimit最大限制值. 可用值: 'unlimited' 、0或者正整数. 默认值: 系统定义值.
;rlimit_core = 0
 
; 启动时的Chroot目录. 所定义的目录需要是绝对路径. 如果没有设置, 则chroot不被使用.
;chroot = 
 
; 设置启动目录,启动时会自动Chdir到该目录. 
; 所定义的目录需要是绝对路径. 
; 默认值: 当前目录,或者/目录(chroot时)
;chdir = /var/www
 
; 重定向运行过程中的stdout和stderr到主要的错误日志文件中. 
; 如果没有设置, stdout 和 stderr 将会根据FastCGI的规则被重定向到 /dev/null . 
; 默认值: 空.
;catch_workers_output = yes

;clear_env = no

;security.limit_extensions = .php .php3 .php4 .php5
 
  • 修改php配置文件php.ini
中文翻译在[github:https://github.com/HeDefine/PHP.ini-for-Chinese/tree/master](https://github.com/HeDefine/PHP.ini-for-Chinese/tree/master]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,569评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,499评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,271评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,087评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,474评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,670评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,911评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,636评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,397评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,607评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,093评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,418评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,074评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,092评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,865评论 0 196
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,726评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,627评论 2 270

推荐阅读更多精彩内容