"The student has died. I'm very, very sorry for the family," said Troutdale police chief Scott Anderson.
The Multnomah County sheriff's office said there were reports of shots fired about 8 a.m. at Reynolds High School in Troutdale.
Authorities say they're now focusing on reuniting students with their parents.
Students say they were told over the intercom there was a lockdown and to quietly go to their classrooms.
Students were evacuated from the school, hands on their heads, to be reunited with their parents in a supermarket parking lot.
Freshman Daniel DeLong, 15, said while waiting after the shooting that he saw a physical education teacher at the school with a bloodied shirt.
"I'm a little shaken up," DeLong said. "I'm just worried."
He said he was texting friends to make sure they were all OK.
"It just, like, happened so fast, you know?" he said.
Freshman Morgan Rose, 15, said she was hunkered down in a locker room with another student and two teachers.
"It was scary in the moment now knowing everything's OK I'm better," she said.
Teams were going through the school room by room, KGW-TV reported.
Police set up tape around the area and were not allowing people to pass through. Fire trucks were on the scene.
The shooting follows a spate of recent attacks at or near school campuses.
On June 5, a 19-year-old man was killed and two other people wounded when a gunman opened fire in a building at Seattle Pacific University.
Troutdale is a quiet tourist town of 15,000 near the Columbia River, about 16 miles east of downtown Portland.